Home | History | Annotate | Download | only in asm
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ***   To edit the content of this header, modify the corresponding
     11  ***   source file (e.g. under external/kernel-headers/original/) then
     12  ***   run bionic/libc/kernel/tools/update_all.py
     13  ***
     14  ***   Any manual change here will be lost the next time this script will
     15  ***   be run. You've been warned!
     16  ***
     17  ****************************************************************************
     18  ****************************************************************************/
     19 #ifndef _UAPI_ASM_INST_H
     20 #define _UAPI_ASM_INST_H
     21 #include <asm/bitfield.h>
     22 enum major_op {
     23   spec_op,
     24   bcond_op,
     25   j_op,
     26   jal_op,
     27   beq_op,
     28   bne_op,
     29   blez_op,
     30   bgtz_op,
     31   addi_op,
     32   pop10_op = addi_op,
     33   addiu_op,
     34   slti_op,
     35   sltiu_op,
     36   andi_op,
     37   ori_op,
     38   xori_op,
     39   lui_op,
     40   cop0_op,
     41   cop1_op,
     42   cop2_op,
     43   cop1x_op,
     44   beql_op,
     45   bnel_op,
     46   blezl_op,
     47   bgtzl_op,
     48   daddi_op,
     49   pop30_op = daddi_op,
     50   daddiu_op,
     51   ldl_op,
     52   ldr_op,
     53   spec2_op,
     54   jalx_op,
     55   mdmx_op,
     56   msa_op = mdmx_op,
     57   spec3_op,
     58   lb_op,
     59   lh_op,
     60   lwl_op,
     61   lw_op,
     62   lbu_op,
     63   lhu_op,
     64   lwr_op,
     65   lwu_op,
     66   sb_op,
     67   sh_op,
     68   swl_op,
     69   sw_op,
     70   sdl_op,
     71   sdr_op,
     72   swr_op,
     73   cache_op,
     74   ll_op,
     75   lwc1_op,
     76   lwc2_op,
     77   bc6_op = lwc2_op,
     78   pref_op,
     79   lld_op,
     80   ldc1_op,
     81   ldc2_op,
     82   pop66_op = ldc2_op,
     83   ld_op,
     84   sc_op,
     85   swc1_op,
     86   swc2_op,
     87   balc6_op = swc2_op,
     88   major_3b_op,
     89   scd_op,
     90   sdc1_op,
     91   sdc2_op,
     92   pop76_op = sdc2_op,
     93   sd_op
     94 };
     95 enum spec_op {
     96   sll_op,
     97   movc_op,
     98   srl_op,
     99   sra_op,
    100   sllv_op,
    101   pmon_op,
    102   srlv_op,
    103   srav_op,
    104   jr_op,
    105   jalr_op,
    106   movz_op,
    107   movn_op,
    108   syscall_op,
    109   break_op,
    110   spim_op,
    111   sync_op,
    112   mfhi_op,
    113   mthi_op,
    114   mflo_op,
    115   mtlo_op,
    116   dsllv_op,
    117   spec2_unused_op,
    118   dsrlv_op,
    119   dsrav_op,
    120   mult_op,
    121   multu_op,
    122   div_op,
    123   divu_op,
    124   dmult_op,
    125   dmultu_op,
    126   ddiv_op,
    127   ddivu_op,
    128   add_op,
    129   addu_op,
    130   sub_op,
    131   subu_op,
    132   and_op,
    133   or_op,
    134   xor_op,
    135   nor_op,
    136   spec3_unused_op,
    137   spec4_unused_op,
    138   slt_op,
    139   sltu_op,
    140   dadd_op,
    141   daddu_op,
    142   dsub_op,
    143   dsubu_op,
    144   tge_op,
    145   tgeu_op,
    146   tlt_op,
    147   tltu_op,
    148   teq_op,
    149   spec5_unused_op,
    150   tne_op,
    151   spec6_unused_op,
    152   dsll_op,
    153   spec7_unused_op,
    154   dsrl_op,
    155   dsra_op,
    156   dsll32_op,
    157   spec8_unused_op,
    158   dsrl32_op,
    159   dsra32_op
    160 };
    161 enum spec2_op {
    162   madd_op,
    163   maddu_op,
    164   mul_op,
    165   spec2_3_unused_op,
    166   msub_op,
    167   msubu_op,
    168   clz_op = 0x20,
    169   clo_op,
    170   dclz_op = 0x24,
    171   dclo_op,
    172   sdbpp_op = 0x3f
    173 };
    174 enum spec3_op {
    175   ext_op,
    176   dextm_op,
    177   dextu_op,
    178   dext_op,
    179   ins_op,
    180   dinsm_op,
    181   dinsu_op,
    182   dins_op,
    183   yield_op = 0x09,
    184   lx_op = 0x0a,
    185   lwle_op = 0x19,
    186   lwre_op = 0x1a,
    187   cachee_op = 0x1b,
    188   sbe_op = 0x1c,
    189   she_op = 0x1d,
    190   sce_op = 0x1e,
    191   swe_op = 0x1f,
    192   bshfl_op = 0x20,
    193   swle_op = 0x21,
    194   swre_op = 0x22,
    195   prefe_op = 0x23,
    196   dbshfl_op = 0x24,
    197   cache6_op = 0x25,
    198   sc6_op = 0x26,
    199   scd6_op = 0x27,
    200   lbue_op = 0x28,
    201   lhue_op = 0x29,
    202   lbe_op = 0x2c,
    203   lhe_op = 0x2d,
    204   lle_op = 0x2e,
    205   lwe_op = 0x2f,
    206   pref6_op = 0x35,
    207   ll6_op = 0x36,
    208   lld6_op = 0x37,
    209   rdhwr_op = 0x3b
    210 };
    211 enum mult_op {
    212   mult_mult_op = 0x0,
    213   mult_mul_op = 0x2,
    214   mult_muh_op = 0x3,
    215 };
    216 enum multu_op {
    217   multu_multu_op = 0x0,
    218   multu_mulu_op = 0x2,
    219   multu_muhu_op = 0x3,
    220 };
    221 enum div_op {
    222   div_div_op = 0x0,
    223   div_div6_op = 0x2,
    224   div_mod_op = 0x3,
    225 };
    226 enum divu_op {
    227   divu_divu_op = 0x0,
    228   divu_divu6_op = 0x2,
    229   divu_modu_op = 0x3,
    230 };
    231 enum dmult_op {
    232   dmult_dmult_op = 0x0,
    233   dmult_dmul_op = 0x2,
    234   dmult_dmuh_op = 0x3,
    235 };
    236 enum dmultu_op {
    237   dmultu_dmultu_op = 0x0,
    238   dmultu_dmulu_op = 0x2,
    239   dmultu_dmuhu_op = 0x3,
    240 };
    241 enum ddiv_op {
    242   ddiv_ddiv_op = 0x0,
    243   ddiv_ddiv6_op = 0x2,
    244   ddiv_dmod_op = 0x3,
    245 };
    246 enum ddivu_op {
    247   ddivu_ddivu_op = 0x0,
    248   ddivu_ddivu6_op = 0x2,
    249   ddivu_dmodu_op = 0x3,
    250 };
    251 enum rt_op {
    252   bltz_op,
    253   bgez_op,
    254   bltzl_op,
    255   bgezl_op,
    256   spimi_op,
    257   unused_rt_op_0x05,
    258   unused_rt_op_0x06,
    259   unused_rt_op_0x07,
    260   tgei_op,
    261   tgeiu_op,
    262   tlti_op,
    263   tltiu_op,
    264   teqi_op,
    265   unused_0x0d_rt_op,
    266   tnei_op,
    267   unused_0x0f_rt_op,
    268   bltzal_op,
    269   bgezal_op,
    270   bltzall_op,
    271   bgezall_op,
    272   rt_op_0x14,
    273   rt_op_0x15,
    274   rt_op_0x16,
    275   rt_op_0x17,
    276   rt_op_0x18,
    277   rt_op_0x19,
    278   rt_op_0x1a,
    279   rt_op_0x1b,
    280   bposge32_op,
    281   rt_op_0x1d,
    282   rt_op_0x1e,
    283   synci_op
    284 };
    285 enum cop_op {
    286   mfc_op = 0x00,
    287   dmfc_op = 0x01,
    288   cfc_op = 0x02,
    289   mfhc0_op = 0x02,
    290   mfhc_op = 0x03,
    291   mtc_op = 0x04,
    292   dmtc_op = 0x05,
    293   ctc_op = 0x06,
    294   mthc0_op = 0x06,
    295   mthc_op = 0x07,
    296   bc_op = 0x08,
    297   bc1eqz_op = 0x09,
    298   mfmc0_op = 0x0b,
    299   bc1nez_op = 0x0d,
    300   wrpgpr_op = 0x0e,
    301   cop_op = 0x10,
    302   copm_op = 0x18
    303 };
    304 enum bcop_op {
    305   bcf_op,
    306   bct_op,
    307   bcfl_op,
    308   bctl_op
    309 };
    310 enum cop0_coi_func {
    311   tlbr_op = 0x01,
    312   tlbwi_op = 0x02,
    313   tlbwr_op = 0x06,
    314   tlbp_op = 0x08,
    315   rfe_op = 0x10,
    316   eret_op = 0x18,
    317   wait_op = 0x20,
    318 };
    319 enum cop0_com_func {
    320   tlbr1_op = 0x01,
    321   tlbw_op = 0x02,
    322   tlbp1_op = 0x08,
    323   dctr_op = 0x09,
    324   dctw_op = 0x0a
    325 };
    326 enum cop1_fmt {
    327   s_fmt,
    328   d_fmt,
    329   e_fmt,
    330   q_fmt,
    331   w_fmt,
    332   l_fmt
    333 };
    334 enum cop1_sdw_func {
    335   fadd_op = 0x00,
    336   fsub_op = 0x01,
    337   fmul_op = 0x02,
    338   fdiv_op = 0x03,
    339   fsqrt_op = 0x04,
    340   fabs_op = 0x05,
    341   fmov_op = 0x06,
    342   fneg_op = 0x07,
    343   froundl_op = 0x08,
    344   ftruncl_op = 0x09,
    345   fceill_op = 0x0a,
    346   ffloorl_op = 0x0b,
    347   fround_op = 0x0c,
    348   ftrunc_op = 0x0d,
    349   fceil_op = 0x0e,
    350   ffloor_op = 0x0f,
    351   fsel_op = 0x10,
    352   fmovc_op = 0x11,
    353   fmovz_op = 0x12,
    354   fmovn_op = 0x13,
    355   fseleqz_op = 0x14,
    356   frecip_op = 0x15,
    357   frsqrt_op = 0x16,
    358   fselnez_op = 0x17,
    359   fmaddf_op = 0x18,
    360   fmsubf_op = 0x19,
    361   frint_op = 0x1a,
    362   fclass_op = 0x1b,
    363   fmin_op = 0x1c,
    364   fmina_op = 0x1d,
    365   fmax_op = 0x1e,
    366   fmaxa_op = 0x1f,
    367   fcvts_op = 0x20,
    368   fcvtd_op = 0x21,
    369   fcvte_op = 0x22,
    370   fcvtw_op = 0x24,
    371   fcvtl_op = 0x25,
    372   fcmp_op = 0x30
    373 };
    374 enum cop1x_func {
    375   lwxc1_op = 0x00,
    376   ldxc1_op = 0x01,
    377   swxc1_op = 0x08,
    378   sdxc1_op = 0x09,
    379   pfetch_op = 0x0f,
    380   madd_s_op = 0x20,
    381   madd_d_op = 0x21,
    382   madd_e_op = 0x22,
    383   msub_s_op = 0x28,
    384   msub_d_op = 0x29,
    385   msub_e_op = 0x2a,
    386   nmadd_s_op = 0x30,
    387   nmadd_d_op = 0x31,
    388   nmadd_e_op = 0x32,
    389   nmsub_s_op = 0x38,
    390   nmsub_d_op = 0x39,
    391   nmsub_e_op = 0x3a
    392 };
    393 enum mad_func {
    394   madd_fp_op = 0x08,
    395   msub_fp_op = 0x0a,
    396   nmadd_fp_op = 0x0c,
    397   nmsub_fp_op = 0x0e
    398 };
    399 enum ptw_func {
    400   lwdir_op = 0x00,
    401   lwpte_op = 0x01,
    402   lddir_op = 0x02,
    403   ldpte_op = 0x03,
    404 };
    405 enum lx_func {
    406   lwx_op = 0x00,
    407   lhx_op = 0x04,
    408   lbux_op = 0x06,
    409   ldx_op = 0x08,
    410   lwux_op = 0x10,
    411   lhux_op = 0x14,
    412   lbx_op = 0x16,
    413 };
    414 enum bshfl_func {
    415   wsbh_op = 0x2,
    416   dshd_op = 0x5,
    417   seb_op = 0x10,
    418   seh_op = 0x18,
    419 };
    420 enum msa_func {
    421   msa_elm_op = 0x19,
    422 };
    423 enum msa_elm {
    424   msa_ctc_op = 0x3e,
    425   msa_cfc_op = 0x7e,
    426 };
    427 enum msa_mi10_func {
    428   msa_ld_op = 8,
    429   msa_st_op = 9,
    430 };
    431 enum msa_2b_fmt {
    432   msa_fmt_b = 0,
    433   msa_fmt_h = 1,
    434   msa_fmt_w = 2,
    435   msa_fmt_d = 3,
    436 };
    437 enum mm_major_op {
    438   mm_pool32a_op,
    439   mm_pool16a_op,
    440   mm_lbu16_op,
    441   mm_move16_op,
    442   mm_addi32_op,
    443   mm_lbu32_op,
    444   mm_sb32_op,
    445   mm_lb32_op,
    446   mm_pool32b_op,
    447   mm_pool16b_op,
    448   mm_lhu16_op,
    449   mm_andi16_op,
    450   mm_addiu32_op,
    451   mm_lhu32_op,
    452   mm_sh32_op,
    453   mm_lh32_op,
    454   mm_pool32i_op,
    455   mm_pool16c_op,
    456   mm_lwsp16_op,
    457   mm_pool16d_op,
    458   mm_ori32_op,
    459   mm_pool32f_op,
    460   mm_pool32s_op,
    461   mm_reserved2_op,
    462   mm_pool32c_op,
    463   mm_lwgp16_op,
    464   mm_lw16_op,
    465   mm_pool16e_op,
    466   mm_xori32_op,
    467   mm_jals32_op,
    468   mm_addiupc_op,
    469   mm_reserved3_op,
    470   mm_reserved4_op,
    471   mm_pool16f_op,
    472   mm_sb16_op,
    473   mm_beqz16_op,
    474   mm_slti32_op,
    475   mm_beq32_op,
    476   mm_swc132_op,
    477   mm_lwc132_op,
    478   mm_reserved5_op,
    479   mm_reserved6_op,
    480   mm_sh16_op,
    481   mm_bnez16_op,
    482   mm_sltiu32_op,
    483   mm_bne32_op,
    484   mm_sdc132_op,
    485   mm_ldc132_op,
    486   mm_reserved7_op,
    487   mm_reserved8_op,
    488   mm_swsp16_op,
    489   mm_b16_op,
    490   mm_andi32_op,
    491   mm_j32_op,
    492   mm_sd32_op,
    493   mm_ld32_op,
    494   mm_reserved11_op,
    495   mm_reserved12_op,
    496   mm_sw16_op,
    497   mm_li16_op,
    498   mm_jalx32_op,
    499   mm_jal32_op,
    500   mm_sw32_op,
    501   mm_lw32_op,
    502 };
    503 enum mm_32i_minor_op {
    504   mm_bltz_op,
    505   mm_bltzal_op,
    506   mm_bgez_op,
    507   mm_bgezal_op,
    508   mm_blez_op,
    509   mm_bnezc_op,
    510   mm_bgtz_op,
    511   mm_beqzc_op,
    512   mm_tlti_op,
    513   mm_tgei_op,
    514   mm_tltiu_op,
    515   mm_tgeiu_op,
    516   mm_tnei_op,
    517   mm_lui_op,
    518   mm_teqi_op,
    519   mm_reserved13_op,
    520   mm_synci_op,
    521   mm_bltzals_op,
    522   mm_reserved14_op,
    523   mm_bgezals_op,
    524   mm_bc2f_op,
    525   mm_bc2t_op,
    526   mm_reserved15_op,
    527   mm_reserved16_op,
    528   mm_reserved17_op,
    529   mm_reserved18_op,
    530   mm_bposge64_op,
    531   mm_bposge32_op,
    532   mm_bc1f_op,
    533   mm_bc1t_op,
    534   mm_reserved19_op,
    535   mm_reserved20_op,
    536   mm_bc1any2f_op,
    537   mm_bc1any2t_op,
    538   mm_bc1any4f_op,
    539   mm_bc1any4t_op,
    540 };
    541 enum mm_32a_minor_op {
    542   mm_sll32_op = 0x000,
    543   mm_ins_op = 0x00c,
    544   mm_sllv32_op = 0x010,
    545   mm_ext_op = 0x02c,
    546   mm_pool32axf_op = 0x03c,
    547   mm_srl32_op = 0x040,
    548   mm_sra_op = 0x080,
    549   mm_srlv32_op = 0x090,
    550   mm_rotr_op = 0x0c0,
    551   mm_lwxs_op = 0x118,
    552   mm_addu32_op = 0x150,
    553   mm_subu32_op = 0x1d0,
    554   mm_wsbh_op = 0x1ec,
    555   mm_mul_op = 0x210,
    556   mm_and_op = 0x250,
    557   mm_or32_op = 0x290,
    558   mm_xor32_op = 0x310,
    559   mm_slt_op = 0x350,
    560   mm_sltu_op = 0x390,
    561 };
    562 enum mm_32b_func {
    563   mm_lwc2_func = 0x0,
    564   mm_lwp_func = 0x1,
    565   mm_ldc2_func = 0x2,
    566   mm_ldp_func = 0x4,
    567   mm_lwm32_func = 0x5,
    568   mm_cache_func = 0x6,
    569   mm_ldm_func = 0x7,
    570   mm_swc2_func = 0x8,
    571   mm_swp_func = 0x9,
    572   mm_sdc2_func = 0xa,
    573   mm_sdp_func = 0xc,
    574   mm_swm32_func = 0xd,
    575   mm_sdm_func = 0xf,
    576 };
    577 enum mm_32c_func {
    578   mm_pref_func = 0x2,
    579   mm_ll_func = 0x3,
    580   mm_swr_func = 0x9,
    581   mm_sc_func = 0xb,
    582   mm_lwu_func = 0xe,
    583 };
    584 enum mm_32axf_minor_op {
    585   mm_mfc0_op = 0x003,
    586   mm_mtc0_op = 0x00b,
    587   mm_tlbp_op = 0x00d,
    588   mm_mfhi32_op = 0x035,
    589   mm_jalr_op = 0x03c,
    590   mm_tlbr_op = 0x04d,
    591   mm_mflo32_op = 0x075,
    592   mm_jalrhb_op = 0x07c,
    593   mm_tlbwi_op = 0x08d,
    594   mm_mthi32_op = 0x0b5,
    595   mm_tlbwr_op = 0x0cd,
    596   mm_mtlo32_op = 0x0f5,
    597   mm_di_op = 0x11d,
    598   mm_jalrs_op = 0x13c,
    599   mm_jalrshb_op = 0x17c,
    600   mm_sync_op = 0x1ad,
    601   mm_syscall_op = 0x22d,
    602   mm_wait_op = 0x24d,
    603   mm_eret_op = 0x3cd,
    604   mm_divu_op = 0x5dc,
    605 };
    606 enum mm_32f_minor_op {
    607   mm_32f_00_op = 0x00,
    608   mm_32f_01_op = 0x01,
    609   mm_32f_02_op = 0x02,
    610   mm_32f_10_op = 0x08,
    611   mm_32f_11_op = 0x09,
    612   mm_32f_12_op = 0x0a,
    613   mm_32f_20_op = 0x10,
    614   mm_32f_30_op = 0x18,
    615   mm_32f_40_op = 0x20,
    616   mm_32f_41_op = 0x21,
    617   mm_32f_42_op = 0x22,
    618   mm_32f_50_op = 0x28,
    619   mm_32f_51_op = 0x29,
    620   mm_32f_52_op = 0x2a,
    621   mm_32f_60_op = 0x30,
    622   mm_32f_70_op = 0x38,
    623   mm_32f_73_op = 0x3b,
    624   mm_32f_74_op = 0x3c,
    625 };
    626 enum mm_32f_10_minor_op {
    627   mm_lwxc1_op = 0x1,
    628   mm_swxc1_op,
    629   mm_ldxc1_op,
    630   mm_sdxc1_op,
    631   mm_luxc1_op,
    632   mm_suxc1_op,
    633 };
    634 enum mm_32f_func {
    635   mm_lwxc1_func = 0x048,
    636   mm_swxc1_func = 0x088,
    637   mm_ldxc1_func = 0x0c8,
    638   mm_sdxc1_func = 0x108,
    639 };
    640 enum mm_32f_40_minor_op {
    641   mm_fmovf_op,
    642   mm_fmovt_op,
    643 };
    644 enum mm_32f_60_minor_op {
    645   mm_fadd_op,
    646   mm_fsub_op,
    647   mm_fmul_op,
    648   mm_fdiv_op,
    649 };
    650 enum mm_32f_70_minor_op {
    651   mm_fmovn_op,
    652   mm_fmovz_op,
    653 };
    654 enum mm_32f_73_minor_op {
    655   mm_fmov0_op = 0x01,
    656   mm_fcvtl_op = 0x04,
    657   mm_movf0_op = 0x05,
    658   mm_frsqrt_op = 0x08,
    659   mm_ffloorl_op = 0x0c,
    660   mm_fabs0_op = 0x0d,
    661   mm_fcvtw_op = 0x24,
    662   mm_movt0_op = 0x25,
    663   mm_fsqrt_op = 0x28,
    664   mm_ffloorw_op = 0x2c,
    665   mm_fneg0_op = 0x2d,
    666   mm_cfc1_op = 0x40,
    667   mm_frecip_op = 0x48,
    668   mm_fceill_op = 0x4c,
    669   mm_fcvtd0_op = 0x4d,
    670   mm_ctc1_op = 0x60,
    671   mm_fceilw_op = 0x6c,
    672   mm_fcvts0_op = 0x6d,
    673   mm_mfc1_op = 0x80,
    674   mm_fmov1_op = 0x81,
    675   mm_movf1_op = 0x85,
    676   mm_ftruncl_op = 0x8c,
    677   mm_fabs1_op = 0x8d,
    678   mm_mtc1_op = 0xa0,
    679   mm_movt1_op = 0xa5,
    680   mm_ftruncw_op = 0xac,
    681   mm_fneg1_op = 0xad,
    682   mm_mfhc1_op = 0xc0,
    683   mm_froundl_op = 0xcc,
    684   mm_fcvtd1_op = 0xcd,
    685   mm_mthc1_op = 0xe0,
    686   mm_froundw_op = 0xec,
    687   mm_fcvts1_op = 0xed,
    688 };
    689 enum mm_32s_minor_op {
    690   mm_32s_elm_op = 0x16,
    691 };
    692 enum mm_16c_minor_op {
    693   mm_lwm16_op = 0x04,
    694   mm_swm16_op = 0x05,
    695   mm_jr16_op = 0x0c,
    696   mm_jrc_op = 0x0d,
    697   mm_jalr16_op = 0x0e,
    698   mm_jalrs16_op = 0x0f,
    699   mm_jraddiusp_op = 0x18,
    700 };
    701 enum mm_16d_minor_op {
    702   mm_addius5_func,
    703   mm_addiusp_func,
    704 };
    705 enum MIPS16e_ops {
    706   MIPS16e_jal_op = 003,
    707   MIPS16e_ld_op = 007,
    708   MIPS16e_i8_op = 014,
    709   MIPS16e_sd_op = 017,
    710   MIPS16e_lb_op = 020,
    711   MIPS16e_lh_op = 021,
    712   MIPS16e_lwsp_op = 022,
    713   MIPS16e_lw_op = 023,
    714   MIPS16e_lbu_op = 024,
    715   MIPS16e_lhu_op = 025,
    716   MIPS16e_lwpc_op = 026,
    717   MIPS16e_lwu_op = 027,
    718   MIPS16e_sb_op = 030,
    719   MIPS16e_sh_op = 031,
    720   MIPS16e_swsp_op = 032,
    721   MIPS16e_sw_op = 033,
    722   MIPS16e_rr_op = 035,
    723   MIPS16e_extend_op = 036,
    724   MIPS16e_i64_op = 037,
    725 };
    726 enum MIPS16e_i64_func {
    727   MIPS16e_ldsp_func,
    728   MIPS16e_sdsp_func,
    729   MIPS16e_sdrasp_func,
    730   MIPS16e_dadjsp_func,
    731   MIPS16e_ldpc_func,
    732 };
    733 enum MIPS16e_rr_func {
    734   MIPS16e_jr_func,
    735 };
    736 enum MIPS6e_i8_func {
    737   MIPS16e_swrasp_func = 02,
    738 };
    739 #define MM_NOP16 0x0c00
    740 struct j_format {
    741   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int target : 26,;
    742  ))
    743 };
    744 struct i_format {
    745   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 16,;
    746  ))))
    747 };
    748 struct u_format {
    749   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int uimmediate : 16,;
    750  ))))
    751 };
    752 struct c_format {
    753   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int c_op : 3, __BITFIELD_FIELD(unsigned int cache : 2, __BITFIELD_FIELD(unsigned int simmediate : 16,;
    754  )))))
    755 };
    756 struct r_format {
    757   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6,;
    758  ))))))
    759 };
    760 struct c0r_format {
    761   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int z : 8, __BITFIELD_FIELD(unsigned int sel : 3,;
    762  ))))))
    763 };
    764 struct mfmc0_format {
    765   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int sc : 1, __BITFIELD_FIELD(unsigned int : 2, __BITFIELD_FIELD(unsigned int sel : 3,;
    766  ))))))))
    767 };
    768 struct co_format {
    769   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int co : 1, __BITFIELD_FIELD(unsigned int code : 19, __BITFIELD_FIELD(unsigned int func : 6,;
    770  ))))
    771 };
    772 struct p_format {
    773   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6,;
    774  ))))))
    775 };
    776 struct f_format {
    777   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int : 1, __BITFIELD_FIELD(unsigned int fmt : 4, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6,;
    778  )))))))
    779 };
    780 struct ma_format {
    781   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int fmt : 2,;
    782  )))))))
    783 };
    784 struct b_format {
    785   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int code : 20, __BITFIELD_FIELD(unsigned int func : 6,;
    786  )))
    787 };
    788 struct ps_format {
    789   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
    790  ))))))
    791 };
    792 struct v_format {
    793   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int sel : 4, __BITFIELD_FIELD(unsigned int fmt : 1, __BITFIELD_FIELD(unsigned int vt : 5, __BITFIELD_FIELD(unsigned int vs : 5, __BITFIELD_FIELD(unsigned int vd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
    794  )))))))
    795 };
    796 struct msa_mi10_format {
    797   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(signed int s10 : 10, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int wd : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int df : 2,;
    798  ))))))
    799 };
    800 struct spec3_format {
    801   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 9, __BITFIELD_FIELD(unsigned int func : 7,;
    802  )))))
    803 };
    804 struct fb_format {
    805   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int bc : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int flag : 2, __BITFIELD_FIELD(signed int simmediate : 16,;
    806  )))))
    807 };
    808 struct fp0_format {
    809   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fmt : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
    810  ))))))
    811 };
    812 struct mm_fp0_format {
    813   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int op : 2, __BITFIELD_FIELD(unsigned int func : 6,;
    814  )))))))
    815 };
    816 struct fp1_format {
    817   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int op : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
    818  ))))))
    819 };
    820 struct mm_fp1_format {
    821   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fmt : 2, __BITFIELD_FIELD(unsigned int op : 8, __BITFIELD_FIELD(unsigned int func : 6,;
    822  ))))))
    823 };
    824 struct mm_fp2_format {
    825   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int zero : 2, __BITFIELD_FIELD(unsigned int fmt : 2, __BITFIELD_FIELD(unsigned int op : 3, __BITFIELD_FIELD(unsigned int func : 6,;
    826  ))))))))
    827 };
    828 struct mm_fp3_format {
    829   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int op : 7, __BITFIELD_FIELD(unsigned int func : 6,;
    830  ))))))
    831 };
    832 struct mm_fp4_format {
    833   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int cond : 4, __BITFIELD_FIELD(unsigned int func : 6,;
    834  )))))))
    835 };
    836 struct mm_fp5_format {
    837   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int index : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int op : 5, __BITFIELD_FIELD(unsigned int func : 6,;
    838  ))))))
    839 };
    840 struct fp6_format {
    841   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
    842  ))))))
    843 };
    844 struct mm_fp6_format {
    845   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int func : 6,;
    846  ))))))
    847 };
    848 struct mm_i_format {
    849   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(signed int simmediate : 16,;
    850  ))))
    851 };
    852 struct mm_m_format {
    853   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(signed int simmediate : 12,;
    854  )))))
    855 };
    856 struct mm_x_format {
    857   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int index : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int func : 11,;
    858  )))))
    859 };
    860 struct mm_a_format {
    861   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 3, __BITFIELD_FIELD(signed int simmediate : 23,;
    862  )))
    863 };
    864 struct mm_b0_format {
    865   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(signed int simmediate : 10, __BITFIELD_FIELD(unsigned int : 16,;
    866  )))
    867 };
    868 struct mm_b1_format {
    869   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 3, __BITFIELD_FIELD(signed int simmediate : 7, __BITFIELD_FIELD(unsigned int : 16,;
    870  ))))
    871 };
    872 struct mm16_m_format {
    873   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int rlist : 2, __BITFIELD_FIELD(unsigned int imm : 4, __BITFIELD_FIELD(unsigned int : 16,;
    874  )))))
    875 };
    876 struct mm16_rb_format {
    877   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 3, __BITFIELD_FIELD(unsigned int base : 3, __BITFIELD_FIELD(signed int simmediate : 4, __BITFIELD_FIELD(unsigned int : 16,;
    878  )))))
    879 };
    880 struct mm16_r3_format {
    881   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 3, __BITFIELD_FIELD(signed int simmediate : 7, __BITFIELD_FIELD(unsigned int : 16,;
    882  ))))
    883 };
    884 struct mm16_r5_format {
    885   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 5, __BITFIELD_FIELD(unsigned int : 16,;
    886  ))))
    887 };
    888 struct m16e_rr {
    889   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int nd : 1, __BITFIELD_FIELD(unsigned int l : 1, __BITFIELD_FIELD(unsigned int ra : 1, __BITFIELD_FIELD(unsigned int func : 5,;
    890  ))))))
    891 };
    892 struct m16e_jal {
    893   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int x : 1, __BITFIELD_FIELD(unsigned int imm20_16 : 5, __BITFIELD_FIELD(signed int imm25_21 : 5,;
    894  ))))
    895 };
    896 struct m16e_i64 {
    897   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
    898  )))
    899 };
    900 struct m16e_ri64 {
    901   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int ry : 3, __BITFIELD_FIELD(unsigned int imm : 5,;
    902  ))))
    903 };
    904 struct m16e_ri {
    905   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
    906  )))
    907 };
    908 struct m16e_rri {
    909   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int ry : 3, __BITFIELD_FIELD(unsigned int imm : 5,;
    910  ))))
    911 };
    912 struct m16e_i8 {
    913   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
    914  )))
    915 };
    916 union mips_instruction {
    917   unsigned int word;
    918   unsigned short halfword[2];
    919   unsigned char byte[4];
    920   struct j_format j_format;
    921   struct i_format i_format;
    922   struct u_format u_format;
    923   struct c_format c_format;
    924   struct r_format r_format;
    925   struct c0r_format c0r_format;
    926   struct mfmc0_format mfmc0_format;
    927   struct co_format co_format;
    928   struct p_format p_format;
    929   struct f_format f_format;
    930   struct ma_format ma_format;
    931   struct msa_mi10_format msa_mi10_format;
    932   struct b_format b_format;
    933   struct ps_format ps_format;
    934   struct v_format v_format;
    935   struct spec3_format spec3_format;
    936   struct fb_format fb_format;
    937   struct fp0_format fp0_format;
    938   struct mm_fp0_format mm_fp0_format;
    939   struct fp1_format fp1_format;
    940   struct mm_fp1_format mm_fp1_format;
    941   struct mm_fp2_format mm_fp2_format;
    942   struct mm_fp3_format mm_fp3_format;
    943   struct mm_fp4_format mm_fp4_format;
    944   struct mm_fp5_format mm_fp5_format;
    945   struct fp6_format fp6_format;
    946   struct mm_fp6_format mm_fp6_format;
    947   struct mm_i_format mm_i_format;
    948   struct mm_m_format mm_m_format;
    949   struct mm_x_format mm_x_format;
    950   struct mm_a_format mm_a_format;
    951   struct mm_b0_format mm_b0_format;
    952   struct mm_b1_format mm_b1_format;
    953   struct mm16_m_format mm16_m_format;
    954   struct mm16_rb_format mm16_rb_format;
    955   struct mm16_r3_format mm16_r3_format;
    956   struct mm16_r5_format mm16_r5_format;
    957 };
    958 union mips16e_instruction {
    959   unsigned int full : 16;
    960   struct m16e_rr rr;
    961   struct m16e_jal jal;
    962   struct m16e_i64 i64;
    963   struct m16e_ri64 ri64;
    964   struct m16e_ri ri;
    965   struct m16e_rri rri;
    966   struct m16e_i8 i8;
    967 };
    968 #endif
    969