/* $Id$ */
/* Copyright (c) 2011-2018 Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS Devel Asm */
/* This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, version 3 of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>. */



/* generic */
/* conditions */
#define eq		0x0
#define ne		0x1
#define cs		0x2
#define cc		0x3
#define mi		0x4
#define pl		0x5
#define vs		0x6
#define vc		0x7
#define hi		0x8
#define ls		0x9
#define ge		0xa
#define lt		0xb
#define gt		0xc
#define le		0xd
#define al		0xe

/* opcodes */
#define OPNOP		AO_IMMEDIATE(0, 32, 0)
#define OP_DR		AO_DREGISTER(0, 0, 32, 0)
#define OP_R		AO_REGISTER(0, 32, 0)
#define OP_R_CPSR	AO_REGISTER(AOF_IMPLICIT, 32, REG_cpsr_id)
#define OP_R_SPSR	AO_REGISTER(AOF_IMPLICIT, 32, REG_spsr_id)

/* block data transfer */
#define OPBDTL(cond)	((cond << 28) | (0x4 << 25) | (0x1 << 20))
#define OPBDTLF		(32 << AOD_SIZE)
#define OPBDT_U16	AO_IMMEDIATE(0, 16, 0)
#define OPBDTS(cond)	((cond << 28) | (0x4 << 25))
#define OPBDTSF		(32 << AOD_SIZE)

/* branch, branch with link */
#define OPB(cond)	((cond << 28) | (0x5 << 25))
#define OPBF		(32 << AOD_SIZE)
#define OPB_S24		AO_IMMEDIATE(AOF_SIGNED, 26, 0)
#define OPBL(cond)	((cond << 28) | (0x5 << 25) | (0x1 << 24))
#define OPBLF		(32 << AOD_SIZE)
#define OPBL_S24	AO_IMMEDIATE(AOF_SIGNED, 26, 0)

/* branch and exchange */
#define OPBX(cond)	((cond << 28) | (0x12fff1 << 4))
#define OPBXF		(32 << AOD_SIZE)

/* coprocessor data operation */
#define OPCDO(cond)	((cond << 28) | (0xe << 24))
#define OPCDOF		(32 << AOD_SIZE)
#define OPCDO_U4	AO_IMMEDIATE(0, 4, 0)

/* coprocessor data transfers */
#define OPCDTL(cond)	((cond << 28) | (0x6 << 25) | (0x1 << 20))
#define OPCDTLF		(32 << AOD_SIZE)
#define OPCDTL_U4	AO_IMMEDIATE(0, 4, 0)
#define OPCDTL_U8	AO_IMMEDIATE(0, 8, 0)
#define OPCDTS(cond)	((cond << 28) | (0x6 << 25))
#define OPCDTSF		(32 << AOD_SIZE)
#define OPCDTS_U4	AO_IMMEDIATE(0, 4, 0)
#define OPCDTS_U8	AO_IMMEDIATE(0, 8, 0)

/* coprocessor register transfers */
#define OPCRTL(cond)	((cond << 28) | (0xe << 24) | (0x1 << 20) | (0x1 << 4))
#define OPCRTLF		(32 << AOD_SIZE)
#define OPCRTL_U3	AO_IMMEDIATE(0, 3, 0)
#define OPCRTL_U4	AO_IMMEDIATE(0, 4, 0)
#define OPCRTS(cond)	((cond << 28) | (0xe << 24) | (0x1 << 4))
#define OPCRTSF		(32 << AOD_SIZE)
#define OPCRTS_U3	AO_IMMEDIATE(0, 3, 0)
#define OPCRTS_U4	AO_IMMEDIATE(0, 4, 0)

/* data processing */
/* operations */
#define and		0x0
#define eor		0x1
#define sub		0x2
#define rsb		0x3
#define add		0x4
#define adc		0x5
#define sbc		0x6
#define rsc		0x7
#define tst		0x8
#define teq		0x9
#define cmp		0xa
#define cmn		0xb
#define orr		0xc
#define mov		0xd
#define bic		0xe
#define mvn		0xf

#define OPDP(cond, op)	((cond << 28) | (op << 21))
#define OPDPF		(32 << AOD_SIZE)
#define OPDPI(cond, op)	((cond << 28) | (op << 21) | (0x1 << 25))
#define OPDPIF		(32 << AOD_SIZE)
#define OPDPI_U12	AO_IMMEDIATE(0, 12, 0)
#define OPDPS(cond, op)	((cond << 28) | (op << 21) | (0x1 << 20))
#define OPDPSF		(32 << AOD_SIZE)
#define OPDPIS(cond, op)((cond << 28) | (op << 21) | (0x1 << 25) | (0x1 << 20))
#define OPDPISF		(32 << AOD_SIZE)
#define OPDPIS_U12	OPDPI_U12

/* multiply and multiply-accumulate */
#define OPMUL(cond)	((cond << 28) | (0x9 << 4))
#define OPMULF		(32 << AOD_SIZE)
#define OPMULS(cond)	((cond << 28) | (0x1 << 20) | (0x9 << 4))
#define OPMULSF		(32 << AOD_SIZE)
#define OPMULA(cond)	((cond << 28) | (0x1 << 21) | (0x9 << 4))
#define OPMULAF		(32 << AOD_SIZE)
#define OPMULAS(cond)	((cond << 28) | (0x1 << 21) | (0x1 << 20) | (0x9 << 4))
#define OPMULASF	(32 << AOD_SIZE)

/* psr transfer */
#define OPPT(cond)	((cond << 28) | (0x2 << 23) | (0xf << 16))
#define OPPTF		(32 << AOD_SIZE)
#define OPPTI(cond)	((cond << 28) | (0x2 << 23) | (0x29f << 12))
#define OPPTIF		(32 << AOD_SIZE)

/* single data transfer */
#define OPSDTL(cond)	((cond << 28) | (0x1 << 26) | (0x1 << 25) | (0x1 << 20))
#define OPSDTLF		(32 << AOD_SIZE)
#define OPSDTS(cond)	((cond << 28) | (0x1 << 26) | (0x1 << 25))
#define OPSDTSF		(32 << AOD_SIZE)
#define OPSDTLB(cond)	((cond << 28) | (0x1 << 26) | (0x1 << 25) \
		| (0x1 << 22) | (0x1 << 20))
#define OPSDTLBF	(32 << AOD_SIZE)
#define OPSDTSB(cond)	((cond << 28) | (0x1 << 26) | (0x1 << 25) | (0x1 << 22))
#define OPSDTSBF	(32 << AOD_SIZE)

/* single data swap */
#define OPSDS(cond)	((cond << 28) | (0x2 << 23) | (0x9 << 4))
#define OPSDSF		(32 << AOD_SIZE)
#define OPSDSB(cond)	((cond << 28) | (0x2 << 23) | (0x1 << 22) | (0x9 << 4))
#define OPSDSBF		(32 << AOD_SIZE)

/* software interrupt */
#define OPSI(cond)	((cond << 28) | (0xf << 24))
#define OPSIF		(32 << AOD_SIZE)
#define OPSI_U24	AO_IMMEDIATE(0, 24, 0)


/* instructions */
/* adc */
{ "adc",	OPDP(al,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adceq",	OPDP(eq,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adcne",	OPDP(ne,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adccs",	OPDP(cs,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adccc",	OPDP(cc,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adcmi",	OPDP(mi,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adcpl",	OPDP(pl,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adcvs",	OPDP(vs,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adcvc",	OPDP(vc,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adchi",	OPDP(hi,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adcls",	OPDP(ls,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adcge",	OPDP(ge,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adclt",	OPDP(lt,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adcgt",	OPDP(gt,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adcle",	OPDP(le,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adcal",	OPDP(al,adc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "adc",	OPDPI(al,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adceq",	OPDPI(eq,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcne",	OPDPI(ne,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adccs",	OPDPI(cs,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adccc",	OPDPI(cc,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcmi",	OPDPI(mi,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcpl",	OPDPI(pl,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcvs",	OPDPI(vs,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcvc",	OPDPI(vc,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adchi",	OPDPI(hi,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcls",	OPDPI(ls,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcge",	OPDPI(ge,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adclt",	OPDPI(lt,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcgt",	OPDPI(gt,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcle",	OPDPI(le,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcal",	OPDPI(al,adc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adcs",	OPDPS(al,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adceqs",	OPDPS(eq,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcnes",	OPDPS(ne,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adccss",	OPDPS(cs,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcccs",	OPDPS(cc,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcmis",	OPDPS(mi,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcpls",	OPDPS(pl,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcvss",	OPDPS(vs,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcvcs",	OPDPS(vc,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adchis",	OPDPS(hi,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adclss",	OPDPS(ls,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcges",	OPDPS(ge,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adclts",	OPDPS(lt,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcgts",	OPDPS(gt,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcles",	OPDPS(le,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcals",	OPDPS(al,adc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adcs",	OPDPIS(al,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adceqs",	OPDPIS(eq,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adcnes",	OPDPIS(ne,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adccss",	OPDPIS(cs,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adcccs",	OPDPIS(cc,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adcmis",	OPDPIS(mi,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adcpls",	OPDPIS(pl,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adcvss",	OPDPIS(vs,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adcvcs",	OPDPIS(vc,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adchis",	OPDPIS(hi,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adclss",	OPDPIS(ls,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adcges",	OPDPIS(ge,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adclts",	OPDPIS(lt,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adcgts",	OPDPIS(gt,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adcles",	OPDPIS(le,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "adcals",	OPDPIS(al,adc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
/* add */
{ "add",	OPDP(al,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addeq",	OPDP(eq,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addne",	OPDP(ne,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addcs",	OPDP(cs,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addcc",	OPDP(cc,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addmi",	OPDP(mi,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addpl",	OPDP(pl,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addvs",	OPDP(vs,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addvc",	OPDP(vc,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addhi",	OPDP(hi,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addls",	OPDP(ls,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addge",	OPDP(ge,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addlt",	OPDP(lt,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addgt",	OPDP(gt,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addle",	OPDP(le,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "addal",	OPDP(al,add),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "add",	OPDPI(al,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addeq",	OPDPI(eq,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addne",	OPDPI(ne,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addcs",	OPDPI(cs,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addcc",	OPDPI(cc,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addmi",	OPDPI(mi,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addpl",	OPDPI(pl,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addvs",	OPDPI(vs,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addvc",	OPDPI(vc,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addhi",	OPDPI(hi,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addls",	OPDPI(ls,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addge",	OPDPI(ge,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addlt",	OPDPI(lt,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addgt",	OPDPI(gt,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addle",	OPDPI(le,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "addal",	OPDPI(al,add),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "adds",	OPDPS(al,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addeqs",	OPDPS(eq,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addnes",	OPDPS(ne,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addcss",	OPDPS(cs,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addccs",	OPDPS(cc,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addmis",	OPDPS(mi,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addpls",	OPDPS(pl,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addvss",	OPDPS(vs,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addvcs",	OPDPS(vc,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addhis",	OPDPS(hi,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addlss",	OPDPS(ls,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addges",	OPDPS(ge,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addlts",	OPDPS(lt,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addgts",	OPDPS(gt,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addles",	OPDPS(le,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "addals",	OPDPS(al,add),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "adds",	OPDPIS(al,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addeqs",	OPDPIS(eq,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addnes",	OPDPIS(ne,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addcss",	OPDPIS(cs,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addccs",	OPDPIS(cc,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addmis",	OPDPIS(mi,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addpls",	OPDPIS(pl,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addvss",	OPDPIS(vs,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addvcs",	OPDPIS(vc,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addhis",	OPDPIS(hi,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addlss",	OPDPIS(ls,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addges",	OPDPIS(ge,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addlts",	OPDPIS(lt,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addgts",	OPDPIS(gt,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addles",	OPDPIS(le,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "addals",	OPDPIS(al,add),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
/* and */
{ "and",	OPDP(al,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andeq",	OPDP(eq,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andne",	OPDP(ne,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andcs",	OPDP(cs,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andcc",	OPDP(cc,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andmi",	OPDP(mi,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andpl",	OPDP(pl,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andvs",	OPDP(vs,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andvc",	OPDP(vc,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andhi",	OPDP(hi,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andls",	OPDP(ls,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andge",	OPDP(ge,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andlt",	OPDP(lt,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andgt",	OPDP(gt,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andle",	OPDP(le,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "andal",	OPDP(al,and),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "and",	OPDPI(al,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andeq",	OPDPI(eq,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andne",	OPDPI(ne,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andcs",	OPDPI(cs,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andcc",	OPDPI(cc,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andmi",	OPDPI(mi,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andpl",	OPDPI(pl,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andvs",	OPDPI(vs,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andvc",	OPDPI(vc,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andhi",	OPDPI(hi,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andls",	OPDPI(ls,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andge",	OPDPI(ge,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andlt",	OPDPI(lt,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andgt",	OPDPI(gt,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andle",	OPDPI(le,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "andal",	OPDPI(al,and),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "ands",	OPDPS(al,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andeqs",	OPDPS(eq,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andnes",	OPDPS(ne,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andcss",	OPDPS(cs,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andccs",	OPDPS(cc,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andmis",	OPDPS(mi,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andpls",	OPDPS(pl,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andvss",	OPDPS(vs,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andvcs",	OPDPS(vc,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andhis",	OPDPS(hi,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andlss",	OPDPS(ls,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andges",	OPDPS(ge,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andlts",	OPDPS(lt,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andgts",	OPDPS(gt,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andles",	OPDPS(le,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "andals",	OPDPS(al,and),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "ands",	OPDPIS(al,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andeqs",	OPDPIS(eq,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andnes",	OPDPIS(ne,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andcss",	OPDPIS(cs,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andccs",	OPDPIS(cc,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andmis",	OPDPIS(mi,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andpls",	OPDPIS(pl,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andvss",	OPDPIS(vs,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andvcs",	OPDPIS(vc,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andhis",	OPDPIS(hi,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andlss",	OPDPIS(ls,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andges",	OPDPIS(ge,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andlts",	OPDPIS(lt,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andgts",	OPDPIS(gt,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andles",	OPDPIS(le,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "andals",	OPDPIS(al,and),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
/* b */
{ "b",		OPB(al),	OPBF,	AO_1(OPB_S24)			},
{ "beq",	OPB(eq),	OPBF,	AO_1(OPB_S24)			},
{ "bne",	OPB(ne),	OPBF,	AO_1(OPB_S24)			},
{ "bcs",	OPB(cs),	OPBF,	AO_1(OPB_S24)			},
{ "bcc",	OPB(cc),	OPBF,	AO_1(OPB_S24)			},
{ "bmi",	OPB(mi),	OPBF,	AO_1(OPB_S24)			},
{ "bpl",	OPB(pl),	OPBF,	AO_1(OPB_S24)			},
{ "bvs",	OPB(vs),	OPBF,	AO_1(OPB_S24)			},
{ "bvc",	OPB(vc),	OPBF,	AO_1(OPB_S24)			},
{ "bhi",	OPB(hi),	OPBF,	AO_1(OPB_S24)			},
{ "bls",	OPB(ls),	OPBF,	AO_1(OPB_S24)			},
{ "bge",	OPB(ge),	OPBF,	AO_1(OPB_S24)			},
{ "blt",	OPB(lt),	OPBF,	AO_1(OPB_S24)			},
{ "bgt",	OPB(gt),	OPBF,	AO_1(OPB_S24)			},
{ "ble",	OPB(le),	OPBF,	AO_1(OPB_S24)			},
{ "bal",	OPB(al),	OPBF,	AO_1(OPB_S24)			},
/* bic */
{ "bic",	OPDP(al,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "biceq",	OPDP(eq,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bicne",	OPDP(ne,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "biccs",	OPDP(cs,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "biccc",	OPDP(cc,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bicmi",	OPDP(mi,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bicpl",	OPDP(pl,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bicvs",	OPDP(vs,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bicvc",	OPDP(vc,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bichi",	OPDP(hi,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bicls",	OPDP(ls,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bicge",	OPDP(ge,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "biclt",	OPDP(lt,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bicgt",	OPDP(gt,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bicle",	OPDP(le,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bical",	OPDP(al,bic),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "bic",	OPDPI(al,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "biceq",	OPDPI(eq,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bicne",	OPDPI(ne,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "biccs",	OPDPI(cs,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "biccc",	OPDPI(cc,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bicmi",	OPDPI(mi,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bicpl",	OPDPI(pl,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bicvs",	OPDPI(vs,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bicvc",	OPDPI(vc,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bichi",	OPDPI(hi,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bicls",	OPDPI(ls,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bicge",	OPDPI(ge,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "biclt",	OPDPI(lt,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bicgt",	OPDPI(gt,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bicle",	OPDPI(le,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bical",	OPDPI(al,bic),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "bics",	OPDPS(al,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "biceqs",	OPDPS(eq,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bicnes",	OPDPS(ne,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "biccss",	OPDPS(cs,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bicccs",	OPDPS(cc,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bicmis",	OPDPS(mi,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bicpls",	OPDPS(pl,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bicvss",	OPDPS(vs,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bicvcs",	OPDPS(vc,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bichis",	OPDPS(hi,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "biclss",	OPDPS(ls,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bicges",	OPDPS(ge,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "biclts",	OPDPS(lt,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bicgts",	OPDPS(gt,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bicles",	OPDPS(le,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bicals",	OPDPS(al,bic),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "bics",	OPDPIS(al,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "biceqs",	OPDPIS(eq,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bicnes",	OPDPIS(ne,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "biccss",	OPDPIS(cs,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bicccs",	OPDPIS(cc,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bicmis",	OPDPIS(mi,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bicpls",	OPDPIS(pl,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bicvss",	OPDPIS(vs,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bicvcs",	OPDPIS(vc,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bichis",	OPDPIS(hi,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "biclss",	OPDPIS(ls,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bicges",	OPDPIS(ge,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "biclts",	OPDPIS(lt,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bicgts",	OPDPIS(gt,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bicles",	OPDPIS(le,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "bicals",	OPDPIS(al,bic),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
/* bl */
{ "bl",		OPBL(al),	OPBLF,	AO_1(OPBL_S24)			},
{ "bleq",	OPBL(eq),	OPBLF,	AO_1(OPBL_S24)			},
{ "blne",	OPBL(ne),	OPBLF,	AO_1(OPBL_S24)			},
{ "blcs",	OPBL(cs),	OPBLF,	AO_1(OPBL_S24)			},
{ "blcc",	OPBL(cc),	OPBLF,	AO_1(OPBL_S24)			},
{ "blmi",	OPBL(mi),	OPBLF,	AO_1(OPBL_S24)			},
{ "blpl",	OPBL(pl),	OPBLF,	AO_1(OPBL_S24)			},
{ "blvs",	OPBL(vs),	OPBLF,	AO_1(OPBL_S24)			},
{ "blvc",	OPBL(vc),	OPBLF,	AO_1(OPBL_S24)			},
{ "blhi",	OPBL(hi),	OPBLF,	AO_1(OPBL_S24)			},
{ "blls",	OPBL(ls),	OPBLF,	AO_1(OPBL_S24)			},
{ "blge",	OPBL(ge),	OPBLF,	AO_1(OPBL_S24)			},
{ "bllt",	OPBL(lt),	OPBLF,	AO_1(OPBL_S24)			},
{ "blgt",	OPBL(gt),	OPBLF,	AO_1(OPBL_S24)			},
{ "blle",	OPBL(le),	OPBLF,	AO_1(OPBL_S24)			},
{ "blal",	OPBL(al),	OPBLF,	AO_1(OPBL_S24)			},
/* bx */
{ "bx",		OPBX(al),	OPBXF,	AO_1(OP_R)			},
{ "bxeq",	OPBX(eq),	OPBXF,	AO_1(OP_R)			},
{ "bxne",	OPBX(ne),	OPBXF,	AO_1(OP_R)			},
{ "bxcs",	OPBX(cs),	OPBXF,	AO_1(OP_R)			},
{ "bxcc",	OPBX(cc),	OPBXF,	AO_1(OP_R)			},
{ "bxmi",	OPBX(mi),	OPBXF,	AO_1(OP_R)			},
{ "bxpl",	OPBX(pl),	OPBXF,	AO_1(OP_R)			},
{ "bxvs",	OPBX(vs),	OPBXF,	AO_1(OP_R)			},
{ "bxvc",	OPBX(vc),	OPBXF,	AO_1(OP_R)			},
{ "bxhi",	OPBX(hi),	OPBXF,	AO_1(OP_R)			},
{ "bxls",	OPBX(ls),	OPBXF,	AO_1(OP_R)			},
{ "bxge",	OPBX(ge),	OPBXF,	AO_1(OP_R)			},
{ "bxlt",	OPBX(lt),	OPBXF,	AO_1(OP_R)			},
{ "bxgt",	OPBX(gt),	OPBXF,	AO_1(OP_R)			},
{ "bxle",	OPBX(le),	OPBXF,	AO_1(OP_R)			},
{ "bxal",	OPBX(al),	OPBXF,	AO_1(OP_R)			},
/* cdp */
{ "cdp",	OPCDO(al),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpeq",	OPCDO(eq),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpne",	OPCDO(ne),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpcs",	OPCDO(cs),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpcc",	OPCDO(cc),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpmi",	OPCDO(mi),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdppl",	OPCDO(pl),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpvs",	OPCDO(vs),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpvc",	OPCDO(vc),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdphi",	OPCDO(hi),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpls",	OPCDO(ls),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpge",	OPCDO(ge),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdplt",	OPCDO(lt),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpgt",	OPCDO(gt),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdple",	OPCDO(le),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
{ "cdpal",	OPCDO(al),	OPCDOF,	AO_3(OPCDO_U4, OPCDO_U4, OP_R)	},
/* cmn */
{ "cmn",	OPDP(al,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmneq",	OPDP(eq,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnne",	OPDP(ne,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmncs",	OPDP(cs,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmncc",	OPDP(cc,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnmi",	OPDP(mi,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnpl",	OPDP(pl,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnvs",	OPDP(vs,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnvc",	OPDP(vc,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnhi",	OPDP(hi,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnls",	OPDP(ls,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnge",	OPDP(ge,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnlt",	OPDP(lt,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmngt",	OPDP(gt,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnle",	OPDP(le,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmnal",	OPDP(al,cmn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmn",	OPDPI(al,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmneq",	OPDPI(eq,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnne",	OPDPI(ne,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmncs",	OPDPI(cs,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmncc",	OPDPI(cc,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnmi",	OPDPI(mi,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnpl",	OPDPI(pl,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnvs",	OPDPI(vs,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnvc",	OPDPI(vc,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnhi",	OPDPI(hi,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnls",	OPDPI(ls,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnge",	OPDPI(ge,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnlt",	OPDPI(lt,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmngt",	OPDPI(gt,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnle",	OPDPI(le,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmnal",	OPDPI(al,cmn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmns",	OPDPS(al,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmneqs",	OPDPS(eq,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnnes",	OPDPS(ne,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmncss",	OPDPS(cs,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnccs",	OPDPS(cc,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnmis",	OPDPS(mi,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnpls",	OPDPS(pl,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnvss",	OPDPS(vs,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnvcs",	OPDPS(vc,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnhis",	OPDPS(hi,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnlss",	OPDPS(ls,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnges",	OPDPS(ge,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnlts",	OPDPS(lt,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmngts",	OPDPS(gt,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnles",	OPDPS(le,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmnals",	OPDPS(al,cmn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmns",	OPDPIS(al,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmneqs",	OPDPIS(eq,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnnes",	OPDPIS(ne,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmncss",	OPDPIS(cs,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnccs",	OPDPIS(cc,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnmis",	OPDPIS(mi,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnpls",	OPDPIS(pl,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnvss",	OPDPIS(vs,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnvcs",	OPDPIS(vc,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnhis",	OPDPIS(hi,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnlss",	OPDPIS(ls,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnges",	OPDPIS(ge,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnlts",	OPDPIS(lt,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmngts",	OPDPIS(gt,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnles",	OPDPIS(le,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmnals",	OPDPIS(al,cmn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
/* cmp */
{ "cmp",	OPDP(al,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpeq",	OPDP(eq,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpne",	OPDP(ne,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpcs",	OPDP(cs,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpcc",	OPDP(cc,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpmi",	OPDP(mi,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmppl",	OPDP(pl,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpvs",	OPDP(vs,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpvc",	OPDP(vc,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmphi",	OPDP(hi,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpls",	OPDP(ls,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpge",	OPDP(ge,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmplt",	OPDP(lt,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpgt",	OPDP(gt,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmple",	OPDP(le,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmpal",	OPDP(al,cmp),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "cmp",	OPDPI(al,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpeq",	OPDPI(eq,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpne",	OPDPI(ne,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpcs",	OPDPI(cs,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpcc",	OPDPI(cc,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpmi",	OPDPI(mi,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmppl",	OPDPI(pl,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpvs",	OPDPI(vs,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpvc",	OPDPI(vc,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmphi",	OPDPI(hi,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpls",	OPDPI(ls,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpge",	OPDPI(ge,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmplt",	OPDPI(lt,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpgt",	OPDPI(gt,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmple",	OPDPI(le,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmpal",	OPDPI(al,cmp),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "cmps",	OPDPS(al,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmpeqs",	OPDPS(eq,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmpnes",	OPDPS(ne,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmpcss",	OPDPS(cs,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmpccs",	OPDPS(cc,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmpmis",	OPDPS(mi,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmppls",	OPDPS(pl,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmpvss",	OPDPS(vs,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmpvcs",	OPDPS(vc,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmphis",	OPDPS(hi,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmplss",	OPDPS(ls,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmpges",	OPDPS(ge,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmplts",	OPDPS(lt,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmpgts",	OPDPS(gt,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmples",	OPDPS(le,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmpals",	OPDPS(al,cmp),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "cmps",	OPDPIS(al,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmpeqs",	OPDPIS(eq,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmpnes",	OPDPIS(ne,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmpcss",	OPDPIS(cs,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmpccs",	OPDPIS(cc,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmpmis",	OPDPIS(mi,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmppls",	OPDPIS(pl,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmpvss",	OPDPIS(vs,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmpvcs",	OPDPIS(vc,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmphis",	OPDPIS(hi,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmplss",	OPDPIS(ls,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmpges",	OPDPIS(ge,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmplts",	OPDPIS(lt,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmpgts",	OPDPIS(gt,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmples",	OPDPIS(le,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "cmpals",	OPDPIS(al,cmp),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
/* eor */
{ "eor",	OPDP(al,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eoreq",	OPDP(eq,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorne",	OPDP(ne,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorcs",	OPDP(cs,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorcc",	OPDP(cc,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eormi",	OPDP(mi,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorpl",	OPDP(pl,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorvs",	OPDP(vs,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorvc",	OPDP(vc,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorhi",	OPDP(hi,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorls",	OPDP(ls,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorge",	OPDP(ge,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorlt",	OPDP(lt,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorgt",	OPDP(gt,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eorle",	OPDP(le,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eoral",	OPDP(al,eor),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "eor",	OPDPI(al,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eoreq",	OPDPI(eq,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorne",	OPDPI(ne,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorcs",	OPDPI(cs,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorcc",	OPDPI(cc,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eormi",	OPDPI(mi,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorpl",	OPDPI(pl,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorvs",	OPDPI(vs,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorvc",	OPDPI(vc,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorhi",	OPDPI(hi,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorls",	OPDPI(ls,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorge",	OPDPI(ge,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorlt",	OPDPI(lt,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorgt",	OPDPI(gt,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eorle",	OPDPI(le,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eoral",	OPDPI(al,eor),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "eors",	OPDPS(al,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eoreqs",	OPDPS(eq,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eornes",	OPDPS(ne,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorcss",	OPDPS(cs,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorccs",	OPDPS(cc,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eormis",	OPDPS(mi,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorpls",	OPDPS(pl,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorvss",	OPDPS(vs,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorvcs",	OPDPS(vc,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorhis",	OPDPS(hi,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorlss",	OPDPS(ls,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorges",	OPDPS(ge,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorlts",	OPDPS(lt,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorgts",	OPDPS(gt,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorles",	OPDPS(le,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eorals",	OPDPS(al,eor),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "eors",	OPDPIS(al,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eoreqs",	OPDPIS(eq,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eornes",	OPDPIS(ne,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorcss",	OPDPIS(cs,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorccs",	OPDPIS(cc,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eormis",	OPDPIS(mi,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorpls",	OPDPIS(pl,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorvss",	OPDPIS(vs,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorvcs",	OPDPIS(vc,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorhis",	OPDPIS(hi,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorlss",	OPDPIS(ls,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorges",	OPDPIS(ge,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorlts",	OPDPIS(lt,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorgts",	OPDPIS(gt,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorles",	OPDPIS(le,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "eorals",	OPDPIS(al,eor),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
/* ldc */
{ "ldc",	OPCDTL(al),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldceq",	OPCDTL(eq),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldcne",	OPCDTL(ne),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldccs",	OPCDTL(cs),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldccc",	OPCDTL(cc),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldcmi",	OPCDTL(mi),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldcpl",	OPCDTL(pl),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldcvs",	OPCDTL(vs),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldcvc",	OPCDTL(vc),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldchi",	OPCDTL(hi),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldcls",	OPCDTL(ls),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldcge",	OPCDTL(ge),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldclt",	OPCDTL(lt),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldcgt",	OPCDTL(gt),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldcle",	OPCDTL(le),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
{ "ldcal",	OPCDTL(al),	OPCDTLF,AO_3(OPCDTL_U4, OP_R, OPCDTL_U8)},
/* ldm */
{ "ldm",	OPBDTL(al),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmeq",	OPBDTL(eq),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmne",	OPBDTL(ne),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmcs",	OPBDTL(cs),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmcc",	OPBDTL(cc),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmmi",	OPBDTL(mi),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmpl",	OPBDTL(pl),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmvs",	OPBDTL(vs),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmvc",	OPBDTL(vc),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmhi",	OPBDTL(hi),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmls",	OPBDTL(ls),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmge",	OPBDTL(ge),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmlt",	OPBDTL(lt),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmgt",	OPBDTL(gt),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmle",	OPBDTL(ge),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
{ "ldmal",	OPBDTL(al),	OPBDTLF,AO_2(OP_R, OPBDT_U16)		},
/* ldr */
{ "ldr",	OPSDTL(al),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldreq",	OPSDTL(eq),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrne",	OPSDTL(ne),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrcs",	OPSDTL(cs),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrcc",	OPSDTL(cc),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrmi",	OPSDTL(mi),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrpl",	OPSDTL(pl),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrvs",	OPSDTL(vs),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrvc",	OPSDTL(vc),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrhi",	OPSDTL(hi),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrls",	OPSDTL(ls),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrge",	OPSDTL(ge),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrlt",	OPSDTL(lt),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrgt",	OPSDTL(gt),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldrle",	OPSDTL(le),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
{ "ldral",	OPSDTL(al),	OPSDTLF,AO_3(OP_R, OP_DR, OP_R)		},
/* ldrb */
{ "ldrb",	OPSDTLB(al),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldreqb",	OPSDTLB(eq),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrneb",	OPSDTLB(ne),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrcsb",	OPSDTLB(cs),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrccb",	OPSDTLB(cc),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrmib",	OPSDTLB(mi),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrplb",	OPSDTLB(pl),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrvsb",	OPSDTLB(vs),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrvcb",	OPSDTLB(vc),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrhib",	OPSDTLB(hi),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrlsb",	OPSDTLB(ls),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrgeb",	OPSDTLB(ge),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrltb",	OPSDTLB(lt),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrgtb",	OPSDTLB(gt),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldrleb",	OPSDTLB(le),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "ldralb",	OPSDTLB(al),	OPSDTLBF,AO_3(OP_R, OP_DR, OP_R)	},
/* mcr */
{ "mcr",	OPCRTS(al),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcreq",	OPCRTS(eq),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrne",	OPCRTS(ne),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrcs",	OPCRTS(cs),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrcc",	OPCRTS(cc),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrmi",	OPCRTS(mi),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrpl",	OPCRTS(pl),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrvs",	OPCRTS(vs),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrvc",	OPCRTS(vc),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrhi",	OPCRTS(hi),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrls",	OPCRTS(ls),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrge",	OPCRTS(ge),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrlt",	OPCRTS(lt),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrgt",	OPCRTS(gt),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcrle",	OPCRTS(le),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
{ "mcral",	OPCRTS(al),	OPCRTSF,AO_3(OPCRTS_U4, OPCRTS_U3, OP_R)},
/* mla */
{ "mla",	OPMULA(al),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlaeq",	OPMULA(eq),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlane",	OPMULA(ne),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlacs",	OPMULA(cs),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlacc",	OPMULA(cc),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlami",	OPMULA(mi),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlapl",	OPMULA(pl),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlavs",	OPMULA(vs),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlavc",	OPMULA(vc),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlahi",	OPMULA(hi),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlals",	OPMULA(ls),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlage",	OPMULA(ge),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlalt",	OPMULA(lt),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlagt",	OPMULA(gt),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlale",	OPMULA(le),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlaal",	OPMULA(al),	OPMULAF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlas",	OPMULAS(al),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlaeqs",	OPMULAS(eq),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlanes",	OPMULAS(ne),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlacss",	OPMULAS(cs),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlaccs",	OPMULAS(cc),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlamis",	OPMULAS(mi),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlapls",	OPMULAS(pl),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlavss",	OPMULAS(vs),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlavcs",	OPMULAS(vc),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlahis",	OPMULAS(hi),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlalss",	OPMULAS(ls),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlages",	OPMULAS(ge),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlalts",	OPMULAS(lt),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlagts",	OPMULAS(gt),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlales",	OPMULAS(le),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
{ "mlaals",	OPMULAS(al),	OPMULASF,AO_3(OP_R, OP_R, OP_R)		},
/* mov */
{ "mov",	OPDP(al,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "moveq",	OPDP(eq,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movne",	OPDP(ne,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movcs",	OPDP(cs,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movcc",	OPDP(cc,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movmi",	OPDP(mi,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movpl",	OPDP(pl,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movvs",	OPDP(vs,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movvc",	OPDP(vc,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movhi",	OPDP(hi,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movls",	OPDP(ls,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movge",	OPDP(ge,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movlt",	OPDP(lt,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movgt",	OPDP(gt,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "movle",	OPDP(le,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "moval",	OPDP(al,mov),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mov",	OPDPI(al,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "moveq",	OPDPI(eq,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movne",	OPDPI(ne,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movcs",	OPDPI(cs,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movcc",	OPDPI(cc,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movmi",	OPDPI(mi,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movpl",	OPDPI(pl,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movvs",	OPDPI(vs,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movvc",	OPDPI(vc,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movhi",	OPDPI(hi,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movls",	OPDPI(ls,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movge",	OPDPI(ge,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movlt",	OPDPI(lt,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movgt",	OPDPI(gt,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movle",	OPDPI(le,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "moval",	OPDPI(al,mov),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "movs",	OPDPS(al,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "moveqs",	OPDPS(eq,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movnes",	OPDPS(ne,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movcss",	OPDPS(cs,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movccs",	OPDPS(cc,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movmis",	OPDPS(mi,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movpls",	OPDPS(pl,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movvss",	OPDPS(vs,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movvcs",	OPDPS(vc,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movhis",	OPDPS(hi,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movlss",	OPDPS(ls,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movges",	OPDPS(ge,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movlts",	OPDPS(lt,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movgts",	OPDPS(gt,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movles",	OPDPS(le,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movals",	OPDPS(al,mov),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "movs",	OPDPIS(al,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "moveqs",	OPDPIS(eq,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movnes",	OPDPIS(ne,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movcss",	OPDPIS(cs,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movccs",	OPDPIS(cc,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movmis",	OPDPIS(mi,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movpls",	OPDPIS(pl,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movvss",	OPDPIS(vs,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movvcs",	OPDPIS(vc,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movhis",	OPDPIS(hi,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movlss",	OPDPIS(ls,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movges",	OPDPIS(ge,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movlts",	OPDPIS(lt,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movgts",	OPDPIS(gt,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movles",	OPDPIS(le,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "movals",	OPDPIS(al,mov),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
/* mrc */
{ "mrc",	OPCRTL(al),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrceq",	OPCRTL(eq),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrcne",	OPCRTL(ne),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrccs",	OPCRTL(cs),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrccc",	OPCRTL(cc),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrcmi",	OPCRTL(mi),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrcpl",	OPCRTL(pl),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrcvs",	OPCRTL(vs),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrcvc",	OPCRTL(vc),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrchi",	OPCRTL(hi),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrcls",	OPCRTL(ls),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrcge",	OPCRTL(ge),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrclt",	OPCRTL(lt),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrcgt",	OPCRTL(gt),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrcle",	OPCRTL(le),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
{ "mrcal",	OPCRTL(al),	OPCRTLF,AO_3(OPCRTL_U4, OPCRTL_U3, OP_R)},
/* mrs */
{ "mrs",	OPPT(al),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrseq",	OPPT(eq),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrsne",	OPPT(ne),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrscs",	OPPT(cs),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrscc",	OPPT(cc),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrsmi",	OPPT(mi),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrspl",	OPPT(pl),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrsvs",	OPPT(vs),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrsvc",	OPPT(vc),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrshi",	OPPT(hi),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrsls",	OPPT(ls),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrsge",	OPPT(ge),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrslt",	OPPT(lt),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrsgt",	OPPT(gt),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrsle",	OPPT(le),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrsal",	OPPT(al),	OPPTF,	AO_2(OP_R, OP_R_CPSR)		},
{ "mrs",	OPPT(al),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrseq",	OPPT(eq),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrsne",	OPPT(ne),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrscs",	OPPT(cs),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrscc",	OPPT(cc),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrsmi",	OPPT(mi),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrspl",	OPPT(pl),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrsvs",	OPPT(vs),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrsvc",	OPPT(vc),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrshi",	OPPT(hi),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrsls",	OPPT(ls),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrsge",	OPPT(ge),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrslt",	OPPT(lt),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrsgt",	OPPT(gt),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrsle",	OPPT(le),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
{ "mrsal",	OPPT(al),	OPPTF,	AO_2(OP_R, OP_R_SPSR)		},
/* msr */
{ "msr",	OPPTI(al),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msreq",	OPPTI(eq),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrne",	OPPTI(ne),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrcs",	OPPTI(cs),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrcc",	OPPTI(cc),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrmi",	OPPTI(mi),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrpl",	OPPTI(pl),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrvs",	OPPTI(vs),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrvc",	OPPTI(vc),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrhi",	OPPTI(hi),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrls",	OPPTI(ls),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrge",	OPPTI(ge),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrlt",	OPPTI(lt),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrgt",	OPPTI(gt),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msrle",	OPPTI(le),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msral",	OPPTI(al),	OPPTIF,	AO_2(OP_R_CPSR, OP_R)		},
{ "msr",	OPPTI(al),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msreq",	OPPTI(eq),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrne",	OPPTI(ne),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrcs",	OPPTI(cs),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrcc",	OPPTI(cc),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrmi",	OPPTI(mi),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrpl",	OPPTI(pl),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrvs",	OPPTI(vs),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrvc",	OPPTI(vc),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrhi",	OPPTI(hi),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrls",	OPPTI(ls),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrge",	OPPTI(ge),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrlt",	OPPTI(lt),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrgt",	OPPTI(gt),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msrle",	OPPTI(le),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
{ "msral",	OPPTI(al),	OPPTIF,	AO_2(OP_R_SPSR, OP_R)		},
/* mul */
{ "mul",	OPMUL(al),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "muleq",	OPMUL(eq),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulne",	OPMUL(ne),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulcs",	OPMUL(cs),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulcc",	OPMUL(cc),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulmi",	OPMUL(mi),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulpl",	OPMUL(pl),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulvs",	OPMUL(vs),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulvc",	OPMUL(vc),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulhi",	OPMUL(hi),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulls",	OPMUL(ls),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulge",	OPMUL(ge),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mullt",	OPMUL(lt),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulgt",	OPMUL(gt),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulle",	OPMUL(le),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
{ "mulal",	OPMUL(al),	OPMULF,	AO_3(OP_R, OP_R, OP_R)		},
/* muls */
{ "muls",	OPMULS(al),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "muleqs",	OPMULS(eq),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulnes",	OPMULS(ne),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulcss",	OPMULS(cs),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulccs",	OPMULS(cc),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulmis",	OPMULS(mi),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulpls",	OPMULS(pl),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulvss",	OPMULS(vs),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulvcs",	OPMULS(vc),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulhis",	OPMULS(hi),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mullss",	OPMULS(ls),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulges",	OPMULS(ge),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mullts",	OPMULS(lt),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulgts",	OPMULS(gt),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulles",	OPMULS(le),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
{ "mulals",	OPMULS(al),	OPMULSF,AO_3(OP_R, OP_R, OP_R)		},
/* mvn */
{ "mvn",	OPDP(al,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvneq",	OPDP(eq,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnne",	OPDP(ne,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvncs",	OPDP(cs,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvncc",	OPDP(cc,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnmi",	OPDP(mi,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnpl",	OPDP(pl,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnvs",	OPDP(vs,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnvc",	OPDP(vc,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnhi",	OPDP(hi,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnls",	OPDP(ls,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnge",	OPDP(ge,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnlt",	OPDP(lt,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvngt",	OPDP(gt,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnle",	OPDP(le,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvnal",	OPDP(al,mvn),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "mvn",	OPDPI(al,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvneq",	OPDPI(eq,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnne",	OPDPI(ne,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvncs",	OPDPI(cs,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvncc",	OPDPI(cc,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnmi",	OPDPI(mi,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnpl",	OPDPI(pl,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnvs",	OPDPI(vs,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnvc",	OPDPI(vc,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnhi",	OPDPI(hi,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnls",	OPDPI(ls,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnge",	OPDPI(ge,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnlt",	OPDPI(lt,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvngt",	OPDPI(gt,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnle",	OPDPI(le,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvnal",	OPDPI(al,mvn),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "mvns",	OPDPS(al,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvneqs",	OPDPS(eq,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnnes",	OPDPS(ne,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvncss",	OPDPS(cs,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnccs",	OPDPS(cc,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnmis",	OPDPS(mi,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnpls",	OPDPS(pl,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnvss",	OPDPS(vs,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnvcs",	OPDPS(vc,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnhis",	OPDPS(hi,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnlss",	OPDPS(ls,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnges",	OPDPS(ge,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnlts",	OPDPS(lt,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvngts",	OPDPS(gt,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnles",	OPDPS(le,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvnals",	OPDPS(al,mvn),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "mvns",	OPDPIS(al,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvneqs",	OPDPIS(eq,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnnes",	OPDPIS(ne,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvncss",	OPDPIS(cs,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnccs",	OPDPIS(cc,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnmis",	OPDPIS(mi,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnpls",	OPDPIS(pl,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnvss",	OPDPIS(vs,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnvcs",	OPDPIS(vc,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnhis",	OPDPIS(hi,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnlss",	OPDPIS(ls,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnges",	OPDPIS(ge,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnlts",	OPDPIS(lt,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvngts",	OPDPIS(gt,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnles",	OPDPIS(le,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "mvnals",	OPDPIS(al,mvn),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
/* nop */
{ "nop",	OPDP(al,mov),	OPDPF,  AO_0()				},
/* orr */
{ "orr",	OPDP(al,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orreq",	OPDP(eq,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrne",	OPDP(ne,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrcs",	OPDP(cs,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrcc",	OPDP(cc,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrmi",	OPDP(mi,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrpl",	OPDP(pl,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrvs",	OPDP(vs,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrvc",	OPDP(vc,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrhi",	OPDP(hi,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrls",	OPDP(ls,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrge",	OPDP(ge,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrlt",	OPDP(lt,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrgt",	OPDP(gt,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orrle",	OPDP(le,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orral",	OPDP(al,orr),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "orr",	OPDPI(al,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orreq",	OPDPI(eq,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrne",	OPDPI(ne,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrcs",	OPDPI(cs,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrcc",	OPDPI(cc,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrmi",	OPDPI(mi,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrpl",	OPDPI(pl,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrvs",	OPDPI(vs,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrvc",	OPDPI(vc,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrhi",	OPDPI(hi,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrls",	OPDPI(ls,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrge",	OPDPI(ge,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrlt",	OPDPI(lt,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrgt",	OPDPI(gt,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrle",	OPDPI(le,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orral",	OPDPI(al,orr),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "orrs",	OPDPS(al,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orreqs",	OPDPS(eq,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrnes",	OPDPS(ne,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrcss",	OPDPS(cs,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrccs",	OPDPS(cc,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrmis",	OPDPS(mi,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrpls",	OPDPS(pl,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrvss",	OPDPS(vs,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrvcs",	OPDPS(vc,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrhis",	OPDPS(hi,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrlss",	OPDPS(ls,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrges",	OPDPS(ge,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrlts",	OPDPS(lt,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrgts",	OPDPS(gt,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrles",	OPDPS(le,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrals",	OPDPS(al,orr),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "orrs",	OPDPIS(al,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orreqs",	OPDPIS(eq,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrnes",	OPDPIS(ne,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrcss",	OPDPIS(cs,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrccs",	OPDPIS(cc,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrmis",	OPDPIS(mi,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrpls",	OPDPIS(pl,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrvss",	OPDPIS(vs,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrvcs",	OPDPIS(vc,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrhis",	OPDPIS(hi,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrlss",	OPDPIS(ls,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrges",	OPDPIS(ge,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrlts",	OPDPIS(lt,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrgts",	OPDPIS(gt,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrles",	OPDPIS(le,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "orrals",	OPDPIS(al,orr),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
/* rsb */
{ "rsb",	OPDP(al,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbeq",	OPDP(eq,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbne",	OPDP(ne,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbcs",	OPDP(cs,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbcc",	OPDP(cc,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbmi",	OPDP(mi,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbpl",	OPDP(pl,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbvs",	OPDP(vs,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbvc",	OPDP(vc,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbhi",	OPDP(hi,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbls",	OPDP(ls,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbge",	OPDP(ge,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsblt",	OPDP(lt,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbgt",	OPDP(gt,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsble",	OPDP(le,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsbal",	OPDP(al,rsb),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsb",	OPDPI(al,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbeq",	OPDPI(eq,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbne",	OPDPI(ne,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbcs",	OPDPI(cs,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbcc",	OPDPI(cc,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbmi",	OPDPI(mi,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbpl",	OPDPI(pl,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbvs",	OPDPI(vs,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbvc",	OPDPI(vc,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbhi",	OPDPI(hi,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbls",	OPDPI(ls,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbge",	OPDPI(ge,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsblt",	OPDPI(lt,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbgt",	OPDPI(gt,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsble",	OPDPI(le,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbal",	OPDPI(al,rsb),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsbs",	OPDPS(al,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbeqs",	OPDPS(eq,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbnes",	OPDPS(ne,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbcss",	OPDPS(cs,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbccs",	OPDPS(cc,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbmis",	OPDPS(mi,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbpls",	OPDPS(pl,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbvss",	OPDPS(vs,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbvcs",	OPDPS(vc,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbhis",	OPDPS(hi,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsblss",	OPDPS(ls,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbges",	OPDPS(ge,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsblts",	OPDPS(lt,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbgts",	OPDPS(gt,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbles",	OPDPS(le,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbals",	OPDPS(al,rsb),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsbs",	OPDPIS(al,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbeqs",	OPDPIS(eq,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbnes",	OPDPIS(ne,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbcss",	OPDPIS(cs,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbccs",	OPDPIS(cc,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbmis",	OPDPIS(mi,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbpls",	OPDPIS(pl,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbvss",	OPDPIS(vs,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbvcs",	OPDPIS(vc,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbhis",	OPDPIS(hi,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsblss",	OPDPIS(ls,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbges",	OPDPIS(ge,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsblts",	OPDPIS(lt,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbgts",	OPDPIS(gt,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbles",	OPDPIS(le,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsbals",	OPDPIS(al,rsb),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
/* rsc */
{ "rsc",	OPDP(al,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsceq",	OPDP(eq,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rscne",	OPDP(ne,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsccs",	OPDP(cs,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsccc",	OPDP(cc,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rscmi",	OPDP(mi,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rscpl",	OPDP(pl,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rscvs",	OPDP(vs,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rscvc",	OPDP(vc,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rschi",	OPDP(hi,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rscls",	OPDP(ls,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rscge",	OPDP(ge,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsclt",	OPDP(lt,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rscgt",	OPDP(gt,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rscle",	OPDP(le,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rscal",	OPDP(al,rsc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "rsc",	OPDPI(al,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsceq",	OPDPI(eq,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscne",	OPDPI(ne,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsccs",	OPDPI(cs,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsccc",	OPDPI(cc,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscmi",	OPDPI(mi,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscpl",	OPDPI(pl,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscvs",	OPDPI(vs,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscvc",	OPDPI(vc,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rschi",	OPDPI(hi,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscls",	OPDPI(ls,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscge",	OPDPI(ge,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rsclt",	OPDPI(lt,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscgt",	OPDPI(gt,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscle",	OPDPI(le,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscal",	OPDPI(al,rsc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "rscs",	OPDPS(al,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsceqs",	OPDPS(eq,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscnes",	OPDPS(ne,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsccss",	OPDPS(cs,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscccs",	OPDPS(cc,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscmis",	OPDPS(mi,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscpls",	OPDPS(pl,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscvss",	OPDPS(vs,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscvcs",	OPDPS(vc,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rschis",	OPDPS(hi,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsclss",	OPDPS(ls,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscges",	OPDPS(ge,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rsclts",	OPDPS(lt,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscgts",	OPDPS(gt,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscles",	OPDPS(le,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscals",	OPDPS(al,rsc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "rscs",	OPDPIS(al,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsceqs",	OPDPIS(eq,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rscnes",	OPDPIS(ne,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsccss",	OPDPIS(cs,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rscccs",	OPDPIS(cc,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rscmis",	OPDPIS(mi,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rscpls",	OPDPIS(pl,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rscvss",	OPDPIS(vs,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rscvcs",	OPDPIS(vc,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rschis",	OPDPIS(hi,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsclss",	OPDPIS(ls,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rscges",	OPDPIS(ge,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rsclts",	OPDPIS(lt,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rscgts",	OPDPIS(gt,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rscles",	OPDPIS(le,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "rscals",	OPDPIS(al,rsc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
/* sbc */
{ "sbc",	OPDP(al,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbceq",	OPDP(eq,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbcne",	OPDP(ne,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbccs",	OPDP(cs,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbccc",	OPDP(cc,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbcmi",	OPDP(mi,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbcpl",	OPDP(pl,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbcvs",	OPDP(vs,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbcvc",	OPDP(vc,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbchi",	OPDP(hi,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbcls",	OPDP(ls,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbcge",	OPDP(ge,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbclt",	OPDP(lt,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbcgt",	OPDP(gt,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbcle",	OPDP(le,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbcal",	OPDP(al,sbc),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sbc",	OPDPI(al,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbceq",	OPDPI(eq,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcne",	OPDPI(ne,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbccs",	OPDPI(cs,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbccc",	OPDPI(cc,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcmi",	OPDPI(mi,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcpl",	OPDPI(pl,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcvs",	OPDPI(vs,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcvc",	OPDPI(vc,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbchi",	OPDPI(hi,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcls",	OPDPI(ls,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcge",	OPDPI(ge,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbclt",	OPDPI(lt,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcgt",	OPDPI(gt,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcle",	OPDPI(le,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcal",	OPDPI(al,sbc),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sbcs",	OPDPS(al,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbceqs",	OPDPS(eq,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcnes",	OPDPS(ne,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbccss",	OPDPS(cs,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcccs",	OPDPS(cc,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcmis",	OPDPS(mi,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcpls",	OPDPS(pl,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcvss",	OPDPS(vs,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcvcs",	OPDPS(vc,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbchis",	OPDPS(hi,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbclss",	OPDPS(ls,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcges",	OPDPS(ge,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbclts",	OPDPS(lt,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcgts",	OPDPS(gt,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcles",	OPDPS(le,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcals",	OPDPS(al,sbc),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sbcs",	OPDPIS(al,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbceqs",	OPDPIS(eq,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbcnes",	OPDPIS(ne,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbccss",	OPDPIS(cs,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbcccs",	OPDPIS(cc,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbcmis",	OPDPIS(mi,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbcpls",	OPDPIS(pl,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbcvss",	OPDPIS(vs,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbcvcs",	OPDPIS(vc,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbchis",	OPDPIS(hi,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbclss",	OPDPIS(ls,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbcges",	OPDPIS(ge,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbclts",	OPDPIS(lt,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbcgts",	OPDPIS(gt,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbcles",	OPDPIS(le,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sbcals",	OPDPIS(al,sbc),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
/* stc */
{ "stc",	OPCDTS(al),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stceq",	OPCDTS(eq),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stcne",	OPCDTS(ne),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stccs",	OPCDTS(cs),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stccc",	OPCDTS(cc),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stcmi",	OPCDTS(mi),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stcpl",	OPCDTS(pl),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stcvs",	OPCDTS(vs),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stcvc",	OPCDTS(vc),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stchi",	OPCDTS(hi),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stcls",	OPCDTS(ls),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stcge",	OPCDTS(ge),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stclt",	OPCDTS(lt),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stcgt",	OPCDTS(gt),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stcle",	OPCDTS(le),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
{ "stcal",	OPCDTS(al),	OPCDTSF,AO_3(OPCDTS_U4, OP_R, OPCDTS_U8)},
/* stm */
{ "stm",	OPBDTS(al),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmeq",	OPBDTS(eq),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmne",	OPBDTS(ne),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmcs",	OPBDTS(cs),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmcc",	OPBDTS(cc),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmmi",	OPBDTS(mi),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmpl",	OPBDTS(pl),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmvs",	OPBDTS(vs),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmvc",	OPBDTS(vc),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmhi",	OPBDTS(hi),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmls",	OPBDTS(ls),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmge",	OPBDTS(ge),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmlt",	OPBDTS(lt),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmgt",	OPBDTS(gt),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmle",	OPBDTS(ge),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
{ "stmal",	OPBDTS(al),	OPBDTSF,AO_2(OP_R, OPBDT_U16)		},
/* str */
{ "str",	OPSDTS(al),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "streq",	OPSDTS(eq),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strne",	OPSDTS(ne),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strcs",	OPSDTS(cs),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strcc",	OPSDTS(cc),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strmi",	OPSDTS(mi),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strpl",	OPSDTS(pl),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strvs",	OPSDTS(vs),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strvc",	OPSDTS(vc),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strhi",	OPSDTS(hi),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strls",	OPSDTS(ls),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strge",	OPSDTS(ge),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strlt",	OPSDTS(lt),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strgt",	OPSDTS(gt),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "strle",	OPSDTS(le),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
{ "stral",	OPSDTS(al),	OPSDTSF,AO_3(OP_R, OP_DR, OP_R)		},
/* strb */
{ "strb",	OPSDTSB(al),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "streqb",	OPSDTSB(eq),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strneb",	OPSDTSB(ne),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strcsb",	OPSDTSB(cs),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strccb",	OPSDTSB(cc),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strmib",	OPSDTSB(mi),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strplb",	OPSDTSB(pl),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strvsb",	OPSDTSB(vs),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strvcb",	OPSDTSB(vc),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strhib",	OPSDTSB(hi),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strlsb",	OPSDTSB(ls),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strgeb",	OPSDTSB(ge),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strltb",	OPSDTSB(lt),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strgtb",	OPSDTSB(gt),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "strleb",	OPSDTSB(le),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
{ "stralb",	OPSDTSB(al),	OPSDTSBF,AO_3(OP_R, OP_DR, OP_R)	},
/* sub */
{ "sub",	OPDP(al,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subeq",	OPDP(eq,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subne",	OPDP(ne,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subcs",	OPDP(cs,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subcc",	OPDP(cc,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "submi",	OPDP(mi,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subpl",	OPDP(pl,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subvs",	OPDP(vs,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subvc",	OPDP(vc,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subhi",	OPDP(hi,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subls",	OPDP(ls,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subge",	OPDP(ge,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sublt",	OPDP(lt,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subgt",	OPDP(gt,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "suble",	OPDP(le,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "subal",	OPDP(al,sub),	OPDPF,  AO_3(OP_R, OP_R, OP_R)		},
{ "sub",	OPDPI(al,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subeq",	OPDPI(eq,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subne",	OPDPI(ne,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subcs",	OPDPI(cs,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subcc",	OPDPI(cc,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "submi",	OPDPI(mi,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subpl",	OPDPI(pl,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subvs",	OPDPI(vs,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subvc",	OPDPI(vc,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subhi",	OPDPI(hi,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subls",	OPDPI(ls,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subge",	OPDPI(ge,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "sublt",	OPDPI(lt,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subgt",	OPDPI(gt,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "suble",	OPDPI(le,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subal",	OPDPI(al,sub),	OPDPIF, AO_3(OP_R, OP_R, OPDPI_U12)	},
{ "subs",	OPDPS(al,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subeqs",	OPDPS(eq,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subnes",	OPDPS(ne,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subcss",	OPDPS(cs,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subccs",	OPDPS(cc,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "submis",	OPDPS(mi,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subpls",	OPDPS(pl,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subvss",	OPDPS(vs,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subvcs",	OPDPS(vc,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subhis",	OPDPS(hi,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sublss",	OPDPS(ls,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subges",	OPDPS(ge,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "sublts",	OPDPS(lt,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subgts",	OPDPS(gt,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subles",	OPDPS(le,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subals",	OPDPS(al,sub),	OPDPSF, AO_3(OP_R, OP_R, OP_R)		},
{ "subs",	OPDPIS(al,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subeqs",	OPDPIS(eq,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subnes",	OPDPIS(ne,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subcss",	OPDPIS(cs,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subccs",	OPDPIS(cc,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "submis",	OPDPIS(mi,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subpls",	OPDPIS(pl,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subvss",	OPDPIS(vs,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subvcs",	OPDPIS(vc,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subhis",	OPDPIS(hi,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sublss",	OPDPIS(ls,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subges",	OPDPIS(ge,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "sublts",	OPDPIS(lt,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subgts",	OPDPIS(gt,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subles",	OPDPIS(le,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
{ "subals",	OPDPIS(al,sub),	OPDPISF,AO_3(OP_R, OP_R, OPDPIS_U12)	},
/* swi */
{ "swi",	OPSI(al),	OPSIF,	AO_1(OPSI_U24)			},
{ "swieq",	OPSI(eq),	OPSIF,	AO_1(OPSI_U24)			},
{ "swine",	OPSI(ne),	OPSIF,	AO_1(OPSI_U24)			},
{ "swics",	OPSI(cs),	OPSIF,	AO_1(OPSI_U24)			},
{ "swicc",	OPSI(cc),	OPSIF,	AO_1(OPSI_U24)			},
{ "swimi",	OPSI(mi),	OPSIF,	AO_1(OPSI_U24)			},
{ "swipl",	OPSI(pl),	OPSIF,	AO_1(OPSI_U24)			},
{ "swivs",	OPSI(vs),	OPSIF,	AO_1(OPSI_U24)			},
{ "swivc",	OPSI(vc),	OPSIF,	AO_1(OPSI_U24)			},
{ "swihi",	OPSI(hi),	OPSIF,	AO_1(OPSI_U24)			},
{ "swils",	OPSI(ls),	OPSIF,	AO_1(OPSI_U24)			},
{ "swige",	OPSI(ge),	OPSIF,	AO_1(OPSI_U24)			},
{ "swilt",	OPSI(lt),	OPSIF,	AO_1(OPSI_U24)			},
{ "swigt",	OPSI(gt),	OPSIF,	AO_1(OPSI_U24)			},
{ "swile",	OPSI(le),	OPSIF,	AO_1(OPSI_U24)			},
{ "swial",	OPSI(al),	OPSIF,	AO_1(OPSI_U24)			},
/* swp */
{ "swp",	OPSDS(al),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpeq",	OPSDS(eq),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpne",	OPSDS(ne),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpcs",	OPSDS(cs),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpcc",	OPSDS(cc),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpmi",	OPSDS(mi),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swppl",	OPSDS(pl),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpvs",	OPSDS(vs),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpvc",	OPSDS(vc),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swphi",	OPSDS(hi),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpls",	OPSDS(ls),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpge",	OPSDS(ge),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swplt",	OPSDS(lt),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpgt",	OPSDS(gt),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swple",	OPSDS(le),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
{ "swpal",	OPSDS(al),	OPSDSF, AO_3(OP_R, OP_R, OP_DR)		},
/* swpb */
{ "swpb",	OPSDSB(al),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpeqb",	OPSDSB(eq),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpneb",	OPSDSB(ne),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpcsb",	OPSDSB(cs),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpccb",	OPSDSB(cc),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpmib",	OPSDSB(mi),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpplb",	OPSDSB(pl),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpvsb",	OPSDSB(vs),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpvcb",	OPSDSB(vc),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swphib",	OPSDSB(hi),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swplsb",	OPSDSB(ls),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpgeb",	OPSDSB(ge),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpltb",	OPSDSB(lt),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpgtb",	OPSDSB(gt),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpleb",	OPSDSB(le),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
{ "swpalb",	OPSDSB(al),	OPSDSBF,AO_3(OP_R, OP_R, OP_DR)		},
/* teq */
{ "teq",	OPDP(al,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqeq",	OPDP(eq,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqne",	OPDP(ne,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqcs",	OPDP(cs,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqcc",	OPDP(cc,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqmi",	OPDP(mi,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqpl",	OPDP(pl,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqvs",	OPDP(vs,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqvc",	OPDP(vc,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqhi",	OPDP(hi,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqls",	OPDP(ls,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqge",	OPDP(ge,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqlt",	OPDP(lt,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqgt",	OPDP(gt,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqle",	OPDP(le,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teqal",	OPDP(al,teq),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "teq",	OPDPI(al,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqeq",	OPDPI(eq,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqne",	OPDPI(ne,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqcs",	OPDPI(cs,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqcc",	OPDPI(cc,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqmi",	OPDPI(mi,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqpl",	OPDPI(pl,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqvs",	OPDPI(vs,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqvc",	OPDPI(vc,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqhi",	OPDPI(hi,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqls",	OPDPI(ls,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqge",	OPDPI(ge,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqlt",	OPDPI(lt,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqgt",	OPDPI(gt,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqle",	OPDPI(le,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqal",	OPDPI(al,teq),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "teqs",	OPDPS(al,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqeqs",	OPDPS(eq,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqnes",	OPDPS(ne,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqcss",	OPDPS(cs,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqccs",	OPDPS(cc,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqmis",	OPDPS(mi,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqpls",	OPDPS(pl,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqvss",	OPDPS(vs,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqvcs",	OPDPS(vc,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqhis",	OPDPS(hi,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqlss",	OPDPS(ls,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqges",	OPDPS(ge,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqlts",	OPDPS(lt,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqgts",	OPDPS(gt,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqles",	OPDPS(le,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqals",	OPDPS(al,teq),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "teqs",	OPDPIS(al,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqeqs",	OPDPIS(eq,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqnes",	OPDPIS(ne,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqcss",	OPDPIS(cs,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqccs",	OPDPIS(cc,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqmis",	OPDPIS(mi,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqpls",	OPDPIS(pl,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqvss",	OPDPIS(vs,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqvcs",	OPDPIS(vc,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqhis",	OPDPIS(hi,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqlss",	OPDPIS(ls,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqges",	OPDPIS(ge,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqlts",	OPDPIS(lt,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqgts",	OPDPIS(gt,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqles",	OPDPIS(le,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "teqals",	OPDPIS(al,teq),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
/* tst */
{ "tst",	OPDP(al,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tsteq",	OPDP(eq,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstne",	OPDP(ne,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstcs",	OPDP(cs,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstcc",	OPDP(cc,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstmi",	OPDP(mi,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstpl",	OPDP(pl,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstvs",	OPDP(vs,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstvc",	OPDP(vc,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tsthi",	OPDP(hi,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstls",	OPDP(ls,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstge",	OPDP(ge,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstlt",	OPDP(lt,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstgt",	OPDP(gt,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstle",	OPDP(le,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tstal",	OPDP(al,tst),	OPDPF,  AO_2(OP_R, OP_R)		},
{ "tst",	OPDPI(al,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tsteq",	OPDPI(eq,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstne",	OPDPI(ne,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstcs",	OPDPI(cs,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstcc",	OPDPI(cc,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstmi",	OPDPI(mi,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstpl",	OPDPI(pl,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstvs",	OPDPI(vs,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstvc",	OPDPI(vc,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tsthi",	OPDPI(hi,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstls",	OPDPI(ls,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstge",	OPDPI(ge,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstlt",	OPDPI(lt,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstgt",	OPDPI(gt,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstle",	OPDPI(le,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tstal",	OPDPI(al,tst),	OPDPIF, AO_2(OP_R, OPDPI_U12)		},
{ "tsts",	OPDPS(al,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tsteqs",	OPDPS(eq,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstnes",	OPDPS(ne,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstcss",	OPDPS(cs,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstccs",	OPDPS(cc,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstmis",	OPDPS(mi,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstpls",	OPDPS(pl,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstvss",	OPDPS(vs,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstvcs",	OPDPS(vc,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tsthis",	OPDPS(hi,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstlss",	OPDPS(ls,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstges",	OPDPS(ge,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstlts",	OPDPS(lt,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstgts",	OPDPS(gt,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstles",	OPDPS(le,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tstals",	OPDPS(al,tst),	OPDPSF, AO_2(OP_R, OP_R)		},
{ "tsts",	OPDPIS(al,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tsteqs",	OPDPIS(eq,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstnes",	OPDPIS(ne,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstcss",	OPDPIS(cs,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstccs",	OPDPIS(cc,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstmis",	OPDPIS(mi,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstpls",	OPDPIS(pl,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstvss",	OPDPIS(vs,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstvcs",	OPDPIS(vc,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tsthis",	OPDPIS(hi,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstlss",	OPDPIS(ls,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstges",	OPDPIS(ge,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstlts",	OPDPIS(lt,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstgts",	OPDPIS(gt,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstles",	OPDPIS(le,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
{ "tstals",	OPDPIS(al,tst),	OPDPISF,AO_2(OP_R, OPDPI_U12)		},
