blob: 46a65e6b8a899a8a078918c17dcbc31f1c11c7c6 [file] [log] [blame]
Elliott Hughesabd62612013-11-08 11:45:48 -08001/****************************************************************************
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
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070021#include <asm/bitfield.h>
Elliott Hughesabd62612013-11-08 11:45:48 -080022enum major_op {
Tao Baod7db5942015-01-28 10:07:51 -080023 spec_op,
24 bcond_op,
25 j_op,
26 jal_op,
Tao Baod7db5942015-01-28 10:07:51 -080027 beq_op,
28 bne_op,
29 blez_op,
30 bgtz_op,
Tao Baod7db5942015-01-28 10:07:51 -080031 addi_op,
Christopher Ferris49f525c2016-12-12 14:55:36 -080032 pop10_op = addi_op,
Tao Baod7db5942015-01-28 10:07:51 -080033 addiu_op,
34 slti_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -080035 sltiu_op,
Tao Baod7db5942015-01-28 10:07:51 -080036 andi_op,
37 ori_op,
38 xori_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -080039 lui_op,
Tao Baod7db5942015-01-28 10:07:51 -080040 cop0_op,
41 cop1_op,
42 cop2_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -080043 cop1x_op,
Tao Baod7db5942015-01-28 10:07:51 -080044 beql_op,
45 bnel_op,
46 blezl_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -080047 bgtzl_op,
Tao Baod7db5942015-01-28 10:07:51 -080048 daddi_op,
Christopher Ferris49f525c2016-12-12 14:55:36 -080049 pop30_op = daddi_op,
Tao Baod7db5942015-01-28 10:07:51 -080050 daddiu_op,
51 ldl_op,
52 ldr_op,
Tao Baod7db5942015-01-28 10:07:51 -080053 spec2_op,
54 jalx_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -080055 mdmx_op,
56 msa_op = mdmx_op,
57 spec3_op,
Tao Baod7db5942015-01-28 10:07:51 -080058 lb_op,
59 lh_op,
60 lwl_op,
61 lw_op,
Tao Baod7db5942015-01-28 10:07:51 -080062 lbu_op,
63 lhu_op,
64 lwr_op,
65 lwu_op,
Tao Baod7db5942015-01-28 10:07:51 -080066 sb_op,
67 sh_op,
68 swl_op,
69 sw_op,
Tao Baod7db5942015-01-28 10:07:51 -080070 sdl_op,
71 sdr_op,
72 swr_op,
73 cache_op,
Tao Baod7db5942015-01-28 10:07:51 -080074 ll_op,
75 lwc1_op,
76 lwc2_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -080077 bc6_op = lwc2_op,
Tao Baod7db5942015-01-28 10:07:51 -080078 pref_op,
Tao Baod7db5942015-01-28 10:07:51 -080079 lld_op,
80 ldc1_op,
81 ldc2_op,
Christopher Ferris49f525c2016-12-12 14:55:36 -080082 pop66_op = ldc2_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -080083 ld_op,
Tao Baod7db5942015-01-28 10:07:51 -080084 sc_op,
85 swc1_op,
86 swc2_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -080087 balc6_op = swc2_op,
88 major_3b_op,
Tao Baod7db5942015-01-28 10:07:51 -080089 scd_op,
90 sdc1_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -080091 sdc2_op,
Christopher Ferris49f525c2016-12-12 14:55:36 -080092 pop76_op = sdc2_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -080093 sd_op
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070094};
Elliott Hughesabd62612013-11-08 11:45:48 -080095enum spec_op {
Tao Baod7db5942015-01-28 10:07:51 -080096 sll_op,
97 movc_op,
Tao Baod7db5942015-01-28 10:07:51 -080098 srl_op,
99 sra_op,
100 sllv_op,
101 pmon_op,
Tao Baod7db5942015-01-28 10:07:51 -0800102 srlv_op,
103 srav_op,
104 jr_op,
105 jalr_op,
Tao Baod7db5942015-01-28 10:07:51 -0800106 movz_op,
107 movn_op,
108 syscall_op,
109 break_op,
Tao Baod7db5942015-01-28 10:07:51 -0800110 spim_op,
111 sync_op,
112 mfhi_op,
113 mthi_op,
Tao Baod7db5942015-01-28 10:07:51 -0800114 mflo_op,
115 mtlo_op,
116 dsllv_op,
117 spec2_unused_op,
Tao Baod7db5942015-01-28 10:07:51 -0800118 dsrlv_op,
119 dsrav_op,
120 mult_op,
121 multu_op,
Tao Baod7db5942015-01-28 10:07:51 -0800122 div_op,
123 divu_op,
124 dmult_op,
125 dmultu_op,
Tao Baod7db5942015-01-28 10:07:51 -0800126 ddiv_op,
127 ddivu_op,
128 add_op,
129 addu_op,
Tao Baod7db5942015-01-28 10:07:51 -0800130 sub_op,
131 subu_op,
132 and_op,
133 or_op,
Tao Baod7db5942015-01-28 10:07:51 -0800134 xor_op,
135 nor_op,
136 spec3_unused_op,
137 spec4_unused_op,
Tao Baod7db5942015-01-28 10:07:51 -0800138 slt_op,
139 sltu_op,
140 dadd_op,
141 daddu_op,
Tao Baod7db5942015-01-28 10:07:51 -0800142 dsub_op,
143 dsubu_op,
144 tge_op,
145 tgeu_op,
Tao Baod7db5942015-01-28 10:07:51 -0800146 tlt_op,
147 tltu_op,
148 teq_op,
149 spec5_unused_op,
Tao Baod7db5942015-01-28 10:07:51 -0800150 tne_op,
151 spec6_unused_op,
152 dsll_op,
153 spec7_unused_op,
Tao Baod7db5942015-01-28 10:07:51 -0800154 dsrl_op,
155 dsra_op,
156 dsll32_op,
157 spec8_unused_op,
Tao Baod7db5942015-01-28 10:07:51 -0800158 dsrl32_op,
159 dsra32_op
Elliott Hughesabd62612013-11-08 11:45:48 -0800160};
161enum spec2_op {
Tao Baod7db5942015-01-28 10:07:51 -0800162 madd_op,
163 maddu_op,
164 mul_op,
165 spec2_3_unused_op,
Tao Baod7db5942015-01-28 10:07:51 -0800166 msub_op,
167 msubu_op,
168 clz_op = 0x20,
169 clo_op,
Tao Baod7db5942015-01-28 10:07:51 -0800170 dclz_op = 0x24,
171 dclo_op,
172 sdbpp_op = 0x3f
Elliott Hughesabd62612013-11-08 11:45:48 -0800173};
174enum spec3_op {
Tao Baod7db5942015-01-28 10:07:51 -0800175 ext_op,
176 dextm_op,
177 dextu_op,
Tao Baod7db5942015-01-28 10:07:51 -0800178 dext_op,
179 ins_op,
180 dinsm_op,
181 dinsu_op,
Tao Baod7db5942015-01-28 10:07:51 -0800182 dins_op,
183 yield_op = 0x09,
184 lx_op = 0x0a,
185 lwle_op = 0x19,
Tao Baod7db5942015-01-28 10:07:51 -0800186 lwre_op = 0x1a,
187 cachee_op = 0x1b,
188 sbe_op = 0x1c,
189 she_op = 0x1d,
Tao Baod7db5942015-01-28 10:07:51 -0800190 sce_op = 0x1e,
191 swe_op = 0x1f,
192 bshfl_op = 0x20,
193 swle_op = 0x21,
Tao Baod7db5942015-01-28 10:07:51 -0800194 swre_op = 0x22,
195 prefe_op = 0x23,
196 dbshfl_op = 0x24,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800197 cache6_op = 0x25,
198 sc6_op = 0x26,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800199 scd6_op = 0x27,
200 lbue_op = 0x28,
Tao Baod7db5942015-01-28 10:07:51 -0800201 lhue_op = 0x29,
202 lbe_op = 0x2c,
203 lhe_op = 0x2d,
204 lle_op = 0x2e,
Tao Baod7db5942015-01-28 10:07:51 -0800205 lwe_op = 0x2f,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800206 pref6_op = 0x35,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800207 ll6_op = 0x36,
208 lld6_op = 0x37,
Tao Baod7db5942015-01-28 10:07:51 -0800209 rdhwr_op = 0x3b
Elliott Hughesabd62612013-11-08 11:45:48 -0800210};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800211enum mult_op {
212 mult_mult_op = 0x0,
213 mult_mul_op = 0x2,
214 mult_muh_op = 0x3,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800215};
216enum multu_op {
217 multu_multu_op = 0x0,
218 multu_mulu_op = 0x2,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800219 multu_muhu_op = 0x3,
220};
221enum div_op {
222 div_div_op = 0x0,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800223 div_div6_op = 0x2,
224 div_mod_op = 0x3,
225};
226enum divu_op {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800227 divu_divu_op = 0x0,
228 divu_divu6_op = 0x2,
229 divu_modu_op = 0x3,
230};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800231enum dmult_op {
232 dmult_dmult_op = 0x0,
233 dmult_dmul_op = 0x2,
234 dmult_dmuh_op = 0x3,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800235};
236enum dmultu_op {
237 dmultu_dmultu_op = 0x0,
238 dmultu_dmulu_op = 0x2,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800239 dmultu_dmuhu_op = 0x3,
240};
241enum ddiv_op {
242 ddiv_ddiv_op = 0x0,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800243 ddiv_ddiv6_op = 0x2,
244 ddiv_dmod_op = 0x3,
245};
246enum ddivu_op {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800247 ddivu_ddivu_op = 0x0,
248 ddivu_ddivu6_op = 0x2,
249 ddivu_dmodu_op = 0x3,
250};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800251enum rt_op {
Tao Baod7db5942015-01-28 10:07:51 -0800252 bltz_op,
253 bgez_op,
254 bltzl_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800255 bgezl_op,
Tao Baod7db5942015-01-28 10:07:51 -0800256 spimi_op,
257 unused_rt_op_0x05,
258 unused_rt_op_0x06,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800259 unused_rt_op_0x07,
Tao Baod7db5942015-01-28 10:07:51 -0800260 tgei_op,
261 tgeiu_op,
262 tlti_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800263 tltiu_op,
Tao Baod7db5942015-01-28 10:07:51 -0800264 teqi_op,
265 unused_0x0d_rt_op,
266 tnei_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800267 unused_0x0f_rt_op,
Tao Baod7db5942015-01-28 10:07:51 -0800268 bltzal_op,
269 bgezal_op,
270 bltzall_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800271 bgezall_op,
Tao Baod7db5942015-01-28 10:07:51 -0800272 rt_op_0x14,
273 rt_op_0x15,
274 rt_op_0x16,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800275 rt_op_0x17,
Tao Baod7db5942015-01-28 10:07:51 -0800276 rt_op_0x18,
277 rt_op_0x19,
278 rt_op_0x1a,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800279 rt_op_0x1b,
Tao Baod7db5942015-01-28 10:07:51 -0800280 bposge32_op,
281 rt_op_0x1d,
282 rt_op_0x1e,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800283 synci_op
Elliott Hughesabd62612013-11-08 11:45:48 -0800284};
285enum cop_op {
Tao Baod7db5942015-01-28 10:07:51 -0800286 mfc_op = 0x00,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800287 dmfc_op = 0x01,
Tao Baod7db5942015-01-28 10:07:51 -0800288 cfc_op = 0x02,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800289 mfhc0_op = 0x02,
Tao Baod7db5942015-01-28 10:07:51 -0800290 mfhc_op = 0x03,
291 mtc_op = 0x04,
292 dmtc_op = 0x05,
Tao Baod7db5942015-01-28 10:07:51 -0800293 ctc_op = 0x06,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800294 mthc0_op = 0x06,
Tao Baod7db5942015-01-28 10:07:51 -0800295 mthc_op = 0x07,
296 bc_op = 0x08,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800297 bc1eqz_op = 0x09,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700298 mfmc0_op = 0x0b,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700299 bc1nez_op = 0x0d,
300 wrpgpr_op = 0x0e,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800301 cop_op = 0x10,
Tao Baod7db5942015-01-28 10:07:51 -0800302 copm_op = 0x18
Elliott Hughesabd62612013-11-08 11:45:48 -0800303};
304enum bcop_op {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800305 bcf_op,
Tao Baod7db5942015-01-28 10:07:51 -0800306 bct_op,
307 bcfl_op,
308 bctl_op
Christopher Ferris05d08e92016-02-04 13:16:38 -0800309};
Elliott Hughesabd62612013-11-08 11:45:48 -0800310enum cop0_coi_func {
Tao Baod7db5942015-01-28 10:07:51 -0800311 tlbr_op = 0x01,
312 tlbwi_op = 0x02,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800313 tlbwr_op = 0x06,
Tao Baod7db5942015-01-28 10:07:51 -0800314 tlbp_op = 0x08,
315 rfe_op = 0x10,
316 eret_op = 0x18,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800317 wait_op = 0x20,
Christopher Ferris525ce912017-07-26 13:12:53 -0700318 hypcall_op = 0x28
Elliott Hughesabd62612013-11-08 11:45:48 -0800319};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700320enum cop0_com_func {
Tao Baod7db5942015-01-28 10:07:51 -0800321 tlbr1_op = 0x01,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800322 tlbw_op = 0x02,
Tao Baod7db5942015-01-28 10:07:51 -0800323 tlbp1_op = 0x08,
324 dctr_op = 0x09,
325 dctw_op = 0x0a
Christopher Ferris05d08e92016-02-04 13:16:38 -0800326};
Christopher Ferris38062f92014-07-09 15:33:25 -0700327enum cop1_fmt {
Tao Baod7db5942015-01-28 10:07:51 -0800328 s_fmt,
329 d_fmt,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800330 e_fmt,
Tao Baod7db5942015-01-28 10:07:51 -0800331 q_fmt,
332 w_fmt,
333 l_fmt
Christopher Ferris05d08e92016-02-04 13:16:38 -0800334};
Christopher Ferris38062f92014-07-09 15:33:25 -0700335enum cop1_sdw_func {
Tao Baod7db5942015-01-28 10:07:51 -0800336 fadd_op = 0x00,
337 fsub_op = 0x01,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800338 fmul_op = 0x02,
Tao Baod7db5942015-01-28 10:07:51 -0800339 fdiv_op = 0x03,
340 fsqrt_op = 0x04,
341 fabs_op = 0x05,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800342 fmov_op = 0x06,
Tao Baod7db5942015-01-28 10:07:51 -0800343 fneg_op = 0x07,
344 froundl_op = 0x08,
345 ftruncl_op = 0x09,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800346 fceill_op = 0x0a,
Tao Baod7db5942015-01-28 10:07:51 -0800347 ffloorl_op = 0x0b,
348 fround_op = 0x0c,
349 ftrunc_op = 0x0d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800350 fceil_op = 0x0e,
Tao Baod7db5942015-01-28 10:07:51 -0800351 ffloor_op = 0x0f,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700352 fsel_op = 0x10,
Tao Baod7db5942015-01-28 10:07:51 -0800353 fmovc_op = 0x11,
354 fmovz_op = 0x12,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800355 fmovn_op = 0x13,
356 fseleqz_op = 0x14,
Tao Baod7db5942015-01-28 10:07:51 -0800357 frecip_op = 0x15,
358 frsqrt_op = 0x16,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800359 fselnez_op = 0x17,
360 fmaddf_op = 0x18,
361 fmsubf_op = 0x19,
362 frint_op = 0x1a,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800363 fclass_op = 0x1b,
364 fmin_op = 0x1c,
365 fmina_op = 0x1d,
366 fmax_op = 0x1e,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800367 fmaxa_op = 0x1f,
Tao Baod7db5942015-01-28 10:07:51 -0800368 fcvts_op = 0x20,
369 fcvtd_op = 0x21,
Tao Baod7db5942015-01-28 10:07:51 -0800370 fcvte_op = 0x22,
371 fcvtw_op = 0x24,
372 fcvtl_op = 0x25,
373 fcmp_op = 0x30
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700374};
Elliott Hughesabd62612013-11-08 11:45:48 -0800375enum cop1x_func {
Tao Baod7db5942015-01-28 10:07:51 -0800376 lwxc1_op = 0x00,
377 ldxc1_op = 0x01,
Tao Baod7db5942015-01-28 10:07:51 -0800378 swxc1_op = 0x08,
379 sdxc1_op = 0x09,
380 pfetch_op = 0x0f,
381 madd_s_op = 0x20,
Tao Baod7db5942015-01-28 10:07:51 -0800382 madd_d_op = 0x21,
383 madd_e_op = 0x22,
384 msub_s_op = 0x28,
385 msub_d_op = 0x29,
Tao Baod7db5942015-01-28 10:07:51 -0800386 msub_e_op = 0x2a,
387 nmadd_s_op = 0x30,
388 nmadd_d_op = 0x31,
389 nmadd_e_op = 0x32,
Tao Baod7db5942015-01-28 10:07:51 -0800390 nmsub_s_op = 0x38,
391 nmsub_d_op = 0x39,
392 nmsub_e_op = 0x3a
Elliott Hughesabd62612013-11-08 11:45:48 -0800393};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700394enum mad_func {
Tao Baod7db5942015-01-28 10:07:51 -0800395 madd_fp_op = 0x08,
396 msub_fp_op = 0x0a,
397 nmadd_fp_op = 0x0c,
Tao Baod7db5942015-01-28 10:07:51 -0800398 nmsub_fp_op = 0x0e
Christopher Ferris106b3a82016-08-24 12:15:38 -0700399};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700400enum ptw_func {
401 lwdir_op = 0x00,
402 lwpte_op = 0x01,
403 lddir_op = 0x02,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700404 ldpte_op = 0x03,
Elliott Hughesabd62612013-11-08 11:45:48 -0800405};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700406enum lx_func {
Tao Baod7db5942015-01-28 10:07:51 -0800407 lwx_op = 0x00,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700408 lhx_op = 0x04,
Tao Baod7db5942015-01-28 10:07:51 -0800409 lbux_op = 0x06,
410 ldx_op = 0x08,
411 lwux_op = 0x10,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700412 lhux_op = 0x14,
Tao Baod7db5942015-01-28 10:07:51 -0800413 lbx_op = 0x16,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700414};
415enum bshfl_func {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700416 wsbh_op = 0x2,
Tao Baod7db5942015-01-28 10:07:51 -0800417 dshd_op = 0x5,
418 seb_op = 0x10,
419 seh_op = 0x18,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700420};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800421enum msa_func {
422 msa_elm_op = 0x19,
423};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800424enum msa_elm {
425 msa_ctc_op = 0x3e,
426 msa_cfc_op = 0x7e,
427};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800428enum msa_mi10_func {
429 msa_ld_op = 8,
430 msa_st_op = 9,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700431};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800432enum msa_2b_fmt {
433 msa_fmt_b = 0,
434 msa_fmt_h = 1,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700435 msa_fmt_w = 2,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800436 msa_fmt_d = 3,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700437};
Christopher Ferris38062f92014-07-09 15:33:25 -0700438enum mm_major_op {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700439 mm_pool32a_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800440 mm_pool16a_op,
Tao Baod7db5942015-01-28 10:07:51 -0800441 mm_lbu16_op,
442 mm_move16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700443 mm_addi32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800444 mm_lbu32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800445 mm_sb32_op,
446 mm_lb32_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700447 mm_pool32b_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800448 mm_pool16b_op,
Tao Baod7db5942015-01-28 10:07:51 -0800449 mm_lhu16_op,
450 mm_andi16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700451 mm_addiu32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800452 mm_lhu32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800453 mm_sh32_op,
454 mm_lh32_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700455 mm_pool32i_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800456 mm_pool16c_op,
Tao Baod7db5942015-01-28 10:07:51 -0800457 mm_lwsp16_op,
458 mm_pool16d_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700459 mm_ori32_op,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800460 mm_pool32f_op,
461 mm_pool32s_op,
462 mm_reserved2_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700463 mm_pool32c_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800464 mm_lwgp16_op,
Tao Baod7db5942015-01-28 10:07:51 -0800465 mm_lw16_op,
466 mm_pool16e_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700467 mm_xori32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800468 mm_jals32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800469 mm_addiupc_op,
470 mm_reserved3_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700471 mm_reserved4_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800472 mm_pool16f_op,
Tao Baod7db5942015-01-28 10:07:51 -0800473 mm_sb16_op,
474 mm_beqz16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700475 mm_slti32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800476 mm_beq32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800477 mm_swc132_op,
478 mm_lwc132_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700479 mm_reserved5_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800480 mm_reserved6_op,
Tao Baod7db5942015-01-28 10:07:51 -0800481 mm_sh16_op,
482 mm_bnez16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700483 mm_sltiu32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800484 mm_bne32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800485 mm_sdc132_op,
486 mm_ldc132_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700487 mm_reserved7_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800488 mm_reserved8_op,
Tao Baod7db5942015-01-28 10:07:51 -0800489 mm_swsp16_op,
490 mm_b16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700491 mm_andi32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800492 mm_j32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800493 mm_sd32_op,
494 mm_ld32_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700495 mm_reserved11_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800496 mm_reserved12_op,
Tao Baod7db5942015-01-28 10:07:51 -0800497 mm_sw16_op,
498 mm_li16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700499 mm_jalx32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800500 mm_jal32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800501 mm_sw32_op,
502 mm_lw32_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700503};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800504enum mm_32i_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800505 mm_bltz_op,
506 mm_bltzal_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700507 mm_bgez_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800508 mm_bgezal_op,
Tao Baod7db5942015-01-28 10:07:51 -0800509 mm_blez_op,
510 mm_bnezc_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700511 mm_bgtz_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800512 mm_beqzc_op,
Tao Baod7db5942015-01-28 10:07:51 -0800513 mm_tlti_op,
514 mm_tgei_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700515 mm_tltiu_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800516 mm_tgeiu_op,
Tao Baod7db5942015-01-28 10:07:51 -0800517 mm_tnei_op,
518 mm_lui_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700519 mm_teqi_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800520 mm_reserved13_op,
Tao Baod7db5942015-01-28 10:07:51 -0800521 mm_synci_op,
522 mm_bltzals_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700523 mm_reserved14_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800524 mm_bgezals_op,
Tao Baod7db5942015-01-28 10:07:51 -0800525 mm_bc2f_op,
526 mm_bc2t_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700527 mm_reserved15_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800528 mm_reserved16_op,
Tao Baod7db5942015-01-28 10:07:51 -0800529 mm_reserved17_op,
530 mm_reserved18_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700531 mm_bposge64_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800532 mm_bposge32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800533 mm_bc1f_op,
534 mm_bc1t_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700535 mm_reserved19_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800536 mm_reserved20_op,
Tao Baod7db5942015-01-28 10:07:51 -0800537 mm_bc1any2f_op,
538 mm_bc1any2t_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700539 mm_bc1any4f_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800540 mm_bc1any4t_op,
Christopher Ferris38062f92014-07-09 15:33:25 -0700541};
Elliott Hughesabd62612013-11-08 11:45:48 -0800542enum mm_32a_minor_op {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700543 mm_sll32_op = 0x000,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800544 mm_ins_op = 0x00c,
Tao Baod7db5942015-01-28 10:07:51 -0800545 mm_sllv32_op = 0x010,
546 mm_ext_op = 0x02c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700547 mm_pool32axf_op = 0x03c,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800548 mm_srl32_op = 0x040,
Tao Baod7db5942015-01-28 10:07:51 -0800549 mm_sra_op = 0x080,
550 mm_srlv32_op = 0x090,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700551 mm_rotr_op = 0x0c0,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800552 mm_lwxs_op = 0x118,
Tao Baod7db5942015-01-28 10:07:51 -0800553 mm_addu32_op = 0x150,
554 mm_subu32_op = 0x1d0,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700555 mm_wsbh_op = 0x1ec,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800556 mm_mul_op = 0x210,
Tao Baod7db5942015-01-28 10:07:51 -0800557 mm_and_op = 0x250,
558 mm_or32_op = 0x290,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700559 mm_xor32_op = 0x310,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800560 mm_slt_op = 0x350,
Tao Baod7db5942015-01-28 10:07:51 -0800561 mm_sltu_op = 0x390,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700562};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700563enum mm_32b_func {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800564 mm_lwc2_func = 0x0,
Tao Baod7db5942015-01-28 10:07:51 -0800565 mm_lwp_func = 0x1,
566 mm_ldc2_func = 0x2,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700567 mm_ldp_func = 0x4,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800568 mm_lwm32_func = 0x5,
Tao Baod7db5942015-01-28 10:07:51 -0800569 mm_cache_func = 0x6,
570 mm_ldm_func = 0x7,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700571 mm_swc2_func = 0x8,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800572 mm_swp_func = 0x9,
Tao Baod7db5942015-01-28 10:07:51 -0800573 mm_sdc2_func = 0xa,
574 mm_sdp_func = 0xc,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700575 mm_swm32_func = 0xd,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800576 mm_sdm_func = 0xf,
Elliott Hughesabd62612013-11-08 11:45:48 -0800577};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700578enum mm_32c_func {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700579 mm_pref_func = 0x2,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800580 mm_ll_func = 0x3,
Tao Baod7db5942015-01-28 10:07:51 -0800581 mm_swr_func = 0x9,
582 mm_sc_func = 0xb,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700583 mm_lwu_func = 0xe,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800584};
Elliott Hughesabd62612013-11-08 11:45:48 -0800585enum mm_32axf_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800586 mm_mfc0_op = 0x003,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700587 mm_mtc0_op = 0x00b,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800588 mm_tlbp_op = 0x00d,
Tao Baod7db5942015-01-28 10:07:51 -0800589 mm_mfhi32_op = 0x035,
590 mm_jalr_op = 0x03c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700591 mm_tlbr_op = 0x04d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800592 mm_mflo32_op = 0x075,
Tao Baod7db5942015-01-28 10:07:51 -0800593 mm_jalrhb_op = 0x07c,
594 mm_tlbwi_op = 0x08d,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800595 mm_mthi32_op = 0x0b5,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700596 mm_tlbwr_op = 0x0cd,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800597 mm_mtlo32_op = 0x0f5,
598 mm_di_op = 0x11d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800599 mm_jalrs_op = 0x13c,
Tao Baod7db5942015-01-28 10:07:51 -0800600 mm_jalrshb_op = 0x17c,
601 mm_sync_op = 0x1ad,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700602 mm_syscall_op = 0x22d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800603 mm_wait_op = 0x24d,
Tao Baod7db5942015-01-28 10:07:51 -0800604 mm_eret_op = 0x3cd,
605 mm_divu_op = 0x5dc,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700606};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800607enum mm_32f_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800608 mm_32f_00_op = 0x00,
609 mm_32f_01_op = 0x01,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700610 mm_32f_02_op = 0x02,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800611 mm_32f_10_op = 0x08,
Tao Baod7db5942015-01-28 10:07:51 -0800612 mm_32f_11_op = 0x09,
613 mm_32f_12_op = 0x0a,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700614 mm_32f_20_op = 0x10,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800615 mm_32f_30_op = 0x18,
Tao Baod7db5942015-01-28 10:07:51 -0800616 mm_32f_40_op = 0x20,
617 mm_32f_41_op = 0x21,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700618 mm_32f_42_op = 0x22,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800619 mm_32f_50_op = 0x28,
Tao Baod7db5942015-01-28 10:07:51 -0800620 mm_32f_51_op = 0x29,
621 mm_32f_52_op = 0x2a,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700622 mm_32f_60_op = 0x30,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800623 mm_32f_70_op = 0x38,
Tao Baod7db5942015-01-28 10:07:51 -0800624 mm_32f_73_op = 0x3b,
625 mm_32f_74_op = 0x3c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700626};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800627enum mm_32f_10_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800628 mm_lwxc1_op = 0x1,
629 mm_swxc1_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700630 mm_ldxc1_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800631 mm_sdxc1_op,
Tao Baod7db5942015-01-28 10:07:51 -0800632 mm_luxc1_op,
633 mm_suxc1_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700634};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800635enum mm_32f_func {
Tao Baod7db5942015-01-28 10:07:51 -0800636 mm_lwxc1_func = 0x048,
637 mm_swxc1_func = 0x088,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700638 mm_ldxc1_func = 0x0c8,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800639 mm_sdxc1_func = 0x108,
Elliott Hughesabd62612013-11-08 11:45:48 -0800640};
641enum mm_32f_40_minor_op {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700642 mm_fmovf_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800643 mm_fmovt_op,
Elliott Hughesabd62612013-11-08 11:45:48 -0800644};
645enum mm_32f_60_minor_op {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700646 mm_fadd_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800647 mm_fsub_op,
Tao Baod7db5942015-01-28 10:07:51 -0800648 mm_fmul_op,
649 mm_fdiv_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700650};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800651enum mm_32f_70_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800652 mm_fmovn_op,
653 mm_fmovz_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700654};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800655enum mm_32f_73_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800656 mm_fmov0_op = 0x01,
657 mm_fcvtl_op = 0x04,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700658 mm_movf0_op = 0x05,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800659 mm_frsqrt_op = 0x08,
Tao Baod7db5942015-01-28 10:07:51 -0800660 mm_ffloorl_op = 0x0c,
661 mm_fabs0_op = 0x0d,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700662 mm_fcvtw_op = 0x24,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800663 mm_movt0_op = 0x25,
Tao Baod7db5942015-01-28 10:07:51 -0800664 mm_fsqrt_op = 0x28,
665 mm_ffloorw_op = 0x2c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700666 mm_fneg0_op = 0x2d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800667 mm_cfc1_op = 0x40,
Tao Baod7db5942015-01-28 10:07:51 -0800668 mm_frecip_op = 0x48,
669 mm_fceill_op = 0x4c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700670 mm_fcvtd0_op = 0x4d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800671 mm_ctc1_op = 0x60,
Tao Baod7db5942015-01-28 10:07:51 -0800672 mm_fceilw_op = 0x6c,
673 mm_fcvts0_op = 0x6d,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700674 mm_mfc1_op = 0x80,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800675 mm_fmov1_op = 0x81,
Tao Baod7db5942015-01-28 10:07:51 -0800676 mm_movf1_op = 0x85,
677 mm_ftruncl_op = 0x8c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700678 mm_fabs1_op = 0x8d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800679 mm_mtc1_op = 0xa0,
Tao Baod7db5942015-01-28 10:07:51 -0800680 mm_movt1_op = 0xa5,
681 mm_ftruncw_op = 0xac,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700682 mm_fneg1_op = 0xad,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800683 mm_mfhc1_op = 0xc0,
Tao Baod7db5942015-01-28 10:07:51 -0800684 mm_froundl_op = 0xcc,
685 mm_fcvtd1_op = 0xcd,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700686 mm_mthc1_op = 0xe0,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800687 mm_froundw_op = 0xec,
Tao Baod7db5942015-01-28 10:07:51 -0800688 mm_fcvts1_op = 0xed,
Elliott Hughesabd62612013-11-08 11:45:48 -0800689};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800690enum mm_32s_minor_op {
691 mm_32s_elm_op = 0x16,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800692};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700693enum mm_16c_minor_op {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800694 mm_lwm16_op = 0x04,
Tao Baod7db5942015-01-28 10:07:51 -0800695 mm_swm16_op = 0x05,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800696 mm_jr16_op = 0x0c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700697 mm_jrc_op = 0x0d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800698 mm_jalr16_op = 0x0e,
Tao Baod7db5942015-01-28 10:07:51 -0800699 mm_jalrs16_op = 0x0f,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800700 mm_jraddiusp_op = 0x18,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700701};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800702enum mm_16d_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800703 mm_addius5_func,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800704 mm_addiusp_func,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700705};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800706enum MIPS16e_ops {
Tao Baod7db5942015-01-28 10:07:51 -0800707 MIPS16e_jal_op = 003,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800708 MIPS16e_ld_op = 007,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700709 MIPS16e_i8_op = 014,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800710 MIPS16e_sd_op = 017,
Tao Baod7db5942015-01-28 10:07:51 -0800711 MIPS16e_lb_op = 020,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800712 MIPS16e_lh_op = 021,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700713 MIPS16e_lwsp_op = 022,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800714 MIPS16e_lw_op = 023,
Tao Baod7db5942015-01-28 10:07:51 -0800715 MIPS16e_lbu_op = 024,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800716 MIPS16e_lhu_op = 025,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700717 MIPS16e_lwpc_op = 026,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800718 MIPS16e_lwu_op = 027,
Tao Baod7db5942015-01-28 10:07:51 -0800719 MIPS16e_sb_op = 030,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800720 MIPS16e_sh_op = 031,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700721 MIPS16e_swsp_op = 032,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800722 MIPS16e_sw_op = 033,
Tao Baod7db5942015-01-28 10:07:51 -0800723 MIPS16e_rr_op = 035,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800724 MIPS16e_extend_op = 036,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700725 MIPS16e_i64_op = 037,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800726};
Elliott Hughesabd62612013-11-08 11:45:48 -0800727enum MIPS16e_i64_func {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800728 MIPS16e_ldsp_func,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700729 MIPS16e_sdsp_func,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800730 MIPS16e_sdrasp_func,
Tao Baod7db5942015-01-28 10:07:51 -0800731 MIPS16e_dadjsp_func,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800732 MIPS16e_ldpc_func,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700733};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800734enum MIPS16e_rr_func {
Tao Baod7db5942015-01-28 10:07:51 -0800735 MIPS16e_jr_func,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800736};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700737enum MIPS6e_i8_func {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800738 MIPS16e_swrasp_func = 02,
Tao Baod7db5942015-01-28 10:07:51 -0800739};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800740#define MM_NOP16 0x0c00
Christopher Ferris106b3a82016-08-24 12:15:38 -0700741struct j_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800742 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int target : 26,;
Tao Baod7db5942015-01-28 10:07:51 -0800743 ))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800744};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700745struct i_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800746 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 16,;
Tao Baod7db5942015-01-28 10:07:51 -0800747 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800748};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700749struct u_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800750 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int uimmediate : 16,;
Tao Baod7db5942015-01-28 10:07:51 -0800751 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800752};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700753struct c_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800754 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800755 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800756};
Elliott Hughesabd62612013-11-08 11:45:48 -0800757struct r_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800758 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800759 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800760};
761struct c0r_format {
762 __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,;
763 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800764};
765struct mfmc0_format {
766 __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,;
767 ))))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800768};
769struct co_format {
770 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int co : 1, __BITFIELD_FIELD(unsigned int code : 19, __BITFIELD_FIELD(unsigned int func : 6,;
771 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800772};
Elliott Hughesabd62612013-11-08 11:45:48 -0800773struct p_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800774 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800775 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800776};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700777struct f_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800778 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800779 )))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800780};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700781struct ma_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800782 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800783 )))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800784};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700785struct b_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800786 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int code : 20, __BITFIELD_FIELD(unsigned int func : 6,;
Tao Baod7db5942015-01-28 10:07:51 -0800787 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800788};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700789struct ps_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800790 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800791 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800792};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700793struct v_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800794 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800795 )))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800796};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700797struct msa_mi10_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800798 __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,;
799 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800800};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700801struct spec3_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800802 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800803 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800804};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700805struct fb_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800806 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800807 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800808};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700809struct fp0_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800810 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800811 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800812};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700813struct mm_fp0_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800814 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800815 )))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800816};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700817struct fp1_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800818 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800819 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800820};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700821struct mm_fp1_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800822 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800823 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800824};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700825struct mm_fp2_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800826 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800827 ))))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800828};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700829struct mm_fp3_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800830 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800831 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800832};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700833struct mm_fp4_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800834 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800835 )))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800836};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700837struct mm_fp5_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800838 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800839 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800840};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700841struct fp6_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800842 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800843 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800844};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700845struct mm_fp6_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800846 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800847 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800848};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700849struct mm_i_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800850 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(signed int simmediate : 16,;
Tao Baod7db5942015-01-28 10:07:51 -0800851 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800852};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700853struct mm_m_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800854 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800855 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800856};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700857struct mm_x_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800858 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800859 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800860};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700861struct mm_a_format {
862 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 3, __BITFIELD_FIELD(signed int simmediate : 23,;
863 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800864};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700865struct mm_b0_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800866 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(signed int simmediate : 10, __BITFIELD_FIELD(unsigned int : 16,;
Tao Baod7db5942015-01-28 10:07:51 -0800867 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800868};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700869struct mm_b1_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800870 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 3, __BITFIELD_FIELD(signed int simmediate : 7, __BITFIELD_FIELD(unsigned int : 16,;
Tao Baod7db5942015-01-28 10:07:51 -0800871 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800872};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700873struct mm16_m_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800874 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800875 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800876};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700877struct mm16_rb_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800878 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800879 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800880};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700881struct mm16_r3_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800882 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 3, __BITFIELD_FIELD(signed int simmediate : 7, __BITFIELD_FIELD(unsigned int : 16,;
Tao Baod7db5942015-01-28 10:07:51 -0800883 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800884};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700885struct mm16_r5_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800886 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 5, __BITFIELD_FIELD(unsigned int : 16,;
Tao Baod7db5942015-01-28 10:07:51 -0800887 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800888};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700889struct m16e_rr {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800890 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800891 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800892};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700893struct m16e_jal {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800894 __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,;
Tao Baod7db5942015-01-28 10:07:51 -0800895 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800896};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700897struct m16e_i64 {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800898 __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
Tao Baod7db5942015-01-28 10:07:51 -0800899 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800900};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700901struct m16e_ri64 {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800902 __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int ry : 3, __BITFIELD_FIELD(unsigned int imm : 5,;
Tao Baod7db5942015-01-28 10:07:51 -0800903 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800904};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700905struct m16e_ri {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800906 __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
Tao Baod7db5942015-01-28 10:07:51 -0800907 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800908};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700909struct m16e_rri {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800910 __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int ry : 3, __BITFIELD_FIELD(unsigned int imm : 5,;
Tao Baod7db5942015-01-28 10:07:51 -0800911 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800912};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700913struct m16e_i8 {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800914 __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
Tao Baod7db5942015-01-28 10:07:51 -0800915 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800916};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700917union mips_instruction {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800918 unsigned int word;
Tao Baod7db5942015-01-28 10:07:51 -0800919 unsigned short halfword[2];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800920 unsigned char byte[4];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700921 struct j_format j_format;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800922 struct i_format i_format;
Tao Baod7db5942015-01-28 10:07:51 -0800923 struct u_format u_format;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800924 struct c_format c_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700925 struct r_format r_format;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800926 struct c0r_format c0r_format;
927 struct mfmc0_format mfmc0_format;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800928 struct co_format co_format;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800929 struct p_format p_format;
Tao Baod7db5942015-01-28 10:07:51 -0800930 struct f_format f_format;
931 struct ma_format ma_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700932 struct msa_mi10_format msa_mi10_format;
Tao Baod7db5942015-01-28 10:07:51 -0800933 struct b_format b_format;
934 struct ps_format ps_format;
Tao Baod7db5942015-01-28 10:07:51 -0800935 struct v_format v_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700936 struct spec3_format spec3_format;
Tao Baod7db5942015-01-28 10:07:51 -0800937 struct fb_format fb_format;
938 struct fp0_format fp0_format;
Tao Baod7db5942015-01-28 10:07:51 -0800939 struct mm_fp0_format mm_fp0_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700940 struct fp1_format fp1_format;
Tao Baod7db5942015-01-28 10:07:51 -0800941 struct mm_fp1_format mm_fp1_format;
942 struct mm_fp2_format mm_fp2_format;
Tao Baod7db5942015-01-28 10:07:51 -0800943 struct mm_fp3_format mm_fp3_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700944 struct mm_fp4_format mm_fp4_format;
Tao Baod7db5942015-01-28 10:07:51 -0800945 struct mm_fp5_format mm_fp5_format;
946 struct fp6_format fp6_format;
Tao Baod7db5942015-01-28 10:07:51 -0800947 struct mm_fp6_format mm_fp6_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700948 struct mm_i_format mm_i_format;
Tao Baod7db5942015-01-28 10:07:51 -0800949 struct mm_m_format mm_m_format;
950 struct mm_x_format mm_x_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700951 struct mm_a_format mm_a_format;
Tao Baod7db5942015-01-28 10:07:51 -0800952 struct mm_b0_format mm_b0_format;
953 struct mm_b1_format mm_b1_format;
954 struct mm16_m_format mm16_m_format;
955 struct mm16_rb_format mm16_rb_format;
Tao Baod7db5942015-01-28 10:07:51 -0800956 struct mm16_r3_format mm16_r3_format;
957 struct mm16_r5_format mm16_r5_format;
Elliott Hughesabd62612013-11-08 11:45:48 -0800958};
959union mips16e_instruction {
Tao Baod7db5942015-01-28 10:07:51 -0800960 unsigned int full : 16;
961 struct m16e_rr rr;
962 struct m16e_jal jal;
963 struct m16e_i64 i64;
Tao Baod7db5942015-01-28 10:07:51 -0800964 struct m16e_ri64 ri64;
965 struct m16e_ri ri;
966 struct m16e_rri rri;
967 struct m16e_i8 i8;
Elliott Hughesabd62612013-11-08 11:45:48 -0800968};
969#endif