blob: 6bf1f695deaad09e8e248b032b5827fb5c7cdac1 [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,
Elliott Hughesabd62612013-11-08 11:45:48 -0800318};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700319enum cop0_com_func {
Tao Baod7db5942015-01-28 10:07:51 -0800320 tlbr1_op = 0x01,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800321 tlbw_op = 0x02,
Tao Baod7db5942015-01-28 10:07:51 -0800322 tlbp1_op = 0x08,
323 dctr_op = 0x09,
324 dctw_op = 0x0a
Christopher Ferris05d08e92016-02-04 13:16:38 -0800325};
Christopher Ferris38062f92014-07-09 15:33:25 -0700326enum cop1_fmt {
Tao Baod7db5942015-01-28 10:07:51 -0800327 s_fmt,
328 d_fmt,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800329 e_fmt,
Tao Baod7db5942015-01-28 10:07:51 -0800330 q_fmt,
331 w_fmt,
332 l_fmt
Christopher Ferris05d08e92016-02-04 13:16:38 -0800333};
Christopher Ferris38062f92014-07-09 15:33:25 -0700334enum cop1_sdw_func {
Tao Baod7db5942015-01-28 10:07:51 -0800335 fadd_op = 0x00,
336 fsub_op = 0x01,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800337 fmul_op = 0x02,
Tao Baod7db5942015-01-28 10:07:51 -0800338 fdiv_op = 0x03,
339 fsqrt_op = 0x04,
340 fabs_op = 0x05,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800341 fmov_op = 0x06,
Tao Baod7db5942015-01-28 10:07:51 -0800342 fneg_op = 0x07,
343 froundl_op = 0x08,
344 ftruncl_op = 0x09,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800345 fceill_op = 0x0a,
Tao Baod7db5942015-01-28 10:07:51 -0800346 ffloorl_op = 0x0b,
347 fround_op = 0x0c,
348 ftrunc_op = 0x0d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800349 fceil_op = 0x0e,
Tao Baod7db5942015-01-28 10:07:51 -0800350 ffloor_op = 0x0f,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700351 fsel_op = 0x10,
Tao Baod7db5942015-01-28 10:07:51 -0800352 fmovc_op = 0x11,
353 fmovz_op = 0x12,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800354 fmovn_op = 0x13,
355 fseleqz_op = 0x14,
Tao Baod7db5942015-01-28 10:07:51 -0800356 frecip_op = 0x15,
357 frsqrt_op = 0x16,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800358 fselnez_op = 0x17,
359 fmaddf_op = 0x18,
360 fmsubf_op = 0x19,
361 frint_op = 0x1a,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800362 fclass_op = 0x1b,
363 fmin_op = 0x1c,
364 fmina_op = 0x1d,
365 fmax_op = 0x1e,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800366 fmaxa_op = 0x1f,
Tao Baod7db5942015-01-28 10:07:51 -0800367 fcvts_op = 0x20,
368 fcvtd_op = 0x21,
Tao Baod7db5942015-01-28 10:07:51 -0800369 fcvte_op = 0x22,
370 fcvtw_op = 0x24,
371 fcvtl_op = 0x25,
372 fcmp_op = 0x30
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700373};
Elliott Hughesabd62612013-11-08 11:45:48 -0800374enum cop1x_func {
Tao Baod7db5942015-01-28 10:07:51 -0800375 lwxc1_op = 0x00,
376 ldxc1_op = 0x01,
Tao Baod7db5942015-01-28 10:07:51 -0800377 swxc1_op = 0x08,
378 sdxc1_op = 0x09,
379 pfetch_op = 0x0f,
380 madd_s_op = 0x20,
Tao Baod7db5942015-01-28 10:07:51 -0800381 madd_d_op = 0x21,
382 madd_e_op = 0x22,
383 msub_s_op = 0x28,
384 msub_d_op = 0x29,
Tao Baod7db5942015-01-28 10:07:51 -0800385 msub_e_op = 0x2a,
386 nmadd_s_op = 0x30,
387 nmadd_d_op = 0x31,
388 nmadd_e_op = 0x32,
Tao Baod7db5942015-01-28 10:07:51 -0800389 nmsub_s_op = 0x38,
390 nmsub_d_op = 0x39,
391 nmsub_e_op = 0x3a
Elliott Hughesabd62612013-11-08 11:45:48 -0800392};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700393enum mad_func {
Tao Baod7db5942015-01-28 10:07:51 -0800394 madd_fp_op = 0x08,
395 msub_fp_op = 0x0a,
396 nmadd_fp_op = 0x0c,
Tao Baod7db5942015-01-28 10:07:51 -0800397 nmsub_fp_op = 0x0e
Christopher Ferris106b3a82016-08-24 12:15:38 -0700398};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700399enum ptw_func {
400 lwdir_op = 0x00,
401 lwpte_op = 0x01,
402 lddir_op = 0x02,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700403 ldpte_op = 0x03,
Elliott Hughesabd62612013-11-08 11:45:48 -0800404};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700405enum lx_func {
Tao Baod7db5942015-01-28 10:07:51 -0800406 lwx_op = 0x00,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700407 lhx_op = 0x04,
Tao Baod7db5942015-01-28 10:07:51 -0800408 lbux_op = 0x06,
409 ldx_op = 0x08,
410 lwux_op = 0x10,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700411 lhux_op = 0x14,
Tao Baod7db5942015-01-28 10:07:51 -0800412 lbx_op = 0x16,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700413};
414enum bshfl_func {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700415 wsbh_op = 0x2,
Tao Baod7db5942015-01-28 10:07:51 -0800416 dshd_op = 0x5,
417 seb_op = 0x10,
418 seh_op = 0x18,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700419};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800420enum msa_func {
421 msa_elm_op = 0x19,
422};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800423enum msa_elm {
424 msa_ctc_op = 0x3e,
425 msa_cfc_op = 0x7e,
426};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800427enum msa_mi10_func {
428 msa_ld_op = 8,
429 msa_st_op = 9,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700430};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800431enum msa_2b_fmt {
432 msa_fmt_b = 0,
433 msa_fmt_h = 1,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700434 msa_fmt_w = 2,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800435 msa_fmt_d = 3,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700436};
Christopher Ferris38062f92014-07-09 15:33:25 -0700437enum mm_major_op {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700438 mm_pool32a_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800439 mm_pool16a_op,
Tao Baod7db5942015-01-28 10:07:51 -0800440 mm_lbu16_op,
441 mm_move16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700442 mm_addi32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800443 mm_lbu32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800444 mm_sb32_op,
445 mm_lb32_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700446 mm_pool32b_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800447 mm_pool16b_op,
Tao Baod7db5942015-01-28 10:07:51 -0800448 mm_lhu16_op,
449 mm_andi16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700450 mm_addiu32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800451 mm_lhu32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800452 mm_sh32_op,
453 mm_lh32_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700454 mm_pool32i_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800455 mm_pool16c_op,
Tao Baod7db5942015-01-28 10:07:51 -0800456 mm_lwsp16_op,
457 mm_pool16d_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700458 mm_ori32_op,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800459 mm_pool32f_op,
460 mm_pool32s_op,
461 mm_reserved2_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700462 mm_pool32c_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800463 mm_lwgp16_op,
Tao Baod7db5942015-01-28 10:07:51 -0800464 mm_lw16_op,
465 mm_pool16e_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700466 mm_xori32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800467 mm_jals32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800468 mm_addiupc_op,
469 mm_reserved3_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700470 mm_reserved4_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800471 mm_pool16f_op,
Tao Baod7db5942015-01-28 10:07:51 -0800472 mm_sb16_op,
473 mm_beqz16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700474 mm_slti32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800475 mm_beq32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800476 mm_swc132_op,
477 mm_lwc132_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700478 mm_reserved5_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800479 mm_reserved6_op,
Tao Baod7db5942015-01-28 10:07:51 -0800480 mm_sh16_op,
481 mm_bnez16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700482 mm_sltiu32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800483 mm_bne32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800484 mm_sdc132_op,
485 mm_ldc132_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700486 mm_reserved7_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800487 mm_reserved8_op,
Tao Baod7db5942015-01-28 10:07:51 -0800488 mm_swsp16_op,
489 mm_b16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700490 mm_andi32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800491 mm_j32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800492 mm_sd32_op,
493 mm_ld32_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700494 mm_reserved11_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800495 mm_reserved12_op,
Tao Baod7db5942015-01-28 10:07:51 -0800496 mm_sw16_op,
497 mm_li16_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700498 mm_jalx32_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800499 mm_jal32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800500 mm_sw32_op,
501 mm_lw32_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700502};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800503enum mm_32i_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800504 mm_bltz_op,
505 mm_bltzal_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700506 mm_bgez_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800507 mm_bgezal_op,
Tao Baod7db5942015-01-28 10:07:51 -0800508 mm_blez_op,
509 mm_bnezc_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700510 mm_bgtz_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800511 mm_beqzc_op,
Tao Baod7db5942015-01-28 10:07:51 -0800512 mm_tlti_op,
513 mm_tgei_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700514 mm_tltiu_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800515 mm_tgeiu_op,
Tao Baod7db5942015-01-28 10:07:51 -0800516 mm_tnei_op,
517 mm_lui_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700518 mm_teqi_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800519 mm_reserved13_op,
Tao Baod7db5942015-01-28 10:07:51 -0800520 mm_synci_op,
521 mm_bltzals_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700522 mm_reserved14_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800523 mm_bgezals_op,
Tao Baod7db5942015-01-28 10:07:51 -0800524 mm_bc2f_op,
525 mm_bc2t_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700526 mm_reserved15_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800527 mm_reserved16_op,
Tao Baod7db5942015-01-28 10:07:51 -0800528 mm_reserved17_op,
529 mm_reserved18_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700530 mm_bposge64_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800531 mm_bposge32_op,
Tao Baod7db5942015-01-28 10:07:51 -0800532 mm_bc1f_op,
533 mm_bc1t_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700534 mm_reserved19_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800535 mm_reserved20_op,
Tao Baod7db5942015-01-28 10:07:51 -0800536 mm_bc1any2f_op,
537 mm_bc1any2t_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700538 mm_bc1any4f_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800539 mm_bc1any4t_op,
Christopher Ferris38062f92014-07-09 15:33:25 -0700540};
Elliott Hughesabd62612013-11-08 11:45:48 -0800541enum mm_32a_minor_op {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700542 mm_sll32_op = 0x000,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800543 mm_ins_op = 0x00c,
Tao Baod7db5942015-01-28 10:07:51 -0800544 mm_sllv32_op = 0x010,
545 mm_ext_op = 0x02c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700546 mm_pool32axf_op = 0x03c,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800547 mm_srl32_op = 0x040,
Tao Baod7db5942015-01-28 10:07:51 -0800548 mm_sra_op = 0x080,
549 mm_srlv32_op = 0x090,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700550 mm_rotr_op = 0x0c0,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800551 mm_lwxs_op = 0x118,
Tao Baod7db5942015-01-28 10:07:51 -0800552 mm_addu32_op = 0x150,
553 mm_subu32_op = 0x1d0,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700554 mm_wsbh_op = 0x1ec,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800555 mm_mul_op = 0x210,
Tao Baod7db5942015-01-28 10:07:51 -0800556 mm_and_op = 0x250,
557 mm_or32_op = 0x290,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700558 mm_xor32_op = 0x310,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800559 mm_slt_op = 0x350,
Tao Baod7db5942015-01-28 10:07:51 -0800560 mm_sltu_op = 0x390,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700561};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700562enum mm_32b_func {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800563 mm_lwc2_func = 0x0,
Tao Baod7db5942015-01-28 10:07:51 -0800564 mm_lwp_func = 0x1,
565 mm_ldc2_func = 0x2,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700566 mm_ldp_func = 0x4,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800567 mm_lwm32_func = 0x5,
Tao Baod7db5942015-01-28 10:07:51 -0800568 mm_cache_func = 0x6,
569 mm_ldm_func = 0x7,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700570 mm_swc2_func = 0x8,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800571 mm_swp_func = 0x9,
Tao Baod7db5942015-01-28 10:07:51 -0800572 mm_sdc2_func = 0xa,
573 mm_sdp_func = 0xc,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700574 mm_swm32_func = 0xd,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800575 mm_sdm_func = 0xf,
Elliott Hughesabd62612013-11-08 11:45:48 -0800576};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700577enum mm_32c_func {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700578 mm_pref_func = 0x2,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800579 mm_ll_func = 0x3,
Tao Baod7db5942015-01-28 10:07:51 -0800580 mm_swr_func = 0x9,
581 mm_sc_func = 0xb,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700582 mm_lwu_func = 0xe,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800583};
Elliott Hughesabd62612013-11-08 11:45:48 -0800584enum mm_32axf_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800585 mm_mfc0_op = 0x003,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700586 mm_mtc0_op = 0x00b,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800587 mm_tlbp_op = 0x00d,
Tao Baod7db5942015-01-28 10:07:51 -0800588 mm_mfhi32_op = 0x035,
589 mm_jalr_op = 0x03c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700590 mm_tlbr_op = 0x04d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800591 mm_mflo32_op = 0x075,
Tao Baod7db5942015-01-28 10:07:51 -0800592 mm_jalrhb_op = 0x07c,
593 mm_tlbwi_op = 0x08d,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800594 mm_mthi32_op = 0x0b5,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700595 mm_tlbwr_op = 0x0cd,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800596 mm_mtlo32_op = 0x0f5,
597 mm_di_op = 0x11d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800598 mm_jalrs_op = 0x13c,
Tao Baod7db5942015-01-28 10:07:51 -0800599 mm_jalrshb_op = 0x17c,
600 mm_sync_op = 0x1ad,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700601 mm_syscall_op = 0x22d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800602 mm_wait_op = 0x24d,
Tao Baod7db5942015-01-28 10:07:51 -0800603 mm_eret_op = 0x3cd,
604 mm_divu_op = 0x5dc,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700605};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800606enum mm_32f_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800607 mm_32f_00_op = 0x00,
608 mm_32f_01_op = 0x01,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700609 mm_32f_02_op = 0x02,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800610 mm_32f_10_op = 0x08,
Tao Baod7db5942015-01-28 10:07:51 -0800611 mm_32f_11_op = 0x09,
612 mm_32f_12_op = 0x0a,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700613 mm_32f_20_op = 0x10,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800614 mm_32f_30_op = 0x18,
Tao Baod7db5942015-01-28 10:07:51 -0800615 mm_32f_40_op = 0x20,
616 mm_32f_41_op = 0x21,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700617 mm_32f_42_op = 0x22,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800618 mm_32f_50_op = 0x28,
Tao Baod7db5942015-01-28 10:07:51 -0800619 mm_32f_51_op = 0x29,
620 mm_32f_52_op = 0x2a,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700621 mm_32f_60_op = 0x30,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800622 mm_32f_70_op = 0x38,
Tao Baod7db5942015-01-28 10:07:51 -0800623 mm_32f_73_op = 0x3b,
624 mm_32f_74_op = 0x3c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700625};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800626enum mm_32f_10_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800627 mm_lwxc1_op = 0x1,
628 mm_swxc1_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700629 mm_ldxc1_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800630 mm_sdxc1_op,
Tao Baod7db5942015-01-28 10:07:51 -0800631 mm_luxc1_op,
632 mm_suxc1_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700633};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800634enum mm_32f_func {
Tao Baod7db5942015-01-28 10:07:51 -0800635 mm_lwxc1_func = 0x048,
636 mm_swxc1_func = 0x088,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700637 mm_ldxc1_func = 0x0c8,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800638 mm_sdxc1_func = 0x108,
Elliott Hughesabd62612013-11-08 11:45:48 -0800639};
640enum mm_32f_40_minor_op {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700641 mm_fmovf_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800642 mm_fmovt_op,
Elliott Hughesabd62612013-11-08 11:45:48 -0800643};
644enum mm_32f_60_minor_op {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700645 mm_fadd_op,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800646 mm_fsub_op,
Tao Baod7db5942015-01-28 10:07:51 -0800647 mm_fmul_op,
648 mm_fdiv_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700649};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800650enum mm_32f_70_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800651 mm_fmovn_op,
652 mm_fmovz_op,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700653};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800654enum mm_32f_73_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800655 mm_fmov0_op = 0x01,
656 mm_fcvtl_op = 0x04,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700657 mm_movf0_op = 0x05,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800658 mm_frsqrt_op = 0x08,
Tao Baod7db5942015-01-28 10:07:51 -0800659 mm_ffloorl_op = 0x0c,
660 mm_fabs0_op = 0x0d,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700661 mm_fcvtw_op = 0x24,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800662 mm_movt0_op = 0x25,
Tao Baod7db5942015-01-28 10:07:51 -0800663 mm_fsqrt_op = 0x28,
664 mm_ffloorw_op = 0x2c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700665 mm_fneg0_op = 0x2d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800666 mm_cfc1_op = 0x40,
Tao Baod7db5942015-01-28 10:07:51 -0800667 mm_frecip_op = 0x48,
668 mm_fceill_op = 0x4c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700669 mm_fcvtd0_op = 0x4d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800670 mm_ctc1_op = 0x60,
Tao Baod7db5942015-01-28 10:07:51 -0800671 mm_fceilw_op = 0x6c,
672 mm_fcvts0_op = 0x6d,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700673 mm_mfc1_op = 0x80,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800674 mm_fmov1_op = 0x81,
Tao Baod7db5942015-01-28 10:07:51 -0800675 mm_movf1_op = 0x85,
676 mm_ftruncl_op = 0x8c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700677 mm_fabs1_op = 0x8d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800678 mm_mtc1_op = 0xa0,
Tao Baod7db5942015-01-28 10:07:51 -0800679 mm_movt1_op = 0xa5,
680 mm_ftruncw_op = 0xac,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700681 mm_fneg1_op = 0xad,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800682 mm_mfhc1_op = 0xc0,
Tao Baod7db5942015-01-28 10:07:51 -0800683 mm_froundl_op = 0xcc,
684 mm_fcvtd1_op = 0xcd,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700685 mm_mthc1_op = 0xe0,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800686 mm_froundw_op = 0xec,
Tao Baod7db5942015-01-28 10:07:51 -0800687 mm_fcvts1_op = 0xed,
Elliott Hughesabd62612013-11-08 11:45:48 -0800688};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800689enum mm_32s_minor_op {
690 mm_32s_elm_op = 0x16,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800691};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700692enum mm_16c_minor_op {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800693 mm_lwm16_op = 0x04,
Tao Baod7db5942015-01-28 10:07:51 -0800694 mm_swm16_op = 0x05,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800695 mm_jr16_op = 0x0c,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700696 mm_jrc_op = 0x0d,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800697 mm_jalr16_op = 0x0e,
Tao Baod7db5942015-01-28 10:07:51 -0800698 mm_jalrs16_op = 0x0f,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800699 mm_jraddiusp_op = 0x18,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700700};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800701enum mm_16d_minor_op {
Tao Baod7db5942015-01-28 10:07:51 -0800702 mm_addius5_func,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800703 mm_addiusp_func,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700704};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800705enum MIPS16e_ops {
Tao Baod7db5942015-01-28 10:07:51 -0800706 MIPS16e_jal_op = 003,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800707 MIPS16e_ld_op = 007,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700708 MIPS16e_i8_op = 014,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800709 MIPS16e_sd_op = 017,
Tao Baod7db5942015-01-28 10:07:51 -0800710 MIPS16e_lb_op = 020,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800711 MIPS16e_lh_op = 021,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700712 MIPS16e_lwsp_op = 022,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800713 MIPS16e_lw_op = 023,
Tao Baod7db5942015-01-28 10:07:51 -0800714 MIPS16e_lbu_op = 024,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800715 MIPS16e_lhu_op = 025,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700716 MIPS16e_lwpc_op = 026,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800717 MIPS16e_lwu_op = 027,
Tao Baod7db5942015-01-28 10:07:51 -0800718 MIPS16e_sb_op = 030,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800719 MIPS16e_sh_op = 031,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700720 MIPS16e_swsp_op = 032,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800721 MIPS16e_sw_op = 033,
Tao Baod7db5942015-01-28 10:07:51 -0800722 MIPS16e_rr_op = 035,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800723 MIPS16e_extend_op = 036,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700724 MIPS16e_i64_op = 037,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800725};
Elliott Hughesabd62612013-11-08 11:45:48 -0800726enum MIPS16e_i64_func {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800727 MIPS16e_ldsp_func,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700728 MIPS16e_sdsp_func,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800729 MIPS16e_sdrasp_func,
Tao Baod7db5942015-01-28 10:07:51 -0800730 MIPS16e_dadjsp_func,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800731 MIPS16e_ldpc_func,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700732};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800733enum MIPS16e_rr_func {
Tao Baod7db5942015-01-28 10:07:51 -0800734 MIPS16e_jr_func,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800735};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700736enum MIPS6e_i8_func {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800737 MIPS16e_swrasp_func = 02,
Tao Baod7db5942015-01-28 10:07:51 -0800738};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800739#define MM_NOP16 0x0c00
Christopher Ferris106b3a82016-08-24 12:15:38 -0700740struct j_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800741 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int target : 26,;
Tao Baod7db5942015-01-28 10:07:51 -0800742 ))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800743};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700744struct i_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800745 __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 -0800746 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800747};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700748struct u_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800749 __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 -0800750 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800751};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700752struct c_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800753 __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 -0800754 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800755};
Elliott Hughesabd62612013-11-08 11:45:48 -0800756struct r_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800757 __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 -0800758 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800759};
760struct 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 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800763};
764struct 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 ))))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800767};
768struct 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 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800771};
Elliott Hughesabd62612013-11-08 11:45:48 -0800772struct p_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800773 __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 -0800774 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800775};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700776struct f_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800777 __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 -0800778 )))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800779};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700780struct ma_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800781 __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 -0800782 )))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800783};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700784struct b_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800785 __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 -0800786 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800787};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700788struct ps_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800789 __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 -0800790 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800791};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700792struct v_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800793 __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 -0800794 )))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800795};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700796struct msa_mi10_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800797 __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 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800799};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700800struct spec3_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800801 __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 -0800802 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800803};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700804struct fb_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800805 __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 -0800806 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800807};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700808struct fp0_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800809 __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 -0800810 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800811};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700812struct mm_fp0_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800813 __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 -0800814 )))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800815};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700816struct fp1_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800817 __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 -0800818 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800819};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700820struct mm_fp1_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800821 __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 -0800822 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800823};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700824struct mm_fp2_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800825 __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 -0800826 ))))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800827};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700828struct mm_fp3_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800829 __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 -0800830 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800831};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700832struct mm_fp4_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800833 __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 -0800834 )))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800835};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700836struct mm_fp5_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800837 __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 -0800838 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800839};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700840struct fp6_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800841 __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 -0800842 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800843};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700844struct mm_fp6_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800845 __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 -0800846 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800847};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700848struct mm_i_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800849 __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 -0800850 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800851};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700852struct mm_m_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800853 __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 -0800854 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800855};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700856struct mm_x_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800857 __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 -0800858 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800859};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700860struct mm_a_format {
861 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 3, __BITFIELD_FIELD(signed int simmediate : 23,;
862 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800863};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700864struct mm_b0_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800865 __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(signed int simmediate : 10, __BITFIELD_FIELD(unsigned int : 16,;
Tao Baod7db5942015-01-28 10:07:51 -0800866 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800867};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700868struct mm_b1_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800869 __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 -0800870 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800871};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700872struct mm16_m_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800873 __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 -0800874 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800875};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700876struct mm16_rb_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800877 __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 -0800878 )))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800879};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700880struct mm16_r3_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800881 __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 -0800882 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800883};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700884struct mm16_r5_format {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800885 __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 -0800886 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800887};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700888struct m16e_rr {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800889 __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 -0800890 ))))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800891};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700892struct m16e_jal {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800893 __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 -0800894 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800895};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700896struct m16e_i64 {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800897 __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 -0800898 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800899};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700900struct m16e_ri64 {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800901 __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 -0800902 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800903};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700904struct m16e_ri {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800905 __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 -0800906 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800907};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700908struct m16e_rri {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800909 __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 -0800910 ))))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800911};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700912struct m16e_i8 {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800913 __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 -0800914 )))
Christopher Ferris49f525c2016-12-12 14:55:36 -0800915};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700916union mips_instruction {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800917 unsigned int word;
Tao Baod7db5942015-01-28 10:07:51 -0800918 unsigned short halfword[2];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800919 unsigned char byte[4];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700920 struct j_format j_format;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800921 struct i_format i_format;
Tao Baod7db5942015-01-28 10:07:51 -0800922 struct u_format u_format;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800923 struct c_format c_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700924 struct r_format r_format;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800925 struct c0r_format c0r_format;
926 struct mfmc0_format mfmc0_format;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800927 struct co_format co_format;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800928 struct p_format p_format;
Tao Baod7db5942015-01-28 10:07:51 -0800929 struct f_format f_format;
930 struct ma_format ma_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700931 struct msa_mi10_format msa_mi10_format;
Tao Baod7db5942015-01-28 10:07:51 -0800932 struct b_format b_format;
933 struct ps_format ps_format;
Tao Baod7db5942015-01-28 10:07:51 -0800934 struct v_format v_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700935 struct spec3_format spec3_format;
Tao Baod7db5942015-01-28 10:07:51 -0800936 struct fb_format fb_format;
937 struct fp0_format fp0_format;
Tao Baod7db5942015-01-28 10:07:51 -0800938 struct mm_fp0_format mm_fp0_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700939 struct fp1_format fp1_format;
Tao Baod7db5942015-01-28 10:07:51 -0800940 struct mm_fp1_format mm_fp1_format;
941 struct mm_fp2_format mm_fp2_format;
Tao Baod7db5942015-01-28 10:07:51 -0800942 struct mm_fp3_format mm_fp3_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700943 struct mm_fp4_format mm_fp4_format;
Tao Baod7db5942015-01-28 10:07:51 -0800944 struct mm_fp5_format mm_fp5_format;
945 struct fp6_format fp6_format;
Tao Baod7db5942015-01-28 10:07:51 -0800946 struct mm_fp6_format mm_fp6_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700947 struct mm_i_format mm_i_format;
Tao Baod7db5942015-01-28 10:07:51 -0800948 struct mm_m_format mm_m_format;
949 struct mm_x_format mm_x_format;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700950 struct mm_a_format mm_a_format;
Tao Baod7db5942015-01-28 10:07:51 -0800951 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;
Tao Baod7db5942015-01-28 10:07:51 -0800955 struct mm16_r3_format mm16_r3_format;
956 struct mm16_r5_format mm16_r5_format;
Elliott Hughesabd62612013-11-08 11:45:48 -0800957};
958union mips16e_instruction {
Tao Baod7db5942015-01-28 10:07:51 -0800959 unsigned int full : 16;
960 struct m16e_rr rr;
961 struct m16e_jal jal;
962 struct m16e_i64 i64;
Tao Baod7db5942015-01-28 10:07:51 -0800963 struct m16e_ri64 ri64;
964 struct m16e_ri ri;
965 struct m16e_rri rri;
966 struct m16e_i8 i8;
Elliott Hughesabd62612013-11-08 11:45:48 -0800967};
968#endif