qemu/disas/nanomips.h
<<
>>
Prefs
   1/*
   2 *  Header file for nanoMIPS disassembler component of QEMU
   3 *
   4 *  Copyright (C) 2018  Wave Computing, Inc.
   5 *  Copyright (C) 2018  Matthew Fortune <matthew.fortune@mips.com>
   6 *  Copyright (C) 2018  Aleksandar Markovic <amarkovic@wavecomp.com>
   7 *
   8 *  This program is free software: you can redistribute it and/or modify
   9 *  it under the terms of the GNU General Public License as published by
  10 *  the Free Software Foundation, either version 2 of the License, or
  11 *  (at your option) any later version.
  12 *
  13 *  This program is distributed in the hope that it will be useful,
  14 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16 *  GNU General Public License for more details.
  17 *
  18 *  You should have received a copy of the GNU General Public License
  19 *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
  20 *
  21 */
  22
  23#ifndef DISAS_NANOMIPS_H
  24#define DISAS_NANOMIPS_H
  25
  26#include <string>
  27
  28typedef int64_t int64;
  29typedef uint64_t uint64;
  30typedef uint32_t uint32;
  31typedef uint16_t uint16;
  32
  33namespace img
  34{
  35    typedef uint64_t address;
  36}
  37
  38
  39class NMD
  40{
  41public:
  42
  43    enum TABLE_ENTRY_TYPE {
  44        instruction,
  45        call_instruction,
  46        branch_instruction,
  47        return_instruction,
  48        reserved_block,
  49        pool,
  50    };
  51
  52    enum TABLE_ATTRIBUTE_TYPE {
  53        MIPS64_    = 0x00000001,
  54        XNP_       = 0x00000002,
  55        XMMS_      = 0x00000004,
  56        EVA_       = 0x00000008,
  57        DSP_       = 0x00000010,
  58        MT_        = 0x00000020,
  59        EJTAG_     = 0x00000040,
  60        TLBINV_    = 0x00000080,
  61        CP0_       = 0x00000100,
  62        CP1_       = 0x00000200,
  63        CP2_       = 0x00000400,
  64        UDI_       = 0x00000800,
  65        MCU_       = 0x00001000,
  66        VZ_        = 0x00002000,
  67        TLB_       = 0x00004000,
  68        MVH_       = 0x00008000,
  69        ALL_ATTRIBUTES = 0xffffffffull,
  70    };
  71
  72
  73    NMD(img::address pc, TABLE_ATTRIBUTE_TYPE requested_instruction_categories)
  74        : m_pc(pc)
  75        , m_requested_instruction_categories(requested_instruction_categories)
  76    {
  77    }
  78
  79    int Disassemble(const uint16 *data, std::string & dis,
  80                    TABLE_ENTRY_TYPE & type);
  81
  82private:
  83
  84    img::address           m_pc;
  85    TABLE_ATTRIBUTE_TYPE   m_requested_instruction_categories;
  86
  87    typedef std::string(NMD:: *disassembly_function)(uint64 instruction);
  88    typedef bool(NMD:: *conditional_function)(uint64 instruction);
  89
  90    struct Pool {
  91        TABLE_ENTRY_TYPE     type;
  92        struct Pool          *next_table;
  93        int                  next_table_size;
  94        int                  instructions_size;
  95        uint64               mask;
  96        uint64               value;
  97        disassembly_function disassembly;
  98        conditional_function condition;
  99        uint64               attributes;
 100    };
 101
 102    uint64 extract_op_code_value(const uint16 *data, int size);
 103    int Disassemble(const uint16 *data, std::string & dis,
 104                    TABLE_ENTRY_TYPE & type, const Pool *table, int table_size);
 105
 106    uint64 renumber_registers(uint64 index, uint64 *register_list,
 107                              size_t register_list_size);
 108
 109    uint64 decode_gpr_gpr4(uint64 d);
 110    uint64 decode_gpr_gpr4_zero(uint64 d);
 111    uint64 decode_gpr_gpr3(uint64 d);
 112    uint64 decode_gpr_gpr3_src_store(uint64 d);
 113    uint64 decode_gpr_gpr2_reg1(uint64 d);
 114    uint64 decode_gpr_gpr2_reg2(uint64 d);
 115    uint64 decode_gpr_gpr1(uint64 d);
 116
 117    uint64 copy(uint64 d);
 118    int64 copy(int64 d);
 119    int64 neg_copy(uint64 d);
 120    int64 neg_copy(int64 d);
 121    uint64 encode_rs3_and_check_rs3_ge_rt3(uint64 d);
 122    uint64 encode_rs3_and_check_rs3_lt_rt3(uint64 d);
 123    uint64 encode_s_from_address(uint64 d);
 124    uint64 encode_u_from_address(uint64 d);
 125    uint64 encode_s_from_s_hi(uint64 d);
 126    uint64 encode_count3_from_count(uint64 d);
 127    uint64 encode_shift3_from_shift(uint64 d);
 128    int64 encode_eu_from_s_li16(uint64 d);
 129    uint64 encode_msbd_from_size(uint64 d);
 130    uint64 encode_eu_from_u_andi16(uint64 d);
 131
 132    uint64 encode_msbd_from_pos_and_size(uint64 d);
 133
 134    uint64 encode_rt1_from_rt(uint64 d);
 135    uint64 encode_lsb_from_pos_and_size(uint64 d);
 136
 137    std::string save_restore_list(uint64 rt, uint64 count, uint64 gp);
 138
 139    std::string GPR(uint64 reg);
 140    std::string FPR(uint64 reg);
 141    std::string AC(uint64 reg);
 142    std::string IMMEDIATE(uint64 value);
 143    std::string IMMEDIATE(int64 value);
 144    std::string CPR(uint64 reg);
 145    std::string ADDRESS(uint64 value, int instruction_size);
 146
 147    int64 extract_s__se3_4_2_1_0(uint64 instruction);
 148    int64 extract_s__se7_0_6_5_4_3_2_1_s1(uint64 instruction);
 149    int64 extract_s__se8_15_7_6_5_4_3_s3(uint64 instruction);
 150    int64 extract_s__se8_15_7_6_5_4_3_2_s2(uint64 instruction);
 151    int64 extract_s__se8_15_7_6_5_4_3_2_1_0(uint64 instruction);
 152    int64 extract_s__se9_20_19_18_17_16_15_14_13_12_11(uint64 instruction);
 153    int64 extract_s__se10_0_9_8_7_6_5_4_3_2_1_s1(uint64 instruction);
 154    int64 extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(uint64 instruction);
 155    int64 extract_s__se14_0_13_to_1_s1(uint64 instruction);
 156    int64 extract_s__se21_0_20_to_1_s1(uint64 instruction);
 157    int64 extract_s__se25_0_24_to_1_s1(uint64 instruction);
 158    int64 extract_s__se31_15_to_0_31_to_16(uint64 instruction);
 159    int64 extract_s__se31_0_11_to_2_20_to_12_s12(uint64 instruction);
 160    int64 extract_shift__se5_21_20_19_18_17_16(uint64 instruction);
 161
 162    uint64 extract_ac_15_14(uint64 instruction);
 163    uint64 extract_bit_16_15_14_13_12_11(uint64 instruction);
 164    uint64 extract_bit_23_22_21(uint64 instruction);
 165    uint64 extract_c0s_20_19_18_17_16(uint64 instruction);
 166    uint64 extract_code_17_to_0(uint64 instruction);
 167    uint64 extract_code_18_to_0(uint64 instruction);
 168    uint64 extract_code_1_0(uint64 instruction);
 169    uint64 extract_code_2_1_0(uint64 instruction);
 170    uint64 extract_code_25_24_23_22_21_20_19_18_17_16(uint64 instruction);
 171    uint64 extract_cofun_25_24_23(uint64 instruction);
 172    uint64 extract_count3_14_13_12(uint64 instruction);
 173    uint64 extract_count_3_2_1_0(uint64 instruction);
 174    uint64 extract_count_19_18_17_16(uint64 instruction);
 175    uint64 extract_cs_20_19_18_17_16(uint64 instruction);
 176    uint64 extract_cs_25_24_23_22_21(uint64 instruction);
 177    uint64 extract_ct_25_24_23_22_21(uint64 instruction);
 178    uint64 extract_eu_3_2_1_0(uint64 instruction);
 179    uint64 extract_eu_6_5_4_3_2_1_0(uint64 instruction);
 180    uint64 extract_fd_15_14_13_12_11(uint64 instruction);
 181    uint64 extract_fs_20_19_18_17_16(uint64 instruction);
 182    uint64 extract_ft_15_14_13_12_11(uint64 instruction);
 183    uint64 extract_ft_25_24_23_22_21(uint64 instruction);
 184    uint64 extract_gp_2(uint64 instruction);
 185    uint64 extract_hint_25_24_23_22_21(uint64 instruction);
 186    uint64 extract_hs_20_19_18_17_16(uint64 instruction);
 187    uint64 extract_lsb_4_3_2_1_0(uint64 instruction);
 188    uint64 extract_mask_20_19_18_17_16_15_14(uint64 instruction);
 189    uint64 extract_msbt_10_9_8_7_6(uint64 instruction);
 190    uint64 extract_op_25_24_23_22_21(uint64 instruction);
 191    uint64 extract_op_25_to_3(uint64 instruction);
 192    uint64 extract_rdl_25_24(uint64 instruction);
 193    uint64 extract_rd2_3_8(uint64 instruction);
 194    uint64 extract_rd3_3_2_1(uint64 instruction);
 195    uint64 extract_rd_15_14_13_12_11(uint64 instruction);
 196    uint64 extract_rs3_6_5_4(uint64 instruction);
 197    uint64 extract_rs4_4_2_1_0(uint64 instruction);
 198    uint64 extract_rs_4_3_2_1_0(uint64 instruction);
 199    uint64 extract_rs_20_19_18_17_16(uint64 instruction);
 200    uint64 extract_rsz4_4_2_1_0(uint64 instruction);
 201    uint64 extract_rtl_11(uint64 instruction);
 202    uint64 extract_rt3_9_8_7(uint64 instruction);
 203    uint64 extract_rt4_9_7_6_5(uint64 instruction);
 204    uint64 extract_rt_25_24_23_22_21(uint64 instruction);
 205    uint64 extract_rt_41_40_39_38_37(uint64 instruction);
 206    uint64 extract_rt_9_8_7_6_5(uint64 instruction);
 207    uint64 extract_rtz3_9_8_7(uint64 instruction);
 208    uint64 extract_rtz4_27_26_25_23_22_21(uint64 instruction);
 209    uint64 extract_rtz4_9_7_6_5(uint64 instruction);
 210    uint64 extract_ru_7_6_5_4_3(uint64 instruction);
 211    uint64 extract_sa_15_14_13_12_11(uint64 instruction);
 212    uint64 extract_sa_15_14_13_12(uint64 instruction);
 213    uint64 extract_sa_15_14_13(uint64 instruction);
 214    uint64 extract_sel_13_12_11(uint64 instruction);
 215    uint64 extract_sel_15_14_13_12_11(uint64 instruction);
 216    uint64 extract_shift3_2_1_0(uint64 instruction);
 217    uint64 extract_shift_4_3_2_1_0(uint64 instruction);
 218    uint64 extract_shift_5_4_3_2_1_0(uint64 instruction);
 219    uint64 extract_shift_20_19_18_17_16(uint64 instruction);
 220    uint64 extract_shift_10_9_8_7_6(uint64 instruction);
 221    uint64 extract_shiftx_11_10_9_8_7_6(uint64 instruction);
 222    uint64 extract_shiftx_10_9_8_7__s1(uint64 instruction);
 223    uint64 extract_size_20_19_18_17_16(uint64 instruction);
 224    uint64 extract_stripe_6(uint64 instruction);
 225    uint64 extract_stype_20_19_18_17_16(uint64 instruction);
 226    uint64 extract_u2_10_9(uint64 instruction);
 227    uint64 extract_u_11_10_9_8_7_6_5_4_3_2_1_0(uint64 instruction);
 228    uint64 extract_u_15_to_0(uint64 instruction);
 229    uint64 extract_u_17_to_0(uint64 instruction);
 230    uint64 extract_u_1_0(uint64 instruction);
 231    uint64 extract_u_3_2_1_0__s1(uint64 instruction);
 232    uint64 extract_u_2_1_0__s2(uint64 instruction);
 233    uint64 extract_u_3_2_1_0__s2(uint64 instruction);
 234    uint64 extract_u_4_3_2_1_0__s2(uint64 instruction);
 235    uint64 extract_u_5_4_3_2_1_0__s2(uint64 instruction);
 236    uint64 extract_u_6_5_4_3_2_1_0__s2(uint64 instruction);
 237    uint64 extract_u_31_to_0__s32(uint64 instruction);
 238    uint64 extract_u_10(uint64 instruction);
 239    uint64 extract_u_17_16_15_14_13_12_11(uint64 instruction);
 240    uint64 extract_u_20_19_18_17_16_15_14_13(uint64 instruction);
 241    uint64 extract_u_17_to_1__s1(uint64 instruction);
 242    uint64 extract_u_2_1__s1(uint64 instruction);
 243    uint64 extract_u_17_to_2__s2(uint64 instruction);
 244    uint64 extract_u_20_to_2__s2(uint64 instruction);
 245    uint64 extract_u_20_to_3__s3(uint64 instruction);
 246    uint64 extract_u_3_8__s2(uint64 instruction);
 247    uint64 extract_u_11_10_9_8_7_6_5_4_3__s3(uint64 instruction);
 248    uint64 extract_u_7_6_5_4__s4(uint64 instruction);
 249
 250    bool ADDIU_32__cond(uint64 instruction);
 251    bool ADDIU_RS5__cond(uint64 instruction);
 252    bool BALRSC_cond(uint64 instruction);
 253    bool BEQC_16__cond(uint64 instruction);
 254    bool BNEC_16__cond(uint64 instruction);
 255    bool MOVE_cond(uint64 instruction);
 256    bool P16_BR1_cond(uint64 instruction);
 257    bool PREF_S9__cond(uint64 instruction);
 258    bool PREFE_cond(uint64 instruction);
 259    bool SLTU_cond(uint64 instruction);
 260
 261    std::string ABS_D(uint64 instruction);
 262    std::string ABS_S(uint64 instruction);
 263    std::string ABSQ_S_PH(uint64 instruction);
 264    std::string ABSQ_S_QB(uint64 instruction);
 265    std::string ABSQ_S_W(uint64 instruction);
 266    std::string ACLR(uint64 instruction);
 267    std::string ADD(uint64 instruction);
 268    std::string ADD_D(uint64 instruction);
 269    std::string ADD_S(uint64 instruction);
 270    std::string ADDIU_32_(uint64 instruction);
 271    std::string ADDIU_48_(uint64 instruction);
 272    std::string ADDIU_GP48_(uint64 instruction);
 273    std::string ADDIU_GP_B_(uint64 instruction);
 274    std::string ADDIU_GP_W_(uint64 instruction);
 275    std::string ADDIU_NEG_(uint64 instruction);
 276    std::string ADDIU_R1_SP_(uint64 instruction);
 277    std::string ADDIU_R2_(uint64 instruction);
 278    std::string ADDIU_RS5_(uint64 instruction);
 279    std::string ADDIUPC_32_(uint64 instruction);
 280    std::string ADDIUPC_48_(uint64 instruction);
 281    std::string ADDQ_PH(uint64 instruction);
 282    std::string ADDQ_S_PH(uint64 instruction);
 283    std::string ADDQ_S_W(uint64 instruction);
 284    std::string ADDQH_PH(uint64 instruction);
 285    std::string ADDQH_R_PH(uint64 instruction);
 286    std::string ADDQH_R_W(uint64 instruction);
 287    std::string ADDQH_W(uint64 instruction);
 288    std::string ADDSC(uint64 instruction);
 289    std::string ADDU_16_(uint64 instruction);
 290    std::string ADDU_32_(uint64 instruction);
 291    std::string ADDU_4X4_(uint64 instruction);
 292    std::string ADDU_PH(uint64 instruction);
 293    std::string ADDU_QB(uint64 instruction);
 294    std::string ADDU_S_PH(uint64 instruction);
 295    std::string ADDU_S_QB(uint64 instruction);
 296    std::string ADDUH_QB(uint64 instruction);
 297    std::string ADDUH_R_QB(uint64 instruction);
 298    std::string ADDWC(uint64 instruction);
 299    std::string ALUIPC(uint64 instruction);
 300    std::string AND_16_(uint64 instruction);
 301    std::string AND_32_(uint64 instruction);
 302    std::string ANDI_16_(uint64 instruction);
 303    std::string ANDI_32_(uint64 instruction);
 304    std::string APPEND(uint64 instruction);
 305    std::string ASET(uint64 instruction);
 306    std::string BALC_16_(uint64 instruction);
 307    std::string BALC_32_(uint64 instruction);
 308    std::string BALRSC(uint64 instruction);
 309    std::string BBEQZC(uint64 instruction);
 310    std::string BBNEZC(uint64 instruction);
 311    std::string BC_16_(uint64 instruction);
 312    std::string BC_32_(uint64 instruction);
 313    std::string BC1EQZC(uint64 instruction);
 314    std::string BC1NEZC(uint64 instruction);
 315    std::string BC2EQZC(uint64 instruction);
 316    std::string BC2NEZC(uint64 instruction);
 317    std::string BEQC_16_(uint64 instruction);
 318    std::string BEQC_32_(uint64 instruction);
 319    std::string BEQIC(uint64 instruction);
 320    std::string BEQZC_16_(uint64 instruction);
 321    std::string BGEC(uint64 instruction);
 322    std::string BGEIC(uint64 instruction);
 323    std::string BGEIUC(uint64 instruction);
 324    std::string BGEUC(uint64 instruction);
 325    std::string BLTC(uint64 instruction);
 326    std::string BLTIC(uint64 instruction);
 327    std::string BLTIUC(uint64 instruction);
 328    std::string BLTUC(uint64 instruction);
 329    std::string BNEC_16_(uint64 instruction);
 330    std::string BNEC_32_(uint64 instruction);
 331    std::string BNEIC(uint64 instruction);
 332    std::string BNEZC_16_(uint64 instruction);
 333    std::string BPOSGE32C(uint64 instruction);
 334    std::string BREAK_16_(uint64 instruction);
 335    std::string BREAK_32_(uint64 instruction);
 336    std::string BRSC(uint64 instruction);
 337    std::string CACHE(uint64 instruction);
 338    std::string CACHEE(uint64 instruction);
 339    std::string CEIL_L_D(uint64 instruction);
 340    std::string CEIL_L_S(uint64 instruction);
 341    std::string CEIL_W_D(uint64 instruction);
 342    std::string CEIL_W_S(uint64 instruction);
 343    std::string CFC1(uint64 instruction);
 344    std::string CFC2(uint64 instruction);
 345    std::string CLASS_D(uint64 instruction);
 346    std::string CLASS_S(uint64 instruction);
 347    std::string CLO(uint64 instruction);
 348    std::string CLZ(uint64 instruction);
 349    std::string CMP_AF_D(uint64 instruction);
 350    std::string CMP_AF_S(uint64 instruction);
 351    std::string CMP_EQ_D(uint64 instruction);
 352    std::string CMP_EQ_PH(uint64 instruction);
 353    std::string CMP_EQ_S(uint64 instruction);
 354    std::string CMP_LE_D(uint64 instruction);
 355    std::string CMP_LE_PH(uint64 instruction);
 356    std::string CMP_LE_S(uint64 instruction);
 357    std::string CMP_LT_D(uint64 instruction);
 358    std::string CMP_LT_PH(uint64 instruction);
 359    std::string CMP_LT_S(uint64 instruction);
 360    std::string CMP_NE_D(uint64 instruction);
 361    std::string CMP_NE_S(uint64 instruction);
 362    std::string CMP_OR_D(uint64 instruction);
 363    std::string CMP_OR_S(uint64 instruction);
 364    std::string CMP_SAF_D(uint64 instruction);
 365    std::string CMP_SAF_S(uint64 instruction);
 366    std::string CMP_SEQ_D(uint64 instruction);
 367    std::string CMP_SEQ_S(uint64 instruction);
 368    std::string CMP_SLE_D(uint64 instruction);
 369    std::string CMP_SLE_S(uint64 instruction);
 370    std::string CMP_SLT_D(uint64 instruction);
 371    std::string CMP_SLT_S(uint64 instruction);
 372    std::string CMP_SNE_D(uint64 instruction);
 373    std::string CMP_SNE_S(uint64 instruction);
 374    std::string CMP_SOR_D(uint64 instruction);
 375    std::string CMP_SOR_S(uint64 instruction);
 376    std::string CMP_SUEQ_D(uint64 instruction);
 377    std::string CMP_SUEQ_S(uint64 instruction);
 378    std::string CMP_SULE_D(uint64 instruction);
 379    std::string CMP_SULE_S(uint64 instruction);
 380    std::string CMP_SULT_D(uint64 instruction);
 381    std::string CMP_SULT_S(uint64 instruction);
 382    std::string CMP_SUN_D(uint64 instruction);
 383    std::string CMP_SUN_S(uint64 instruction);
 384    std::string CMP_SUNE_D(uint64 instruction);
 385    std::string CMP_SUNE_S(uint64 instruction);
 386    std::string CMP_UEQ_D(uint64 instruction);
 387    std::string CMP_UEQ_S(uint64 instruction);
 388    std::string CMP_ULE_D(uint64 instruction);
 389    std::string CMP_ULE_S(uint64 instruction);
 390    std::string CMP_ULT_D(uint64 instruction);
 391    std::string CMP_ULT_S(uint64 instruction);
 392    std::string CMP_UN_D(uint64 instruction);
 393    std::string CMP_UN_S(uint64 instruction);
 394    std::string CMP_UNE_D(uint64 instruction);
 395    std::string CMP_UNE_S(uint64 instruction);
 396    std::string CMPGDU_EQ_QB(uint64 instruction);
 397    std::string CMPGDU_LE_QB(uint64 instruction);
 398    std::string CMPGDU_LT_QB(uint64 instruction);
 399    std::string CMPGU_EQ_QB(uint64 instruction);
 400    std::string CMPGU_LE_QB(uint64 instruction);
 401    std::string CMPGU_LT_QB(uint64 instruction);
 402    std::string CMPU_EQ_QB(uint64 instruction);
 403    std::string CMPU_LE_QB(uint64 instruction);
 404    std::string CMPU_LT_QB(uint64 instruction);
 405    std::string COP2_1(uint64 instruction);
 406    std::string CTC1(uint64 instruction);
 407    std::string CTC2(uint64 instruction);
 408    std::string CVT_D_L(uint64 instruction);
 409    std::string CVT_D_S(uint64 instruction);
 410    std::string CVT_D_W(uint64 instruction);
 411    std::string CVT_L_D(uint64 instruction);
 412    std::string CVT_L_S(uint64 instruction);
 413    std::string CVT_S_D(uint64 instruction);
 414    std::string CVT_S_L(uint64 instruction);
 415    std::string CVT_S_PL(uint64 instruction);
 416    std::string CVT_S_PU(uint64 instruction);
 417    std::string CVT_S_W(uint64 instruction);
 418    std::string CVT_W_D(uint64 instruction);
 419    std::string CVT_W_S(uint64 instruction);
 420    std::string DADDIU_48_(uint64 instruction);
 421    std::string DADDIU_NEG_(uint64 instruction);
 422    std::string DADDIU_U12_(uint64 instruction);
 423    std::string DADD(uint64 instruction);
 424    std::string DADDU(uint64 instruction);
 425    std::string DCLO(uint64 instruction);
 426    std::string DCLZ(uint64 instruction);
 427    std::string DDIV(uint64 instruction);
 428    std::string DDIVU(uint64 instruction);
 429    std::string DERET(uint64 instruction);
 430    std::string DEXTM(uint64 instruction);
 431    std::string DEXT(uint64 instruction);
 432    std::string DEXTU(uint64 instruction);
 433    std::string DINSM(uint64 instruction);
 434    std::string DINS(uint64 instruction);
 435    std::string DINSU(uint64 instruction);
 436    std::string DI(uint64 instruction);
 437    std::string DIV(uint64 instruction);
 438    std::string DIV_D(uint64 instruction);
 439    std::string DIV_S(uint64 instruction);
 440    std::string DIVU(uint64 instruction);
 441    std::string DLSA(uint64 instruction);
 442    std::string DLUI_48_(uint64 instruction);
 443    std::string DMFC0(uint64 instruction);
 444    std::string DMFC1(uint64 instruction);
 445    std::string DMFC2(uint64 instruction);
 446    std::string DMFGC0(uint64 instruction);
 447    std::string DMOD(uint64 instruction);
 448    std::string DMODU(uint64 instruction);
 449    std::string DMTC0(uint64 instruction);
 450    std::string DMTC1(uint64 instruction);
 451    std::string DMTC2(uint64 instruction);
 452    std::string DMTGC0(uint64 instruction);
 453    std::string DMT(uint64 instruction);
 454    std::string DMUH(uint64 instruction);
 455    std::string DMUHU(uint64 instruction);
 456    std::string DMUL(uint64 instruction);
 457    std::string DMULU(uint64 instruction);
 458    std::string DPAQ_S_W_PH(uint64 instruction);
 459    std::string DPAQ_SA_L_W(uint64 instruction);
 460    std::string DPAQX_S_W_PH(uint64 instruction);
 461    std::string DPAQX_SA_W_PH(uint64 instruction);
 462    std::string DPAU_H_QBL(uint64 instruction);
 463    std::string DPAU_H_QBR(uint64 instruction);
 464    std::string DPA_W_PH(uint64 instruction);
 465    std::string DPAX_W_PH(uint64 instruction);
 466    std::string DPS_W_PH(uint64 instruction);
 467    std::string DPSQ_SA_L_W(uint64 instruction);
 468    std::string DPSQ_S_W_PH(uint64 instruction);
 469    std::string DPSQX_SA_W_PH(uint64 instruction);
 470    std::string DPSQX_S_W_PH(uint64 instruction);
 471    std::string DPSU_H_QBL(uint64 instruction);
 472    std::string DPSU_H_QBR(uint64 instruction);
 473    std::string DPSX_W_PH(uint64 instruction);
 474    std::string DROTR(uint64 instruction);
 475    std::string DROTR32(uint64 instruction);
 476    std::string DROTRV(uint64 instruction);
 477    std::string DROTX(uint64 instruction);
 478    std::string DSLL(uint64 instruction);
 479    std::string DSLL32(uint64 instruction);
 480    std::string DSLLV(uint64 instruction);
 481    std::string DSRA(uint64 instruction);
 482    std::string DSRA32(uint64 instruction);
 483    std::string DSRAV(uint64 instruction);
 484    std::string DSRL32(uint64 instruction);
 485    std::string DSRL(uint64 instruction);
 486    std::string DSRLV(uint64 instruction);
 487    std::string DSUB(uint64 instruction);
 488    std::string DSUBU(uint64 instruction);
 489    std::string DVP(uint64 instruction);
 490    std::string DVPE(uint64 instruction);
 491    std::string EHB(uint64 instruction);
 492    std::string EI(uint64 instruction);
 493    std::string EMT(uint64 instruction);
 494    std::string ERET(uint64 instruction);
 495    std::string ERETNC(uint64 instruction);
 496    std::string EVP(uint64 instruction);
 497    std::string EVPE(uint64 instruction);
 498    std::string EXT(uint64 instruction);
 499    std::string EXTD(uint64 instruction);
 500    std::string EXTD32(uint64 instruction);
 501    std::string EXTP(uint64 instruction);
 502    std::string EXTPDP(uint64 instruction);
 503    std::string EXTPDPV(uint64 instruction);
 504    std::string EXTPV(uint64 instruction);
 505    std::string EXTR_RS_W(uint64 instruction);
 506    std::string EXTR_R_W(uint64 instruction);
 507    std::string EXTR_S_H(uint64 instruction);
 508    std::string EXTR_W(uint64 instruction);
 509    std::string EXTRV_R_W(uint64 instruction);
 510    std::string EXTRV_RS_W(uint64 instruction);
 511    std::string EXTRV_S_H(uint64 instruction);
 512    std::string EXTRV_W(uint64 instruction);
 513    std::string EXTW(uint64 instruction);
 514    std::string FLOOR_L_D(uint64 instruction);
 515    std::string FLOOR_L_S(uint64 instruction);
 516    std::string FLOOR_W_D(uint64 instruction);
 517    std::string FLOOR_W_S(uint64 instruction);
 518    std::string FORK(uint64 instruction);
 519    std::string HYPCALL(uint64 instruction);
 520    std::string HYPCALL_16_(uint64 instruction);
 521    std::string INS(uint64 instruction);
 522    std::string INSV(uint64 instruction);
 523    std::string IRET(uint64 instruction);
 524    std::string JALRC_16_(uint64 instruction);
 525    std::string JALRC_32_(uint64 instruction);
 526    std::string JALRC_HB(uint64 instruction);
 527    std::string JRC(uint64 instruction);
 528    std::string LB_16_(uint64 instruction);
 529    std::string LB_GP_(uint64 instruction);
 530    std::string LB_S9_(uint64 instruction);
 531    std::string LB_U12_(uint64 instruction);
 532    std::string LBE(uint64 instruction);
 533    std::string LBU_16_(uint64 instruction);
 534    std::string LBU_GP_(uint64 instruction);
 535    std::string LBU_S9_(uint64 instruction);
 536    std::string LBU_U12_(uint64 instruction);
 537    std::string LBUE(uint64 instruction);
 538    std::string LBUX(uint64 instruction);
 539    std::string LBX(uint64 instruction);
 540    std::string LD_GP_(uint64 instruction);
 541    std::string LD_S9_(uint64 instruction);
 542    std::string LD_U12_(uint64 instruction);
 543    std::string LDC1_GP_(uint64 instruction);
 544    std::string LDC1_S9_(uint64 instruction);
 545    std::string LDC1_U12_(uint64 instruction);
 546    std::string LDC1X(uint64 instruction);
 547    std::string LDC1XS(uint64 instruction);
 548    std::string LDC2(uint64 instruction);
 549    std::string LDM(uint64 instruction);
 550    std::string LDPC_48_(uint64 instruction);
 551    std::string LDX(uint64 instruction);
 552    std::string LDXS(uint64 instruction);
 553    std::string LH_16_(uint64 instruction);
 554    std::string LH_GP_(uint64 instruction);
 555    std::string LH_S9_(uint64 instruction);
 556    std::string LH_U12_(uint64 instruction);
 557    std::string LHE(uint64 instruction);
 558    std::string LHU_16_(uint64 instruction);
 559    std::string LHU_GP_(uint64 instruction);
 560    std::string LHU_S9_(uint64 instruction);
 561    std::string LHU_U12_(uint64 instruction);
 562    std::string LHUE(uint64 instruction);
 563    std::string LHUX(uint64 instruction);
 564    std::string LHUXS(uint64 instruction);
 565    std::string LHX(uint64 instruction);
 566    std::string LHXS(uint64 instruction);
 567    std::string LI_16_(uint64 instruction);
 568    std::string LI_48_(uint64 instruction);
 569    std::string LL(uint64 instruction);
 570    std::string LLD(uint64 instruction);
 571    std::string LLDP(uint64 instruction);
 572    std::string LLE(uint64 instruction);
 573    std::string LLWP(uint64 instruction);
 574    std::string LLWPE(uint64 instruction);
 575    std::string LSA(uint64 instruction);
 576    std::string LUI(uint64 instruction);
 577    std::string LW_16_(uint64 instruction);
 578    std::string LW_4X4_(uint64 instruction);
 579    std::string LWC1_GP_(uint64 instruction);
 580    std::string LWC1_S9_(uint64 instruction);
 581    std::string LWC1_U12_(uint64 instruction);
 582    std::string LWC1X(uint64 instruction);
 583    std::string LWC1XS(uint64 instruction);
 584    std::string LWC2(uint64 instruction);
 585    std::string LWE(uint64 instruction);
 586    std::string LW_GP_(uint64 instruction);
 587    std::string LW_GP16_(uint64 instruction);
 588    std::string LWM(uint64 instruction);
 589    std::string LWPC_48_(uint64 instruction);
 590    std::string LW_S9_(uint64 instruction);
 591    std::string LW_SP_(uint64 instruction);
 592    std::string LW_U12_(uint64 instruction);
 593    std::string LWU_GP_(uint64 instruction);
 594    std::string LWU_S9_(uint64 instruction);
 595    std::string LWU_U12_(uint64 instruction);
 596    std::string LWUX(uint64 instruction);
 597    std::string LWUXS(uint64 instruction);
 598    std::string LWX(uint64 instruction);
 599    std::string LWXS_16_(uint64 instruction);
 600    std::string LWXS_32_(uint64 instruction);
 601    std::string MADD_DSP_(uint64 instruction);
 602    std::string MADDF_D(uint64 instruction);
 603    std::string MADDF_S(uint64 instruction);
 604    std::string MADDU_DSP_(uint64 instruction);
 605    std::string MAQ_S_W_PHL(uint64 instruction);
 606    std::string MAQ_S_W_PHR(uint64 instruction);
 607    std::string MAQ_SA_W_PHL(uint64 instruction);
 608    std::string MAQ_SA_W_PHR(uint64 instruction);
 609    std::string MAX_D(uint64 instruction);
 610    std::string MAX_S(uint64 instruction);
 611    std::string MAXA_D(uint64 instruction);
 612    std::string MAXA_S(uint64 instruction);
 613    std::string MFC0(uint64 instruction);
 614    std::string MFC1(uint64 instruction);
 615    std::string MFC2(uint64 instruction);
 616    std::string MFGC0(uint64 instruction);
 617    std::string MFHC0(uint64 instruction);
 618    std::string MFHC1(uint64 instruction);
 619    std::string MFHC2(uint64 instruction);
 620    std::string MFHGC0(uint64 instruction);
 621    std::string MFHI_DSP_(uint64 instruction);
 622    std::string MFHTR(uint64 instruction);
 623    std::string MFLO_DSP_(uint64 instruction);
 624    std::string MFTR(uint64 instruction);
 625    std::string MIN_D(uint64 instruction);
 626    std::string MIN_S(uint64 instruction);
 627    std::string MINA_D(uint64 instruction);
 628    std::string MINA_S(uint64 instruction);
 629    std::string MOD(uint64 instruction);
 630    std::string MODSUB(uint64 instruction);
 631    std::string MODU(uint64 instruction);
 632    std::string MOV_D(uint64 instruction);
 633    std::string MOV_S(uint64 instruction);
 634    std::string MOVE_BALC(uint64 instruction);
 635    std::string MOVEP(uint64 instruction);
 636    std::string MOVEP_REV_(uint64 instruction);
 637    std::string MOVE(uint64 instruction);
 638    std::string MOVN(uint64 instruction);
 639    std::string MOVZ(uint64 instruction);
 640    std::string MSUB_DSP_(uint64 instruction);
 641    std::string MSUBF_D(uint64 instruction);
 642    std::string MSUBF_S(uint64 instruction);
 643    std::string MSUBU_DSP_(uint64 instruction);
 644    std::string MTC0(uint64 instruction);
 645    std::string MTC1(uint64 instruction);
 646    std::string MTC2(uint64 instruction);
 647    std::string MTGC0(uint64 instruction);
 648    std::string MTHC0(uint64 instruction);
 649    std::string MTHC1(uint64 instruction);
 650    std::string MTHC2(uint64 instruction);
 651    std::string MTHGC0(uint64 instruction);
 652    std::string MTHI_DSP_(uint64 instruction);
 653    std::string MTHLIP(uint64 instruction);
 654    std::string MTHTR(uint64 instruction);
 655    std::string MTLO_DSP_(uint64 instruction);
 656    std::string MTTR(uint64 instruction);
 657    std::string MUH(uint64 instruction);
 658    std::string MUHU(uint64 instruction);
 659    std::string MUL_32_(uint64 instruction);
 660    std::string MUL_4X4_(uint64 instruction);
 661    std::string MUL_D(uint64 instruction);
 662    std::string MUL_PH(uint64 instruction);
 663    std::string MUL_S(uint64 instruction);
 664    std::string MUL_S_PH(uint64 instruction);
 665    std::string MULEQ_S_W_PHL(uint64 instruction);
 666    std::string MULEQ_S_W_PHR(uint64 instruction);
 667    std::string MULEU_S_PH_QBL(uint64 instruction);
 668    std::string MULEU_S_PH_QBR(uint64 instruction);
 669    std::string MULQ_RS_PH(uint64 instruction);
 670    std::string MULQ_RS_W(uint64 instruction);
 671    std::string MULQ_S_PH(uint64 instruction);
 672    std::string MULQ_S_W(uint64 instruction);
 673    std::string MULSA_W_PH(uint64 instruction);
 674    std::string MULSAQ_S_W_PH(uint64 instruction);
 675    std::string MULT_DSP_(uint64 instruction);
 676    std::string MULTU_DSP_(uint64 instruction);
 677    std::string MULU(uint64 instruction);
 678    std::string NEG_D(uint64 instruction);
 679    std::string NEG_S(uint64 instruction);
 680    std::string NOP_16_(uint64 instruction);
 681    std::string NOP_32_(uint64 instruction);
 682    std::string NOR(uint64 instruction);
 683    std::string NOT_16_(uint64 instruction);
 684    std::string OR_16_(uint64 instruction);
 685    std::string OR_32_(uint64 instruction);
 686    std::string ORI(uint64 instruction);
 687    std::string PACKRL_PH(uint64 instruction);
 688    std::string PAUSE(uint64 instruction);
 689    std::string PICK_PH(uint64 instruction);
 690    std::string PICK_QB(uint64 instruction);
 691    std::string PRECEQ_W_PHL(uint64 instruction);
 692    std::string PRECEQ_W_PHR(uint64 instruction);
 693    std::string PRECEQU_PH_QBL(uint64 instruction);
 694    std::string PRECEQU_PH_QBLA(uint64 instruction);
 695    std::string PRECEQU_PH_QBR(uint64 instruction);
 696    std::string PRECEQU_PH_QBRA(uint64 instruction);
 697    std::string PRECEU_PH_QBL(uint64 instruction);
 698    std::string PRECEU_PH_QBLA(uint64 instruction);
 699    std::string PRECEU_PH_QBR(uint64 instruction);
 700    std::string PRECEU_PH_QBRA(uint64 instruction);
 701    std::string PRECR_QB_PH(uint64 instruction);
 702    std::string PRECR_SRA_PH_W(uint64 instruction);
 703    std::string PRECR_SRA_R_PH_W(uint64 instruction);
 704    std::string PRECRQ_PH_W(uint64 instruction);
 705    std::string PRECRQ_QB_PH(uint64 instruction);
 706    std::string PRECRQ_RS_PH_W(uint64 instruction);
 707    std::string PRECRQU_S_QB_PH(uint64 instruction);
 708    std::string PREF_S9_(uint64 instruction);
 709    std::string PREF_U12_(uint64 instruction);
 710    std::string PREFE(uint64 instruction);
 711    std::string PREPEND(uint64 instruction);
 712    std::string RADDU_W_QB(uint64 instruction);
 713    std::string RDDSP(uint64 instruction);
 714    std::string RDHWR(uint64 instruction);
 715    std::string RDPGPR(uint64 instruction);
 716    std::string RECIP_D(uint64 instruction);
 717    std::string RECIP_S(uint64 instruction);
 718    std::string REPL_PH(uint64 instruction);
 719    std::string REPL_QB(uint64 instruction);
 720    std::string REPLV_PH(uint64 instruction);
 721    std::string REPLV_QB(uint64 instruction);
 722    std::string RESTORE_32_(uint64 instruction);
 723    std::string RESTORE_JRC_16_(uint64 instruction);
 724    std::string RESTORE_JRC_32_(uint64 instruction);
 725    std::string RESTOREF(uint64 instruction);
 726    std::string RINT_D(uint64 instruction);
 727    std::string RINT_S(uint64 instruction);
 728    std::string ROTR(uint64 instruction);
 729    std::string ROTRV(uint64 instruction);
 730    std::string ROTX(uint64 instruction);
 731    std::string ROUND_L_D(uint64 instruction);
 732    std::string ROUND_L_S(uint64 instruction);
 733    std::string ROUND_W_D(uint64 instruction);
 734    std::string ROUND_W_S(uint64 instruction);
 735    std::string RSQRT_D(uint64 instruction);
 736    std::string RSQRT_S(uint64 instruction);
 737    std::string SAVE_16_(uint64 instruction);
 738    std::string SAVE_32_(uint64 instruction);
 739    std::string SAVEF(uint64 instruction);
 740    std::string SB_16_(uint64 instruction);
 741    std::string SB_GP_(uint64 instruction);
 742    std::string SB_S9_(uint64 instruction);
 743    std::string SB_U12_(uint64 instruction);
 744    std::string SBE(uint64 instruction);
 745    std::string SBX(uint64 instruction);
 746    std::string SC(uint64 instruction);
 747    std::string SCD(uint64 instruction);
 748    std::string SCDP(uint64 instruction);
 749    std::string SCE(uint64 instruction);
 750    std::string SCWP(uint64 instruction);
 751    std::string SCWPE(uint64 instruction);
 752    std::string SD_GP_(uint64 instruction);
 753    std::string SD_S9_(uint64 instruction);
 754    std::string SD_U12_(uint64 instruction);
 755    std::string SDBBP_16_(uint64 instruction);
 756    std::string SDBBP_32_(uint64 instruction);
 757    std::string SDC1_GP_(uint64 instruction);
 758    std::string SDC1_S9_(uint64 instruction);
 759    std::string SDC1_U12_(uint64 instruction);
 760    std::string SDC1X(uint64 instruction);
 761    std::string SDC1XS(uint64 instruction);
 762    std::string SDC2(uint64 instruction);
 763    std::string SDM(uint64 instruction);
 764    std::string SDPC_48_(uint64 instruction);
 765    std::string SDX(uint64 instruction);
 766    std::string SDXS(uint64 instruction);
 767    std::string SEB(uint64 instruction);
 768    std::string SEH(uint64 instruction);
 769    std::string SEL_D(uint64 instruction);
 770    std::string SEL_S(uint64 instruction);
 771    std::string SELEQZ_D(uint64 instruction);
 772    std::string SELEQZ_S(uint64 instruction);
 773    std::string SELNEZ_D(uint64 instruction);
 774    std::string SELNEZ_S(uint64 instruction);
 775    std::string SEQI(uint64 instruction);
 776    std::string SH_16_(uint64 instruction);
 777    std::string SH_GP_(uint64 instruction);
 778    std::string SH_S9_(uint64 instruction);
 779    std::string SH_U12_(uint64 instruction);
 780    std::string SHE(uint64 instruction);
 781    std::string SHILO(uint64 instruction);
 782    std::string SHILOV(uint64 instruction);
 783    std::string SHLL_PH(uint64 instruction);
 784    std::string SHLL_QB(uint64 instruction);
 785    std::string SHLL_S_PH(uint64 instruction);
 786    std::string SHLL_S_W(uint64 instruction);
 787    std::string SHLLV_PH(uint64 instruction);
 788    std::string SHLLV_QB(uint64 instruction);
 789    std::string SHLLV_S_PH(uint64 instruction);
 790    std::string SHLLV_S_W(uint64 instruction);
 791    std::string SHRA_PH(uint64 instruction);
 792    std::string SHRA_QB(uint64 instruction);
 793    std::string SHRA_R_PH(uint64 instruction);
 794    std::string SHRA_R_QB(uint64 instruction);
 795    std::string SHRA_R_W(uint64 instruction);
 796    std::string SHRAV_PH(uint64 instruction);
 797    std::string SHRAV_QB(uint64 instruction);
 798    std::string SHRAV_R_PH(uint64 instruction);
 799    std::string SHRAV_R_QB(uint64 instruction);
 800    std::string SHRAV_R_W(uint64 instruction);
 801    std::string SHRL_PH(uint64 instruction);
 802    std::string SHRL_QB(uint64 instruction);
 803    std::string SHRLV_PH(uint64 instruction);
 804    std::string SHRLV_QB(uint64 instruction);
 805    std::string SHX(uint64 instruction);
 806    std::string SHXS(uint64 instruction);
 807    std::string SIGRIE(uint64 instruction);
 808    std::string SLL_16_(uint64 instruction);
 809    std::string SLL_32_(uint64 instruction);
 810    std::string SLLV(uint64 instruction);
 811    std::string SLT(uint64 instruction);
 812    std::string SLTI(uint64 instruction);
 813    std::string SLTIU(uint64 instruction);
 814    std::string SLTU(uint64 instruction);
 815    std::string SOV(uint64 instruction);
 816    std::string SPECIAL2(uint64 instruction);
 817    std::string SQRT_D(uint64 instruction);
 818    std::string SQRT_S(uint64 instruction);
 819    std::string SRA(uint64 instruction);
 820    std::string SRAV(uint64 instruction);
 821    std::string SRL_16_(uint64 instruction);
 822    std::string SRL_32_(uint64 instruction);
 823    std::string SRLV(uint64 instruction);
 824    std::string SUB(uint64 instruction);
 825    std::string SUB_D(uint64 instruction);
 826    std::string SUB_S(uint64 instruction);
 827    std::string SUBQ_PH(uint64 instruction);
 828    std::string SUBQ_S_PH(uint64 instruction);
 829    std::string SUBQ_S_W(uint64 instruction);
 830    std::string SUBQH_PH(uint64 instruction);
 831    std::string SUBQH_R_PH(uint64 instruction);
 832    std::string SUBQH_R_W(uint64 instruction);
 833    std::string SUBQH_W(uint64 instruction);
 834    std::string SUBU_16_(uint64 instruction);
 835    std::string SUBU_32_(uint64 instruction);
 836    std::string SUBU_PH(uint64 instruction);
 837    std::string SUBU_QB(uint64 instruction);
 838    std::string SUBU_S_PH(uint64 instruction);
 839    std::string SUBU_S_QB(uint64 instruction);
 840    std::string SUBUH_QB(uint64 instruction);
 841    std::string SUBUH_R_QB(uint64 instruction);
 842    std::string SW_16_(uint64 instruction);
 843    std::string SW_4X4_(uint64 instruction);
 844    std::string SW_GP16_(uint64 instruction);
 845    std::string SW_GP_(uint64 instruction);
 846    std::string SW_S9_(uint64 instruction);
 847    std::string SW_SP_(uint64 instruction);
 848    std::string SW_U12_(uint64 instruction);
 849    std::string SWC1_GP_(uint64 instruction);
 850    std::string SWC1_S9_(uint64 instruction);
 851    std::string SWC1_U12_(uint64 instruction);
 852    std::string SWC1X(uint64 instruction);
 853    std::string SWC1XS(uint64 instruction);
 854    std::string SWC2(uint64 instruction);
 855    std::string SWE(uint64 instruction);
 856    std::string SWM(uint64 instruction);
 857    std::string SWPC_48_(uint64 instruction);
 858    std::string SWX(uint64 instruction);
 859    std::string SWXS(uint64 instruction);
 860    std::string SYNC(uint64 instruction);
 861    std::string SYNCI(uint64 instruction);
 862    std::string SYNCIE(uint64 instruction);
 863    std::string SYSCALL_16_(uint64 instruction);
 864    std::string SYSCALL_32_(uint64 instruction);
 865    std::string TEQ(uint64 instruction);
 866    std::string TLBGINV(uint64 instruction);
 867    std::string TLBGINVF(uint64 instruction);
 868    std::string TLBGP(uint64 instruction);
 869    std::string TLBGR(uint64 instruction);
 870    std::string TLBGWI(uint64 instruction);
 871    std::string TLBGWR(uint64 instruction);
 872    std::string TLBINV(uint64 instruction);
 873    std::string TLBINVF(uint64 instruction);
 874    std::string TLBP(uint64 instruction);
 875    std::string TLBR(uint64 instruction);
 876    std::string TLBWI(uint64 instruction);
 877    std::string TLBWR(uint64 instruction);
 878    std::string TNE(uint64 instruction);
 879    std::string TRUNC_L_D(uint64 instruction);
 880    std::string TRUNC_L_S(uint64 instruction);
 881    std::string TRUNC_W_D(uint64 instruction);
 882    std::string TRUNC_W_S(uint64 instruction);
 883    std::string UALDM(uint64 instruction);
 884    std::string UALH(uint64 instruction);
 885    std::string UALWM(uint64 instruction);
 886    std::string UASDM(uint64 instruction);
 887    std::string UASH(uint64 instruction);
 888    std::string UASWM(uint64 instruction);
 889    std::string UDI(uint64 instruction);
 890    std::string WAIT(uint64 instruction);
 891    std::string WRDSP(uint64 instruction);
 892    std::string WRPGPR(uint64 instruction);
 893    std::string XOR_16_(uint64 instruction);
 894    std::string XOR_32_(uint64 instruction);
 895    std::string XORI(uint64 instruction);
 896    std::string YIELD(uint64 instruction);
 897
 898    static Pool P_SYSCALL[2];
 899    static Pool P_RI[4];
 900    static Pool P_ADDIU[2];
 901    static Pool P_TRAP[2];
 902    static Pool P_CMOVE[2];
 903    static Pool P_D_MT_VPE[2];
 904    static Pool P_E_MT_VPE[2];
 905    static Pool _P_MT_VPE[2];
 906    static Pool P_MT_VPE[8];
 907    static Pool P_DVP[2];
 908    static Pool P_SLTU[2];
 909    static Pool _POOL32A0[128];
 910    static Pool ADDQ__S__PH[2];
 911    static Pool MUL__S__PH[2];
 912    static Pool ADDQH__R__PH[2];
 913    static Pool ADDQH__R__W[2];
 914    static Pool ADDU__S__QB[2];
 915    static Pool ADDU__S__PH[2];
 916    static Pool ADDUH__R__QB[2];
 917    static Pool SHRAV__R__PH[2];
 918    static Pool SHRAV__R__QB[2];
 919    static Pool SUBQ__S__PH[2];
 920    static Pool SUBQH__R__PH[2];
 921    static Pool SUBQH__R__W[2];
 922    static Pool SUBU__S__QB[2];
 923    static Pool SUBU__S__PH[2];
 924    static Pool SHRA__R__PH[2];
 925    static Pool SUBUH__R__QB[2];
 926    static Pool SHLLV__S__PH[2];
 927    static Pool SHLL__S__PH[4];
 928    static Pool PRECR_SRA__R__PH_W[2];
 929    static Pool _POOL32A5[128];
 930    static Pool PP_LSX[16];
 931    static Pool PP_LSXS[16];
 932    static Pool P_LSX[2];
 933    static Pool POOL32Axf_1_0[4];
 934    static Pool POOL32Axf_1_1[4];
 935    static Pool POOL32Axf_1_3[4];
 936    static Pool POOL32Axf_1_4[2];
 937    static Pool MAQ_S_A__W_PHR[2];
 938    static Pool MAQ_S_A__W_PHL[2];
 939    static Pool POOL32Axf_1_5[2];
 940    static Pool POOL32Axf_1_7[4];
 941    static Pool POOL32Axf_1[8];
 942    static Pool POOL32Axf_2_DSP__0_7[8];
 943    static Pool POOL32Axf_2_DSP__8_15[8];
 944    static Pool POOL32Axf_2_DSP__16_23[8];
 945    static Pool POOL32Axf_2_DSP__24_31[8];
 946    static Pool POOL32Axf_2[4];
 947    static Pool POOL32Axf_4[128];
 948    static Pool POOL32Axf_5_group0[32];
 949    static Pool POOL32Axf_5_group1[32];
 950    static Pool ERETx[2];
 951    static Pool POOL32Axf_5_group3[32];
 952    static Pool POOL32Axf_5[4];
 953    static Pool SHRA__R__QB[2];
 954    static Pool POOL32Axf_7[8];
 955    static Pool POOL32Axf[8];
 956    static Pool _POOL32A7[8];
 957    static Pool P32A[8];
 958    static Pool P_GP_D[2];
 959    static Pool P_GP_W[4];
 960    static Pool POOL48I[32];
 961    static Pool PP_SR[4];
 962    static Pool P_SR_F[8];
 963    static Pool P_SR[2];
 964    static Pool P_SLL[5];
 965    static Pool P_SHIFT[16];
 966    static Pool P_ROTX[4];
 967    static Pool P_INS[4];
 968    static Pool P_EXT[4];
 969    static Pool P_U12[16];
 970    static Pool RINT_fmt[2];
 971    static Pool ADD_fmt0[2];
 972    static Pool SELEQZ_fmt[2];
 973    static Pool CLASS_fmt[2];
 974    static Pool SUB_fmt0[2];
 975    static Pool SELNEZ_fmt[2];
 976    static Pool MUL_fmt0[2];
 977    static Pool SEL_fmt[2];
 978    static Pool DIV_fmt0[2];
 979    static Pool ADD_fmt1[2];
 980    static Pool SUB_fmt1[2];
 981    static Pool MUL_fmt1[2];
 982    static Pool MADDF_fmt[2];
 983    static Pool DIV_fmt1[2];
 984    static Pool MSUBF_fmt[2];
 985    static Pool POOL32F_0[64];
 986    static Pool MIN_fmt[2];
 987    static Pool MAX_fmt[2];
 988    static Pool MINA_fmt[2];
 989    static Pool MAXA_fmt[2];
 990    static Pool CVT_L_fmt[2];
 991    static Pool RSQRT_fmt[2];
 992    static Pool FLOOR_L_fmt[2];
 993    static Pool CVT_W_fmt[2];
 994    static Pool SQRT_fmt[2];
 995    static Pool FLOOR_W_fmt[2];
 996    static Pool RECIP_fmt[2];
 997    static Pool CEIL_L_fmt[2];
 998    static Pool CEIL_W_fmt[2];
 999    static Pool TRUNC_L_fmt[2];
1000    static Pool TRUNC_W_fmt[2];
1001    static Pool ROUND_L_fmt[2];
1002    static Pool ROUND_W_fmt[2];
1003    static Pool POOL32Fxf_0[64];
1004    static Pool MOV_fmt[4];
1005    static Pool ABS_fmt[4];
1006    static Pool NEG_fmt[4];
1007    static Pool CVT_D_fmt[4];
1008    static Pool CVT_S_fmt[4];
1009    static Pool POOL32Fxf_1[32];
1010    static Pool POOL32Fxf[4];
1011    static Pool POOL32F_3[8];
1012    static Pool CMP_condn_S[32];
1013    static Pool CMP_condn_D[32];
1014    static Pool POOL32F_5[8];
1015    static Pool POOL32F[8];
1016    static Pool POOL32S_0[64];
1017    static Pool POOL32Sxf_4[128];
1018    static Pool POOL32Sxf[8];
1019    static Pool POOL32S_4[8];
1020    static Pool POOL32S[8];
1021    static Pool P_LUI[2];
1022    static Pool P_GP_LH[2];
1023    static Pool P_GP_SH[2];
1024    static Pool P_GP_CP1[4];
1025    static Pool P_GP_M64[4];
1026    static Pool P_GP_BH[8];
1027    static Pool P_LS_U12[16];
1028    static Pool P_PREF_S9_[2];
1029    static Pool P_LS_S0[16];
1030    static Pool ASET_ACLR[2];
1031    static Pool P_LL[4];
1032    static Pool P_SC[4];
1033    static Pool P_LLD[8];
1034    static Pool P_SCD[8];
1035    static Pool P_LS_S1[16];
1036    static Pool P_PREFE[2];
1037    static Pool P_LLE[4];
1038    static Pool P_SCE[4];
1039    static Pool P_LS_E0[16];
1040    static Pool P_LS_WM[2];
1041    static Pool P_LS_UAWM[2];
1042    static Pool P_LS_DM[2];
1043    static Pool P_LS_UADM[2];
1044    static Pool P_LS_S9[8];
1045    static Pool P_BAL[2];
1046    static Pool P_BALRSC[2];
1047    static Pool P_J[16];
1048    static Pool P_BR3A[32];
1049    static Pool P_BR1[4];
1050    static Pool P_BR2[4];
1051    static Pool P_BRI[8];
1052    static Pool P32[32];
1053    static Pool P16_SYSCALL[2];
1054    static Pool P16_RI[4];
1055    static Pool P16_MV[2];
1056    static Pool P16_SHIFT[2];
1057    static Pool POOL16C_00[4];
1058    static Pool POOL16C_0[2];
1059    static Pool P16C[2];
1060    static Pool P16_A1[2];
1061    static Pool P_ADDIU_RS5_[2];
1062    static Pool P16_A2[2];
1063    static Pool P16_ADDU[2];
1064    static Pool P16_JRC[2];
1065    static Pool P16_BR1[2];
1066    static Pool P16_BR[2];
1067    static Pool P16_SR[2];
1068    static Pool P16_4X4[4];
1069    static Pool P16_LB[4];
1070    static Pool P16_LH[4];
1071    static Pool P16[32];
1072    static Pool MAJOR[2];
1073
1074};
1075
1076#endif
1077