/*
 * Format of an instruction in memory.
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 1996, 2000 by Ralf Baechle
 * Copyright (C) 2006 by Thiemo Seufer
 * Copyright (C) 2012 MIPS Technologies, Inc.  All rights reserved.
 */
#ifndef _UAPI_ASM_INST_H
#define _UAPI_ASM_INST_H

/*
 * Major opcodes; before MIPS IV cop1x was called cop3.
 */
enum major_op {
	spec_op, bcond_op, j_op, jal_op,
	beq_op, bne_op, blez_op, bgtz_op,
	addi_op, addiu_op, slti_op, sltiu_op,
	andi_op, ori_op, xori_op, lui_op,
	cop0_op, cop1_op, cop2_op, cop1x_op,
	beql_op, bnel_op, blezl_op, bgtzl_op,
	daddi_op, daddiu_op, ldl_op, ldr_op,
	spec2_op, jalx_op, mdmx_op, spec3_op,
	lb_op, lh_op, lwl_op, lw_op,
	lbu_op, lhu_op, lwr_op, lwu_op,
	sb_op, sh_op, swl_op, sw_op,
	sdl_op, sdr_op, swr_op, cache_op,
	ll_op, lwc1_op, lwc2_op, pref_op,
	lld_op, ldc1_op, ldc2_op, ld_op,
	sc_op, swc1_op, swc2_op, major_3b_op,
	scd_op, sdc1_op, sdc2_op, sd_op
};

/*
 * func field of spec opcode.
 */
enum spec_op {
	sll_op, movc_op, srl_op, sra_op,
	sllv_op, pmon_op, srlv_op, srav_op,
	jr_op, jalr_op, movz_op, movn_op,
	syscall_op, break_op, spim_op, sync_op,
	mfhi_op, mthi_op, mflo_op, mtlo_op,
	dsllv_op, spec2_unused_op, dsrlv_op, dsrav_op,
	mult_op, multu_op, div_op, divu_op,
	dmult_op, dmultu_op, ddiv_op, ddivu_op,
	add_op, addu_op, sub_op, subu_op,
	and_op, or_op, xor_op, nor_op,
	spec3_unused_op, spec4_unused_op, slt_op, sltu_op,
	dadd_op, daddu_op, dsub_op, dsubu_op,
	tge_op, tgeu_op, tlt_op, tltu_op,
	teq_op, spec5_unused_op, tne_op, spec6_unused_op,
	dsll_op, spec7_unused_op, dsrl_op, dsra_op,
	dsll32_op, spec8_unused_op, dsrl32_op, dsra32_op
};

/*
 * func field of spec2 opcode.
 */
enum spec2_op {
	madd_op, maddu_op, mul_op, spec2_3_unused_op,
	msub_op, msubu_op, /* more unused ops */
	clz_op = 0x20, clo_op,
	dclz_op = 0x24, dclo_op,
	sdbpp_op = 0x3f
};

/*
 * func field of spec3 opcode.
 */
enum spec3_op {
	ext_op, dextm_op, dextu_op, dext_op,
	ins_op, dinsm_op, dinsu_op, dins_op,
	lx_op = 0x0a,
	bshfl_op = 0x20,
	dbshfl_op = 0x24,
	rdhwr_op = 0x3b
};

/*
 * rt field of bcond opcodes.
 */
enum rt_op {
	bltz_op, bgez_op, bltzl_op, bgezl_op,
	spimi_op, unused_rt_op_0x05, unused_rt_op_0x06, unused_rt_op_0x07,
	tgei_op, tgeiu_op, tlti_op, tltiu_op,
	teqi_op, unused_0x0d_rt_op, tnei_op, unused_0x0f_rt_op,
	bltzal_op, bgezal_op, bltzall_op, bgezall_op,
	rt_op_0x14, rt_op_0x15, rt_op_0x16, rt_op_0x17,
	rt_op_0x18, rt_op_0x19, rt_op_0x1a, rt_op_0x1b,
	bposge32_op, rt_op_0x1d, rt_op_0x1e, rt_op_0x1f
};

/*
 * rs field of cop opcodes.
 */
enum cop_op {
	mfc_op	      = 0x00, dmfc_op	    = 0x01,
	cfc_op	      = 0x02, mfhc_op	    = 0x03,
	mtc_op        = 0x04, dmtc_op	    = 0x05,
	ctc_op	      = 0x06, mthc_op	    = 0x07,
	bc_op	      = 0x08, cop_op	    = 0x10,
	copm_op	      = 0x18
};

/*
 * rt field of cop.bc_op opcodes
 */
enum bcop_op {
	bcf_op, bct_op, bcfl_op, bctl_op
};

/*
 * func field of cop0 coi opcodes.
 */
enum cop0_coi_func {
	tlbr_op	      = 0x01, tlbwi_op	    = 0x02,
	tlbwr_op      = 0x06, tlbp_op	    = 0x08,
	rfe_op	      = 0x10, eret_op	    = 0x18
};

/*
 * func field of cop0 com opcodes.
 */
enum cop0_com_func {
	tlbr1_op      = 0x01, tlbw_op	    = 0x02,
	tlbp1_op      = 0x08, dctr_op	    = 0x09,
	dctw_op	      = 0x0a
};

/*
 * fmt field of cop1 opcodes.
 */
enum cop1_fmt {
	s_fmt, d_fmt, e_fmt, q_fmt,
	w_fmt, l_fmt
};

/*
 * func field of cop1 instructions using d, s or w format.
 */
enum cop1_sdw_func {
	fadd_op	     =	0x00, fsub_op	   =  0x01,
	fmul_op	     =	0x02, fdiv_op	   =  0x03,
	fsqrt_op     =	0x04, fabs_op	   =  0x05,
	fmov_op	     =	0x06, fneg_op	   =  0x07,
	froundl_op   =	0x08, ftruncl_op   =  0x09,
	fceill_op    =	0x0a, ffloorl_op   =  0x0b,
	fround_op    =	0x0c, ftrunc_op	   =  0x0d,
	fceil_op     =	0x0e, ffloor_op	   =  0x0f,
	fmovc_op     =	0x11, fmovz_op	   =  0x12,
	fmovn_op     =	0x13, frecip_op	   =  0x15,
	frsqrt_op    =	0x16, fcvts_op	   =  0x20,
	fcvtd_op     =	0x21, fcvte_op	   =  0x22,
	fcvtw_op     =	0x24, fcvtl_op	   =  0x25,
	fcmp_op	     =	0x30
};

/*
 * func field of cop1x opcodes (MIPS IV).
 */
enum cop1x_func {
	lwxc1_op     =	0x00, ldxc1_op	   =  0x01,
	swxc1_op     =  0x08, sdxc1_op	   =  0x09,
	pfetch_op    =	0x0f, madd_s_op	   =  0x20,
	madd_d_op    =	0x21, madd_e_op	   =  0x22,
	msub_s_op    =	0x28, msub_d_op	   =  0x29,
	msub_e_op    =	0x2a, nmadd_s_op   =  0x30,
	nmadd_d_op   =	0x31, nmadd_e_op   =  0x32,
	nmsub_s_op   =	0x38, nmsub_d_op   =  0x39,
	nmsub_e_op   =	0x3a
};

/*
 * func field for mad opcodes (MIPS IV).
 */
enum mad_func {
	madd_fp_op	= 0x08, msub_fp_op	= 0x0a,
	nmadd_fp_op	= 0x0c, nmsub_fp_op	= 0x0e
};

/*
 * func field for special3 lx opcodes (Cavium Octeon).
 */
enum lx_func {
	lwx_op	= 0x00,
	lhx_op	= 0x04,
	lbux_op = 0x06,
	ldx_op	= 0x08,
	lwux_op = 0x10,
	lhux_op = 0x14,
	lbx_op	= 0x16,
};

/*
 * (microMIPS) Major opcodes.
 */
enum mm_major_op {
	mm_pool32a_op, mm_pool16a_op, mm_lbu16_op, mm_move16_op,
	mm_addi32_op, mm_lbu32_op, mm_sb32_op, mm_lb32_op,
	mm_pool32b_op, mm_pool16b_op, mm_lhu16_op, mm_andi16_op,
	mm_addiu32_op, mm_lhu32_op, mm_sh32_op, mm_lh32_op,
	mm_pool32i_op, mm_pool16c_op, mm_lwsp16_op, mm_pool16d_op,
	mm_ori32_op, mm_pool32f_op, mm_reserved1_op, mm_reserved2_op,
	mm_pool32c_op, mm_lwgp16_op, mm_lw16_op, mm_pool16e_op,
	mm_xori32_op, mm_jals32_op, mm_addiupc_op, mm_reserved3_op,
	mm_reserved4_op, mm_pool16f_op, mm_sb16_op, mm_beqz16_op,
	mm_slti32_op, mm_beq32_op, mm_swc132_op, mm_lwc132_op,
	mm_reserved5_op, mm_reserved6_op, mm_sh16_op, mm_bnez16_op,
	mm_sltiu32_op, mm_bne32_op, mm_sdc132_op, mm_ldc132_op,
	mm_reserved7_op, mm_reserved8_op, mm_swsp16_op, mm_b16_op,
	mm_andi32_op, mm_j32_op, mm_sd32_op, mm_ld32_op,
	mm_reserved11_op, mm_reserved12_op, mm_sw16_op, mm_li16_op,
	mm_jalx32_op, mm_jal32_op, mm_sw32_op, mm_lw32_op,
};

/*
 * (microMIPS) POOL32I minor opcodes.
 */
enum mm_32i_minor_op {
	mm_bltz_op, mm_bltzal_op, mm_bgez_op, mm_bgezal_op,
	mm_blez_op, mm_bnezc_op, mm_bgtz_op, mm_beqzc_op,
	mm_tlti_op, mm_tgei_op, mm_tltiu_op, mm_tgeiu_op,
	mm_tnei_op, mm_lui_op, mm_teqi_op, mm_reserved13_op,
	mm_synci_op, mm_bltzals_op, mm_reserved14_op, mm_bgezals_op,
	mm_bc2f_op, mm_bc2t_op, mm_reserved15_op, mm_reserved16_op,
	mm_reserved17_op, mm_reserved18_op, mm_bposge64_op, mm_bposge32_op,
	mm_bc1f_op, mm_bc1t_op, mm_reserved19_op, mm_reserved20_op,
	mm_bc1any2f_op, mm_bc1any2t_op, mm_bc1any4f_op, mm_bc1any4t_op,
};

/*
 * (microMIPS) POOL32A minor opcodes.
 */
enum mm_32a_minor_op {
	mm_sll32_op = 0x000,
	mm_ins_op = 0x00c,
	mm_ext_op = 0x02c,
	mm_pool32axf_op = 0x03c,
	mm_srl32_op = 0x040,
	mm_sra_op = 0x080,
	mm_rotr_op = 0x0c0,
	mm_lwxs_op = 0x118,
	mm_addu32_op = 0x150,
	mm_subu32_op = 0x1d0,
	mm_and_op = 0x250,
	mm_or32_op = 0x290,
	mm_xor32_op = 0x310,
};

/*
 * (microMIPS) POOL32B functions.
 */
enum mm_32b_func {
	mm_lwc2_func = 0x0,
	mm_lwp_func = 0x1,
	mm_ldc2_func = 0x2,
	mm_ldp_func = 0x4,
	mm_lwm32_func = 0x5,
	mm_cache_func = 0x6,
	mm_ldm_func = 0x7,
	mm_swc2_func = 0x8,
	mm_swp_func = 0x9,
	mm_sdc2_func = 0xa,
	mm_sdp_func = 0xc,
	mm_swm32_func = 0xd,
	mm_sdm_func = 0xf,
};

/*
 * (microMIPS) POOL32C functions.
 */
enum mm_32c_func {
	mm_pref_func = 0x2,
	mm_ll_func = 0x3,
	mm_swr_func = 0x9,
	mm_sc_func = 0xb,
	mm_lwu_func = 0xe,
};

/*
 * (microMIPS) POOL32AXF minor opcodes.
 */
enum mm_32axf_minor_op {
	mm_mfc0_op = 0x003,
	mm_mtc0_op = 0x00b,
	mm_tlbp_op = 0x00d,
	mm_jalr_op = 0x03c,
	mm_tlbr_op = 0x04d,
	mm_jalrhb_op = 0x07c,
	mm_tlbwi_op = 0x08d,
	mm_tlbwr_op = 0x0cd,
	mm_jalrs_op = 0x13c,
	mm_jalrshb_op = 0x17c,
	mm_syscall_op = 0x22d,
	mm_eret_op = 0x3cd,
};

/*
 * (microMIPS) POOL32F minor opcodes.
 */
enum mm_32f_minor_op {
	mm_32f_00_op = 0x00,
	mm_32f_01_op = 0x01,
	mm_32f_02_op = 0x02,
	mm_32f_10_op = 0x08,
	mm_32f_11_op = 0x09,
	mm_32f_12_op = 0x0a,
	mm_32f_20_op = 0x10,
	mm_32f_30_op = 0x18,
	mm_32f_40_op = 0x20,
	mm_32f_41_op = 0x21,
	mm_32f_42_op = 0x22,
	mm_32f_50_op = 0x28,
	mm_32f_51_op = 0x29,
	mm_32f_52_op = 0x2a,
	mm_32f_60_op = 0x30,
	mm_32f_70_op = 0x38,
	mm_32f_73_op = 0x3b,
	mm_32f_74_op = 0x3c,
};

/*
 * (microMIPS) POOL32F secondary minor opcodes.
 */
enum mm_32f_10_minor_op {
	mm_lwxc1_op = 0x1,
	mm_swxc1_op,
	mm_ldxc1_op,
	mm_sdxc1_op,
	mm_luxc1_op,
	mm_suxc1_op,
};

enum mm_32f_func {
	mm_lwxc1_func = 0x048,
	mm_swxc1_func = 0x088,
	mm_ldxc1_func = 0x0c8,
	mm_sdxc1_func = 0x108,
};

/*
 * (microMIPS) POOL32F secondary minor opcodes.
 */
enum mm_32f_40_minor_op {
	mm_fmovf_op,
	mm_fmovt_op,
};

/*
 * (microMIPS) POOL32F secondary minor opcodes.
 */
enum mm_32f_60_minor_op {
	mm_fadd_op,
	mm_fsub_op,
	mm_fmul_op,
	mm_fdiv_op,
};

/*
 * (microMIPS) POOL32F secondary minor opcodes.
 */
enum mm_32f_70_minor_op {
	mm_fmovn_op,
	mm_fmovz_op,
};

/*
 * (microMIPS) POOL32FXF secondary minor opcodes for POOL32F.
 */
enum mm_32f_73_minor_op {
	mm_fmov0_op = 0x01,
	mm_fcvtl_op = 0x04,
	mm_movf0_op = 0x05,
	mm_frsqrt_op = 0x08,
	mm_ffloorl_op = 0x0c,
	mm_fabs0_op = 0x0d,
	mm_fcvtw_op = 0x24,
	mm_movt0_op = 0x25,
	mm_fsqrt_op = 0x28,
	mm_ffloorw_op = 0x2c,
	mm_fneg0_op = 0x2d,
	mm_cfc1_op = 0x40,
	mm_frecip_op = 0x48,
	mm_fceill_op = 0x4c,
	mm_fcvtd0_op = 0x4d,
	mm_ctc1_op = 0x60,
	mm_fceilw_op = 0x6c,
	mm_fcvts0_op = 0x6d,
	mm_mfc1_op = 0x80,
	mm_fmov1_op = 0x81,
	mm_movf1_op = 0x85,
	mm_ftruncl_op = 0x8c,
	mm_fabs1_op = 0x8d,
	mm_mtc1_op = 0xa0,
	mm_movt1_op = 0xa5,
	mm_ftruncw_op = 0xac,
	mm_fneg1_op = 0xad,
	mm_mfhc1_op = 0xc0,
	mm_froundl_op = 0xcc,
	mm_fcvtd1_op = 0xcd,
	mm_mthc1_op = 0xe0,
	mm_froundw_op = 0xec,
	mm_fcvts1_op = 0xed,
};

/*
 * (microMIPS) POOL16C minor opcodes.
 */
enum mm_16c_minor_op {
	mm_lwm16_op = 0x04,
	mm_swm16_op = 0x05,
	mm_jr16_op = 0x0c,
	mm_jrc_op = 0x0d,
	mm_jalr16_op = 0x0e,
	mm_jalrs16_op = 0x0f,
	mm_jraddiusp_op = 0x18,
};

/*
 * (microMIPS) POOL16D minor opcodes.
 */
enum mm_16d_minor_op {
	mm_addius5_func,
	mm_addiusp_func,
};

/*
 * (MIPS16e) opcodes.
 */
enum MIPS16e_ops {
	MIPS16e_jal_op = 003,
	MIPS16e_ld_op = 007,
	MIPS16e_i8_op = 014,
	MIPS16e_sd_op = 017,
	MIPS16e_lb_op = 020,
	MIPS16e_lh_op = 021,
	MIPS16e_lwsp_op = 022,
	MIPS16e_lw_op = 023,
	MIPS16e_lbu_op = 024,
	MIPS16e_lhu_op = 025,
	MIPS16e_lwpc_op = 026,
	MIPS16e_lwu_op = 027,
	MIPS16e_sb_op = 030,
	MIPS16e_sh_op = 031,
	MIPS16e_swsp_op = 032,
	MIPS16e_sw_op = 033,
	MIPS16e_rr_op = 035,
	MIPS16e_extend_op = 036,
	MIPS16e_i64_op = 037,
};

enum MIPS16e_i64_func {
	MIPS16e_ldsp_func,
	MIPS16e_sdsp_func,
	MIPS16e_sdrasp_func,
	MIPS16e_dadjsp_func,
	MIPS16e_ldpc_func,
};

enum MIPS16e_rr_func {
	MIPS16e_jr_func,
};

enum MIPS6e_i8_func {
	MIPS16e_swrasp_func = 02,
};

/*
 * (microMIPS & MIPS16e) NOP instruction.
 */
#define MM_NOP16	0x0c00

/*
 * Damn ...  bitfields depend from byteorder :-(
 */
#ifdef __MIPSEB__
#define BITFIELD_FIELD(field, more)					\
	field;								\
	more

#elif defined(__MIPSEL__)

#define BITFIELD_FIELD(field, more)					\
	more								\
	field;

#else /* !defined (__MIPSEB__) && !defined (__MIPSEL__) */
#error "MIPS but neither __MIPSEL__ nor __MIPSEB__?"
#endif

struct j_format {
	BITFIELD_FIELD(unsigned int opcode : 6, /* Jump format */
	BITFIELD_FIELD(unsigned int target : 26,
	;))
};

struct i_format {			/* signed immediate format */
	BITFIELD_FIELD(unsigned int opcode : 6,
	BITFIELD_FIELD(unsigned int rs : 5,
	BITFIELD_FIELD(unsigned int rt : 5,
	BITFIELD_FIELD(signed int simmediate : 16,
	;))))
};

struct u_format {			/* unsigned immediate format */
	BITFIELD_FIELD(unsigned int opcode : 6,
	BITFIELD_FIELD(unsigned int rs : 5,
	BITFIELD_FIELD(unsigned int rt : 5,
	BITFIELD_FIELD(unsigned int uimmediate : 16,
	;))))
};

struct c_format {			/* Cache (>= R6000) format */
	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,
	;)))))
};

struct r_format {			/* Register format */
	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,
	;))))))
};

struct p_format {		/* Performance counter format (R10000) */
	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,
	;))))))
};

struct f_format {			/* FPU register format */
	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,
	;)))))))
};

struct ma_format {		/* FPU multiply and add format (MIPS IV) */
	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,
	;)))))))
};

struct b_format {			/* BREAK and SYSCALL */
	BITFIELD_FIELD(unsigned int opcode : 6,
	BITFIELD_FIELD(unsigned int code : 20,
	BITFIELD_FIELD(unsigned int func : 6,
	;)))
};

struct ps_format {			/* MIPS-3D / paired single format */
	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,
	;))))))
};

struct v_format {				/* MDMX vector format */
	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,
	;)))))))
};

/*
 * microMIPS instruction formats (32-bit length)
 *
 * NOTE:
 *	Parenthesis denote whether the format is a microMIPS instruction or
 *	if it is MIPS32 instruction re-encoded for use in the microMIPS ASE.
 */
struct fb_format {		/* FPU branch format (MIPS32) */
	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,
	;)))))
};

struct fp0_format {		/* FPU multiply and add format (MIPS32) */
	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,
	;))))))
};

struct mm_fp0_format {		/* FPU multipy and add format (microMIPS) */
	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,
	;)))))))
};

struct fp1_format {		/* FPU mfc1 and cfc1 format (MIPS32) */
	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,
	;))))))
};

struct mm_fp1_format {		/* FPU mfc1 and cfc1 format (microMIPS) */
	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,
	;))))))
};

struct mm_fp2_format {		/* FPU movt and movf format (microMIPS) */
	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,
	;))))))))
};

struct mm_fp3_format {		/* FPU abs and neg format (microMIPS) */
	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,
	;))))))
};

struct mm_fp4_format {		/* FPU c.cond format (microMIPS) */
	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,
	;)))))))
};

struct mm_fp5_format {		/* FPU lwxc1 and swxc1 format (microMIPS) */
	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,
	;))))))
};

struct fp6_format {		/* FPU madd and msub format (MIPS IV) */
	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,
	;))))))
};

struct mm_fp6_format {		/* FPU madd and msub format (microMIPS) */
	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,
	;))))))
};

struct mm_i_format {		/* Immediate format (microMIPS) */
	BITFIELD_FIELD(unsigned int opcode : 6,
	BITFIELD_FIELD(unsigned int rt : 5,
	BITFIELD_FIELD(unsigned int rs : 5,
	BITFIELD_FIELD(signed int simmediate : 16,
	;))))
};

struct mm_m_format {		/* Multi-word load/store format (microMIPS) */
	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,
	;)))))
};

struct mm_x_format {		/* Scaled indexed load format (microMIPS) */
	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,
	;)))))
};

/*
 * microMIPS instruction formats (16-bit length)
 */
struct mm_b0_format {		/* Unconditional branch format (microMIPS) */
	BITFIELD_FIELD(unsigned int opcode : 6,
	BITFIELD_FIELD(signed int simmediate : 10,
	BITFIELD_FIELD(unsigned int : 16, /* Ignored */
	;)))
};

struct mm_b1_format {		/* Conditional branch format (microMIPS) */
	BITFIELD_FIELD(unsigned int opcode : 6,
	BITFIELD_FIELD(unsigned int rs : 3,
	BITFIELD_FIELD(signed int simmediate : 7,
	BITFIELD_FIELD(unsigned int : 16, /* Ignored */
	;))))
};

struct mm16_m_format {		/* Multi-word load/store format */
	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, /* Ignored */
	;)))))
};

struct mm16_rb_format {		/* Signed immediate format */
	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, /* Ignored */
	;)))))
};

struct mm16_r3_format {		/* Load from global pointer format */
	BITFIELD_FIELD(unsigned int opcode : 6,
	BITFIELD_FIELD(unsigned int rt : 3,
	BITFIELD_FIELD(signed int simmediate : 7,
	BITFIELD_FIELD(unsigned int : 16, /* Ignored */
	;))))
};

struct mm16_r5_format {		/* Load/store from stack pointer format */
	BITFIELD_FIELD(unsigned int opcode : 6,
	BITFIELD_FIELD(unsigned int rt : 5,
	BITFIELD_FIELD(signed int simmediate : 5,
	BITFIELD_FIELD(unsigned int : 16, /* Ignored */
	;))))
};

/*
 * MIPS16e instruction formats (16-bit length)
 */
struct m16e_rr {
	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,
	;))))))
};

struct m16e_jal {
	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,
	;))))
};

struct m16e_i64 {
	BITFIELD_FIELD(unsigned int opcode : 5,
	BITFIELD_FIELD(unsigned int func : 3,
	BITFIELD_FIELD(unsigned int imm : 8,
	;)))
};

struct m16e_ri64 {
	BITFIELD_FIELD(unsigned int opcode : 5,
	BITFIELD_FIELD(unsigned int func : 3,
	BITFIELD_FIELD(unsigned int ry : 3,
	BITFIELD_FIELD(unsigned int imm : 5,
	;))))
};

struct m16e_ri {
	BITFIELD_FIELD(unsigned int opcode : 5,
	BITFIELD_FIELD(unsigned int rx : 3,
	BITFIELD_FIELD(unsigned int imm : 8,
	;)))
};

struct m16e_rri {
	BITFIELD_FIELD(unsigned int opcode : 5,
	BITFIELD_FIELD(unsigned int rx : 3,
	BITFIELD_FIELD(unsigned int ry : 3,
	BITFIELD_FIELD(unsigned int imm : 5,
	;))))
};

struct m16e_i8 {
	BITFIELD_FIELD(unsigned int opcode : 5,
	BITFIELD_FIELD(unsigned int func : 3,
	BITFIELD_FIELD(unsigned int imm : 8,
	;)))
};

union mips_instruction {
	unsigned int word;
	unsigned short halfword[2];
	unsigned char byte[4];
	struct j_format j_format;
	struct i_format i_format;
	struct u_format u_format;
	struct c_format c_format;
	struct r_format r_format;
	struct p_format p_format;
	struct f_format f_format;
	struct ma_format ma_format;
	struct b_format b_format;
	struct ps_format ps_format;
	struct v_format v_format;
	struct fb_format fb_format;
	struct fp0_format fp0_format;
	struct mm_fp0_format mm_fp0_format;
	struct fp1_format fp1_format;
	struct mm_fp1_format mm_fp1_format;
	struct mm_fp2_format mm_fp2_format;
	struct mm_fp3_format mm_fp3_format;
	struct mm_fp4_format mm_fp4_format;
	struct mm_fp5_format mm_fp5_format;
	struct fp6_format fp6_format;
	struct mm_fp6_format mm_fp6_format;
	struct mm_i_format mm_i_format;
	struct mm_m_format mm_m_format;
	struct mm_x_format mm_x_format;
	struct mm_b0_format mm_b0_format;
	struct mm_b1_format mm_b1_format;
	struct mm16_m_format mm16_m_format ;
	struct mm16_rb_format mm16_rb_format;
	struct mm16_r3_format mm16_r3_format;
	struct mm16_r5_format mm16_r5_format;
};

union mips16e_instruction {
	unsigned int full : 16;
	struct m16e_rr rr;
	struct m16e_jal jal;
	struct m16e_i64 i64;
	struct m16e_ri64 ri64;
	struct m16e_ri ri;
	struct m16e_rri rri;
	struct m16e_i8 i8;
};

#endif /* _UAPI_ASM_INST_H */
