diff --git a/src/arch/arm.c b/src/arch/arm.c index 614ae0f..b0d1565 100644 --- a/src/arch/arm.c +++ b/src/arch/arm.c @@ -21,6 +21,17 @@ /* arm */ /* private */ +/* types */ +/* register ids */ +#define REG(name, size, id) REG_ ## name ## _id = id, +enum +{ +#include "arm.reg" + REG_id_count +}; +#undef REG + + /* variables */ static ArchDescription _arm_description = { "elf", ARCH_ENDIAN_BIG, 32, 32 }; diff --git a/src/arch/arm.ins b/src/arch/arm.ins index 6fe9dee..181ce24 100644 --- a/src/arch/arm.ins +++ b/src/arch/arm.ins @@ -56,6 +56,8 @@ /* opcodes */ #define OPNOP AO_IMMEDIATE(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 | (0x4 << 25) | (0x1 << 20)) @@ -88,9 +90,16 @@ #define OPCRTSF (32 << AOD_SIZE) /* data processing */ -#define OPDATA(cond, op)(cond | op) -#define OPDATAF (32 << AOD_SIZE) -#define OP_DATA2 AO_IMMEDIATE(0, 12, 0) +#define OPDP(cond, op) (cond | op) +#define OPDPF (32 << AOD_SIZE) +#define OPDPI(cond, op) (cond | op | (0x1 << 25)) +#define OPDPIF (32 << AOD_SIZE) +#define OPDPI_U12 AO_IMMEDIATE(0, 12, 0) +#define OPDPS(cond, op) (cond | op | (0x1 << 20)) +#define OPDPSF (32 << AOD_SIZE) +#define OPDPIS(cond, op)(cond | op | (0x1 << 25) | (0x1 << 20)) +#define OPDPISF (32 << AOD_SIZE) +#define OPDPIS_U12 OPDPI_U12 /* multiply and multiply-accumulate */ #define OPMUL(cond) (cond | (0x9 << 4)) @@ -100,6 +109,12 @@ #define OPMULA(cond) (cond | (0x1 << 21) | (0x9 << 4)) #define OPMULAF (32 << AOD_SIZE) +/* psr transfer */ +#define OPPT(cond) (cond | (0x2 << 23) | (0xf << 16)) +#define OPPTF (32 << AOD_SIZE) +#define OPPTI(cond) (cond | (0x2 << 23) | (0x29f << 12)) +#define OPPTIF (32 << AOD_SIZE) + /* single data transfer */ #define OPSDTL(cond) (cond | (0x1 << 26) | (0x1 << 20)) #define OPSDTLF (32 << AOD_SIZE) @@ -118,56 +133,200 @@ /* instructions */ /* adc */ -{ "adc", OPDATA(al,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adceq", OPDATA(eq,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adcne", OPDATA(ne,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adccs", OPDATA(cs,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adccc", OPDATA(cc,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adcmi", OPDATA(mi,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adcpl", OPDATA(pl,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adcvs", OPDATA(vs,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adcvc", OPDATA(vc,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adchi", OPDATA(hi,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adcls", OPDATA(ls,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adcge", OPDATA(ge,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adclt", OPDATA(lt,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adcgt", OPDATA(gt,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adcle", OPDATA(le,adc), OPDATAF,OP_R, OP_R, OP_R }, -{ "adcal", OPDATA(al,adc), OPDATAF,OP_R, OP_R, OP_R }, +{ "adc", OPDP(al,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adceq", OPDP(eq,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adcne", OPDP(ne,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adccs", OPDP(cs,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adccc", OPDP(cc,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adcmi", OPDP(mi,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adcpl", OPDP(pl,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adcvs", OPDP(vs,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adcvc", OPDP(vc,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adchi", OPDP(hi,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adcls", OPDP(ls,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adcge", OPDP(ge,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adclt", OPDP(lt,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adcgt", OPDP(gt,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adcle", OPDP(le,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adcal", OPDP(al,adc), OPDPF, OP_R, OP_R, OP_R }, +{ "adc", OPDPI(al,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adceq", OPDPI(eq,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcne", OPDPI(ne,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adccs", OPDPI(cs,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adccc", OPDPI(cc,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcmi", OPDPI(mi,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcpl", OPDPI(pl,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcvs", OPDPI(vs,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcvc", OPDPI(vc,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adchi", OPDPI(hi,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcls", OPDPI(ls,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcge", OPDPI(ge,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adclt", OPDPI(lt,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcgt", OPDPI(gt,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcle", OPDPI(le,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcal", OPDPI(al,adc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adcs", OPDPS(al,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adceqs", OPDPS(eq,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcnes", OPDPS(ne,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adccss", OPDPS(cs,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcccs", OPDPS(cc,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcmis", OPDPS(mi,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcpls", OPDPS(pl,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcvss", OPDPS(vs,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcvcs", OPDPS(vc,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adchis", OPDPS(hi,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adclss", OPDPS(ls,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcges", OPDPS(ge,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adclts", OPDPS(lt,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcgts", OPDPS(gt,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcles", OPDPS(le,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcals", OPDPS(al,adc), OPDPSF, OP_R, OP_R, OP_R }, +{ "adcs", OPDPIS(al,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adceqs", OPDPIS(eq,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adcnes", OPDPIS(ne,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adccss", OPDPIS(cs,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adcccs", OPDPIS(cc,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adcmis", OPDPIS(mi,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adcpls", OPDPIS(pl,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adcvss", OPDPIS(vs,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adcvcs", OPDPIS(vc,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adchis", OPDPIS(hi,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adclss", OPDPIS(ls,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adcges", OPDPIS(ge,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adclts", OPDPIS(lt,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adcgts", OPDPIS(gt,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adcles", OPDPIS(le,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "adcals", OPDPIS(al,adc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, /* add */ -{ "add", OPDATA(al,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addeq", OPDATA(eq,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addne", OPDATA(ne,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addcs", OPDATA(cs,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addcc", OPDATA(cc,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addmi", OPDATA(mi,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addpl", OPDATA(pl,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addvs", OPDATA(vs,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addvc", OPDATA(vc,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addhi", OPDATA(hi,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addls", OPDATA(ls,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addge", OPDATA(ge,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addlt", OPDATA(lt,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addgt", OPDATA(gt,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addle", OPDATA(le,add), OPDATAF,OP_R, OP_R, OP_R }, -{ "addal", OPDATA(al,add), OPDATAF,OP_R, OP_R, OP_R }, +{ "add", OPDP(al,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addeq", OPDP(eq,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addne", OPDP(ne,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addcs", OPDP(cs,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addcc", OPDP(cc,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addmi", OPDP(mi,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addpl", OPDP(pl,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addvs", OPDP(vs,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addvc", OPDP(vc,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addhi", OPDP(hi,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addls", OPDP(ls,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addge", OPDP(ge,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addlt", OPDP(lt,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addgt", OPDP(gt,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addle", OPDP(le,add), OPDPF, OP_R, OP_R, OP_R }, +{ "addal", OPDP(al,add), OPDPF, OP_R, OP_R, OP_R }, +{ "add", OPDPI(al,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addeq", OPDPI(eq,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addne", OPDPI(ne,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addcs", OPDPI(cs,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addcc", OPDPI(cc,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addmi", OPDPI(mi,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addpl", OPDPI(pl,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addvs", OPDPI(vs,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addvc", OPDPI(vc,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addhi", OPDPI(hi,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addls", OPDPI(ls,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addge", OPDPI(ge,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addlt", OPDPI(lt,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addgt", OPDPI(gt,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addle", OPDPI(le,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "addal", OPDPI(al,add), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "adds", OPDPS(al,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addeqs", OPDPS(eq,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addnes", OPDPS(ne,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addcss", OPDPS(cs,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addccs", OPDPS(cc,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addmis", OPDPS(mi,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addpls", OPDPS(pl,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addvss", OPDPS(vs,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addvcs", OPDPS(vc,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addhis", OPDPS(hi,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addlss", OPDPS(ls,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addges", OPDPS(ge,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addlts", OPDPS(lt,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addgts", OPDPS(gt,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addles", OPDPS(le,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "addals", OPDPS(al,add), OPDPSF, OP_R, OP_R, OP_R }, +{ "adds", OPDPIS(al,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addeqs", OPDPIS(eq,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addnes", OPDPIS(ne,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addcss", OPDPIS(cs,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addccs", OPDPIS(cc,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addmis", OPDPIS(mi,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addpls", OPDPIS(pl,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addvss", OPDPIS(vs,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addvcs", OPDPIS(vc,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addhis", OPDPIS(hi,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addlss", OPDPIS(ls,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addges", OPDPIS(ge,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addlts", OPDPIS(lt,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addgts", OPDPIS(gt,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addles", OPDPIS(le,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "addals", OPDPIS(al,add), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, /* and */ -{ "and", OPDATA(al,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andeq", OPDATA(eq,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andne", OPDATA(ne,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andcs", OPDATA(cs,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andcc", OPDATA(cc,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andmi", OPDATA(mi,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andpl", OPDATA(pl,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andvs", OPDATA(vs,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andvc", OPDATA(vc,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andhi", OPDATA(hi,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andls", OPDATA(ls,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andge", OPDATA(ge,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andlt", OPDATA(lt,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andgt", OPDATA(gt,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andle", OPDATA(le,and), OPDATAF,OP_R, OP_R, OP_R }, -{ "andal", OPDATA(al,and), OPDATAF,OP_R, OP_R, OP_R }, +{ "and", OPDP(al,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andeq", OPDP(eq,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andne", OPDP(ne,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andcs", OPDP(cs,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andcc", OPDP(cc,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andmi", OPDP(mi,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andpl", OPDP(pl,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andvs", OPDP(vs,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andvc", OPDP(vc,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andhi", OPDP(hi,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andls", OPDP(ls,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andge", OPDP(ge,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andlt", OPDP(lt,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andgt", OPDP(gt,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andle", OPDP(le,and), OPDPF, OP_R, OP_R, OP_R }, +{ "andal", OPDP(al,and), OPDPF, OP_R, OP_R, OP_R }, +{ "and", OPDPI(al,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andeq", OPDPI(eq,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andne", OPDPI(ne,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andcs", OPDPI(cs,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andcc", OPDPI(cc,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andmi", OPDPI(mi,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andpl", OPDPI(pl,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andvs", OPDPI(vs,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andvc", OPDPI(vc,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andhi", OPDPI(hi,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andls", OPDPI(ls,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andge", OPDPI(ge,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andlt", OPDPI(lt,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andgt", OPDPI(gt,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andle", OPDPI(le,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "andal", OPDPI(al,and), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "ands", OPDPS(al,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andeqs", OPDPS(eq,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andnes", OPDPS(ne,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andcss", OPDPS(cs,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andccs", OPDPS(cc,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andmis", OPDPS(mi,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andpls", OPDPS(pl,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andvss", OPDPS(vs,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andvcs", OPDPS(vc,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andhis", OPDPS(hi,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andlss", OPDPS(ls,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andges", OPDPS(ge,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andlts", OPDPS(lt,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andgts", OPDPS(gt,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andles", OPDPS(le,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "andals", OPDPS(al,and), OPDPSF, OP_R, OP_R, OP_R }, +{ "ands", OPDPIS(al,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andeqs", OPDPIS(eq,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andnes", OPDPIS(ne,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andcss", OPDPIS(cs,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andccs", OPDPIS(cc,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andmis", OPDPIS(mi,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andpls", OPDPIS(pl,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andvss", OPDPIS(vs,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andvcs", OPDPIS(vc,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andhis", OPDPIS(hi,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andlss", OPDPIS(ls,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andges", OPDPIS(ge,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andlts", OPDPIS(lt,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andgts", OPDPIS(gt,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andles", OPDPIS(le,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "andals", OPDPIS(al,and), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, /* b */ { "b", OPB(al), OPBF, OPB_S26, AOT_NONE, AOT_NONE }, { "beq", OPB(eq), OPBF, OPB_S26, AOT_NONE, AOT_NONE }, @@ -186,22 +345,70 @@ { "bge", OPB(ge), OPBF, OPB_S26, AOT_NONE, AOT_NONE }, { "bal", OPB(al), OPBF, OPB_S26, AOT_NONE, AOT_NONE }, /* bic */ -{ "bic", OPDATA(al,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "biceq", OPDATA(eq,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bicne", OPDATA(ne,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "biccs", OPDATA(cs,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "biccc", OPDATA(cc,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bicmi", OPDATA(mi,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bicpl", OPDATA(pl,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bicvs", OPDATA(vs,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bicvc", OPDATA(vc,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bichi", OPDATA(hi,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bicls", OPDATA(ls,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bicge", OPDATA(ge,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "biclt", OPDATA(lt,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bicgt", OPDATA(gt,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bicle", OPDATA(le,bic), OPDATAF,OP_R, OP_R, OP_R }, -{ "bical", OPDATA(al,bic), OPDATAF,OP_R, OP_R, OP_R }, +{ "bic", OPDP(al,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "biceq", OPDP(eq,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bicne", OPDP(ne,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "biccs", OPDP(cs,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "biccc", OPDP(cc,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bicmi", OPDP(mi,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bicpl", OPDP(pl,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bicvs", OPDP(vs,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bicvc", OPDP(vc,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bichi", OPDP(hi,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bicls", OPDP(ls,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bicge", OPDP(ge,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "biclt", OPDP(lt,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bicgt", OPDP(gt,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bicle", OPDP(le,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bical", OPDP(al,bic), OPDPF, OP_R, OP_R, OP_R }, +{ "bic", OPDPI(al,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "biceq", OPDPI(eq,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bicne", OPDPI(ne,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "biccs", OPDPI(cs,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "biccc", OPDPI(cc,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bicmi", OPDPI(mi,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bicpl", OPDPI(pl,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bicvs", OPDPI(vs,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bicvc", OPDPI(vc,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bichi", OPDPI(hi,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bicls", OPDPI(ls,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bicge", OPDPI(ge,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "biclt", OPDPI(lt,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bicgt", OPDPI(gt,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bicle", OPDPI(le,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bical", OPDPI(al,bic), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "bics", OPDPS(al,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "biceqs", OPDPS(eq,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bicnes", OPDPS(ne,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "biccss", OPDPS(cs,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bicccs", OPDPS(cc,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bicmis", OPDPS(mi,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bicpls", OPDPS(pl,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bicvss", OPDPS(vs,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bicvcs", OPDPS(vc,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bichis", OPDPS(hi,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "biclss", OPDPS(ls,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bicges", OPDPS(ge,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "biclts", OPDPS(lt,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bicgts", OPDPS(gt,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bicles", OPDPS(le,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bicals", OPDPS(al,bic), OPDPSF, OP_R, OP_R, OP_R }, +{ "bics", OPDPIS(al,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "biceqs", OPDPIS(eq,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bicnes", OPDPIS(ne,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "biccss", OPDPIS(cs,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bicccs", OPDPIS(cc,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bicmis", OPDPIS(mi,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bicpls", OPDPIS(pl,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bicvss", OPDPIS(vs,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bicvcs", OPDPIS(vc,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bichis", OPDPIS(hi,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "biclss", OPDPIS(ls,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bicges", OPDPIS(ge,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "biclts", OPDPIS(lt,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bicgts", OPDPIS(gt,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bicles", OPDPIS(le,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "bicals", OPDPIS(al,bic), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, /* bl */ { "bl", OPBL(al), OPBLF, OPBL_S26, AOT_NONE, AOT_NONE }, { "bleq", OPBL(eq), OPBLF, OPBL_S26, AOT_NONE, AOT_NONE }, @@ -241,56 +448,200 @@ { "cdp", 0x00000000, OPNOP, AOT_NONE, AOT_NONE, AOT_NONE }, #endif /* cmn */ -{ "cmn", OPDATA(al,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmneq", OPDATA(eq,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnne", OPDATA(ne,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmncs", OPDATA(cs,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmncc", OPDATA(cc,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnmi", OPDATA(mi,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnpl", OPDATA(pl,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnvs", OPDATA(vs,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnvc", OPDATA(vc,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnhi", OPDATA(hi,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnls", OPDATA(ls,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnge", OPDATA(ge,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnlt", OPDATA(lt,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmngt", OPDATA(gt,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnle", OPDATA(le,cmn), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmnal", OPDATA(al,cmn), OPDATAF,OP_R, OP_R, OP_R }, +{ "cmn", OPDP(al,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmneq", OPDP(eq,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnne", OPDP(ne,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmncs", OPDP(cs,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmncc", OPDP(cc,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnmi", OPDP(mi,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnpl", OPDP(pl,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnvs", OPDP(vs,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnvc", OPDP(vc,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnhi", OPDP(hi,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnls", OPDP(ls,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnge", OPDP(ge,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnlt", OPDP(lt,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmngt", OPDP(gt,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnle", OPDP(le,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmnal", OPDP(al,cmn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmn", OPDPI(al,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmneq", OPDPI(eq,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnne", OPDPI(ne,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmncs", OPDPI(cs,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmncc", OPDPI(cc,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnmi", OPDPI(mi,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnpl", OPDPI(pl,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnvs", OPDPI(vs,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnvc", OPDPI(vc,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnhi", OPDPI(hi,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnls", OPDPI(ls,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnge", OPDPI(ge,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnlt", OPDPI(lt,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmngt", OPDPI(gt,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnle", OPDPI(le,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnal", OPDPI(al,cmn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmns", OPDPS(al,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmneqs", OPDPS(eq,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnnes", OPDPS(ne,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmncss", OPDPS(cs,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnccs", OPDPS(cc,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnmis", OPDPS(mi,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnpls", OPDPS(pl,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnvss", OPDPS(vs,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnvcs", OPDPS(vc,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnhis", OPDPS(hi,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnlss", OPDPS(ls,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnges", OPDPS(ge,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnlts", OPDPS(lt,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmngts", OPDPS(gt,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnles", OPDPS(le,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmnals", OPDPS(al,cmn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmns", OPDPIS(al,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmneqs", OPDPIS(eq,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnnes", OPDPIS(ne,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmncss", OPDPIS(cs,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnccs", OPDPIS(cc,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnmis", OPDPIS(mi,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnpls", OPDPIS(pl,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnvss", OPDPIS(vs,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnvcs", OPDPIS(vc,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnhis", OPDPIS(hi,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnlss", OPDPIS(ls,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnges", OPDPIS(ge,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnlts", OPDPIS(lt,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmngts", OPDPIS(gt,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnles", OPDPIS(le,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmnals", OPDPIS(al,cmn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, /* cmp */ -{ "cmp", OPDATA(al,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpeq", OPDATA(eq,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpne", OPDATA(ne,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpcs", OPDATA(cs,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpcc", OPDATA(cc,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpmi", OPDATA(mi,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmppl", OPDATA(pl,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpvs", OPDATA(vs,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpvc", OPDATA(vc,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmphi", OPDATA(hi,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpls", OPDATA(ls,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpge", OPDATA(ge,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmplt", OPDATA(lt,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpgt", OPDATA(gt,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmple", OPDATA(le,cmp), OPDATAF,OP_R, OP_R, OP_R }, -{ "cmpal", OPDATA(al,cmp), OPDATAF,OP_R, OP_R, OP_R }, +{ "cmp", OPDP(al,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpeq", OPDP(eq,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpne", OPDP(ne,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpcs", OPDP(cs,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpcc", OPDP(cc,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpmi", OPDP(mi,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmppl", OPDP(pl,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpvs", OPDP(vs,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpvc", OPDP(vc,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmphi", OPDP(hi,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpls", OPDP(ls,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpge", OPDP(ge,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmplt", OPDP(lt,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpgt", OPDP(gt,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmple", OPDP(le,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmpal", OPDP(al,cmp), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "cmp", OPDPI(al,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpeq", OPDPI(eq,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpne", OPDPI(ne,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpcs", OPDPI(cs,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpcc", OPDPI(cc,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpmi", OPDPI(mi,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmppl", OPDPI(pl,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpvs", OPDPI(vs,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpvc", OPDPI(vc,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmphi", OPDPI(hi,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpls", OPDPI(ls,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpge", OPDPI(ge,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmplt", OPDPI(lt,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpgt", OPDPI(gt,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmple", OPDPI(le,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpal", OPDPI(al,cmp), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "cmps", OPDPS(al,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmpeqs", OPDPS(eq,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmpnes", OPDPS(ne,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmpcss", OPDPS(cs,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmpccs", OPDPS(cc,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmpmis", OPDPS(mi,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmppls", OPDPS(pl,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmpvss", OPDPS(vs,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmpvcs", OPDPS(vc,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmphis", OPDPS(hi,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmplss", OPDPS(ls,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmpges", OPDPS(ge,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmplts", OPDPS(lt,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmpgts", OPDPS(gt,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmples", OPDPS(le,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmpals", OPDPS(al,cmp), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "cmps", OPDPIS(al,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpeqs", OPDPIS(eq,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpnes", OPDPIS(ne,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpcss", OPDPIS(cs,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpccs", OPDPIS(cc,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpmis", OPDPIS(mi,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmppls", OPDPIS(pl,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpvss", OPDPIS(vs,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpvcs", OPDPIS(vc,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmphis", OPDPIS(hi,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmplss", OPDPIS(ls,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpges", OPDPIS(ge,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmplts", OPDPIS(lt,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpgts", OPDPIS(gt,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmples", OPDPIS(le,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "cmpals", OPDPIS(al,cmp), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, /* eor */ -{ "eor", OPDATA(al,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eoreq", OPDATA(eq,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorne", OPDATA(ne,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorcs", OPDATA(cs,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorcc", OPDATA(cc,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eormi", OPDATA(mi,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorpl", OPDATA(pl,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorvs", OPDATA(vs,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorvc", OPDATA(vc,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorhi", OPDATA(hi,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorls", OPDATA(ls,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorge", OPDATA(ge,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorlt", OPDATA(lt,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorgt", OPDATA(gt,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eorle", OPDATA(le,eor), OPDATAF,OP_R, OP_R, OP_R }, -{ "eoral", OPDATA(al,eor), OPDATAF,OP_R, OP_R, OP_R }, +{ "eor", OPDP(al,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eoreq", OPDP(eq,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorne", OPDP(ne,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorcs", OPDP(cs,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorcc", OPDP(cc,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eormi", OPDP(mi,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorpl", OPDP(pl,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorvs", OPDP(vs,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorvc", OPDP(vc,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorhi", OPDP(hi,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorls", OPDP(ls,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorge", OPDP(ge,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorlt", OPDP(lt,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorgt", OPDP(gt,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eorle", OPDP(le,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eoral", OPDP(al,eor), OPDPF, OP_R, OP_R, OP_R }, +{ "eor", OPDPI(al,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eoreq", OPDPI(eq,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorne", OPDPI(ne,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorcs", OPDPI(cs,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorcc", OPDPI(cc,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eormi", OPDPI(mi,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorpl", OPDPI(pl,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorvs", OPDPI(vs,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorvc", OPDPI(vc,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorhi", OPDPI(hi,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorls", OPDPI(ls,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorge", OPDPI(ge,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorlt", OPDPI(lt,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorgt", OPDPI(gt,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eorle", OPDPI(le,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eoral", OPDPI(al,eor), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "eors", OPDPS(al,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eoreqs", OPDPS(eq,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eornes", OPDPS(ne,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorcss", OPDPS(cs,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorccs", OPDPS(cc,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eormis", OPDPS(mi,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorpls", OPDPS(pl,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorvss", OPDPS(vs,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorvcs", OPDPS(vc,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorhis", OPDPS(hi,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorlss", OPDPS(ls,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorges", OPDPS(ge,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorlts", OPDPS(lt,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorgts", OPDPS(gt,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorles", OPDPS(le,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eorals", OPDPS(al,eor), OPDPSF, OP_R, OP_R, OP_R }, +{ "eors", OPDPIS(al,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eoreqs", OPDPIS(eq,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eornes", OPDPIS(ne,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorcss", OPDPIS(cs,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorccs", OPDPIS(cc,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eormis", OPDPIS(mi,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorpls", OPDPIS(pl,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorvss", OPDPIS(vs,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorvcs", OPDPIS(vc,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorhis", OPDPIS(hi,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorlss", OPDPIS(ls,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorges", OPDPIS(ge,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorlts", OPDPIS(lt,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorgts", OPDPIS(gt,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorles", OPDPIS(le,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "eorals", OPDPIS(al,eor), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, /* ldc */ { "ldc", OPCDTL(al), OPCDTLF,OP_R, OP_R, OP_R }, { "ldceq", OPCDTL(eq), OPCDTLF,OP_R, OP_R, OP_R }, @@ -363,22 +714,70 @@ { "mla", 0x00000000, OPNOP, AOT_NONE, AOT_NONE, AOT_NONE }, #endif /* mov */ -{ "mov", OPDATA(al,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "moveq", OPDATA(eq,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movne", OPDATA(ne,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movcs", OPDATA(cs,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movcc", OPDATA(cc,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movmi", OPDATA(mi,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movpl", OPDATA(pl,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movvs", OPDATA(vs,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movvc", OPDATA(vc,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movhi", OPDATA(hi,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movls", OPDATA(ls,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movge", OPDATA(ge,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movlt", OPDATA(lt,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movgt", OPDATA(gt,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "movle", OPDATA(le,mov), OPDATAF,OP_R, OP_R, OP_R }, -{ "moval", OPDATA(al,mov), OPDATAF,OP_R, OP_R, OP_R }, +{ "mov", OPDP(al,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "moveq", OPDP(eq,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movne", OPDP(ne,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movcs", OPDP(cs,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movcc", OPDP(cc,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movmi", OPDP(mi,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movpl", OPDP(pl,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movvs", OPDP(vs,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movvc", OPDP(vc,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movhi", OPDP(hi,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movls", OPDP(ls,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movge", OPDP(ge,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movlt", OPDP(lt,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movgt", OPDP(gt,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "movle", OPDP(le,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "moval", OPDP(al,mov), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mov", OPDPI(al,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "moveq", OPDPI(eq,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movne", OPDPI(ne,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movcs", OPDPI(cs,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movcc", OPDPI(cc,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movmi", OPDPI(mi,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movpl", OPDPI(pl,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movvs", OPDPI(vs,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movvc", OPDPI(vc,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movhi", OPDPI(hi,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movls", OPDPI(ls,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movge", OPDPI(ge,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movlt", OPDPI(lt,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movgt", OPDPI(gt,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movle", OPDPI(le,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "moval", OPDPI(al,mov), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "movs", OPDPS(al,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "moveqs", OPDPS(eq,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movnes", OPDPS(ne,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movcss", OPDPS(cs,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movccs", OPDPS(cc,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movmis", OPDPS(mi,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movpls", OPDPS(pl,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movvss", OPDPS(vs,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movvcs", OPDPS(vc,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movhis", OPDPS(hi,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movlss", OPDPS(ls,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movges", OPDPS(ge,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movlts", OPDPS(lt,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movgts", OPDPS(gt,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movles", OPDPS(le,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movals", OPDPS(al,mov), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "movs", OPDPIS(al,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "moveqs", OPDPIS(eq,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movnes", OPDPIS(ne,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movcss", OPDPIS(cs,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movccs", OPDPIS(cc,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movmis", OPDPIS(mi,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movpls", OPDPIS(pl,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movvss", OPDPIS(vs,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movvcs", OPDPIS(vc,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movhis", OPDPIS(hi,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movlss", OPDPIS(ls,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movges", OPDPIS(ge,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movlts", OPDPIS(lt,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movgts", OPDPIS(gt,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movles", OPDPIS(le,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "movals", OPDPIS(al,mov), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, /* mrc */ { "mrc", OPCRTL(al), OPCRTLF,OP_R, OP_R, OP_R }, { "mrceq", OPCRTL(eq), OPCRTLF,OP_R, OP_R, OP_R }, @@ -396,116 +795,403 @@ { "mrcgt", OPCRTL(gt), OPCRTLF,OP_R, OP_R, OP_R }, { "mrcle", OPCRTL(le), OPCRTLF,OP_R, OP_R, OP_R }, { "mrcal", OPCRTL(al), OPCRTLF,OP_R, OP_R, OP_R }, -#if 1 /* FIXME implement correctly */ -{ "mrs", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -#endif +/* mrs */ +{ "mrs", OPPT(al), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrseq", OPPT(eq), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrsne", OPPT(ne), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrscs", OPPT(cs), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrscc", OPPT(cc), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrsmi", OPPT(mi), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrspl", OPPT(pl), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrsvs", OPPT(vs), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrsvc", OPPT(vc), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrshi", OPPT(hi), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrsls", OPPT(ls), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrsge", OPPT(ge), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrslt", OPPT(lt), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrsgt", OPPT(gt), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrsle", OPPT(le), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrsal", OPPT(al), OPPTF, OP_R, OP_R_CPSR,AOT_NONE }, +{ "mrs", OPPT(al), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrseq", OPPT(eq), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrsne", OPPT(ne), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrscs", OPPT(cs), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrscc", OPPT(cc), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrsmi", OPPT(mi), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrspl", OPPT(pl), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrsvs", OPPT(vs), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrsvc", OPPT(vc), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrshi", OPPT(hi), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrsls", OPPT(ls), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrsge", OPPT(ge), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrslt", OPPT(lt), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrsgt", OPPT(gt), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrsle", OPPT(le), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, +{ "mrsal", OPPT(al), OPPTF, OP_R, OP_R_SPSR,AOT_NONE }, /* msr */ -{ "msr", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msreq", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrne", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrcs", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrcc", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrmi", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrpl", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrvs", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrvc", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrhi", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrls", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrge", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrlt", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrgt", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msrle", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, -{ "msral", 0x00000000, OPNOP, OP_R, OP_R, AOT_NONE }, +{ "msr", OPPTI(al), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msreq", OPPTI(eq), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrne", OPPTI(ne), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrcs", OPPTI(cs), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrcc", OPPTI(cc), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrmi", OPPTI(mi), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrpl", OPPTI(pl), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrvs", OPPTI(vs), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrvc", OPPTI(vc), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrhi", OPPTI(hi), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrls", OPPTI(ls), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrge", OPPTI(ge), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrlt", OPPTI(lt), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrgt", OPPTI(gt), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msrle", OPPTI(le), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msral", OPPTI(al), OPPTIF, OP_R_CPSR,OP_R, AOT_NONE }, +{ "msr", OPPTI(al), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msreq", OPPTI(eq), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrne", OPPTI(ne), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrcs", OPPTI(cs), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrcc", OPPTI(cc), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrmi", OPPTI(mi), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrpl", OPPTI(pl), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrvs", OPPTI(vs), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrvc", OPPTI(vc), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrhi", OPPTI(hi), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrls", OPPTI(ls), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrge", OPPTI(ge), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrlt", OPPTI(lt), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrgt", OPPTI(gt), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msrle", OPPTI(le), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, +{ "msral", OPPTI(al), OPPTIF, OP_R_SPSR,OP_R, AOT_NONE }, /* mul */ { "mul", OPMUL(al), OPMULF, OP_R, OP_R, OP_R }, /* muls */ { "muls", OPMULS(al), OPMULSF,OP_R, OP_R, OP_R }, /* mvn */ -{ "mvn", OPDATA(al,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvneq", OPDATA(eq,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnne", OPDATA(ne,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvncs", OPDATA(cs,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvncc", OPDATA(cc,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnmi", OPDATA(mi,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnpl", OPDATA(pl,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnvs", OPDATA(vs,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnvc", OPDATA(vc,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnhi", OPDATA(hi,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnls", OPDATA(ls,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnge", OPDATA(ge,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnlt", OPDATA(lt,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvngt", OPDATA(gt,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnle", OPDATA(le,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "mvnal", OPDATA(al,mvn), OPDATAF,OP_R, OP_R, OP_R }, -{ "nop", OPDATA(al,mov), OPDATAF,AOT_NONE, AOT_NONE, AOT_NONE }, +{ "mvn", OPDP(al,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvneq", OPDP(eq,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnne", OPDP(ne,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvncs", OPDP(cs,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvncc", OPDP(cc,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnmi", OPDP(mi,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnpl", OPDP(pl,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnvs", OPDP(vs,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnvc", OPDP(vc,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnhi", OPDP(hi,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnls", OPDP(ls,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnge", OPDP(ge,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnlt", OPDP(lt,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvngt", OPDP(gt,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnle", OPDP(le,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvnal", OPDP(al,mvn), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "mvn", OPDPI(al,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvneq", OPDPI(eq,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnne", OPDPI(ne,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvncs", OPDPI(cs,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvncc", OPDPI(cc,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnmi", OPDPI(mi,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnpl", OPDPI(pl,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnvs", OPDPI(vs,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnvc", OPDPI(vc,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnhi", OPDPI(hi,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnls", OPDPI(ls,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnge", OPDPI(ge,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnlt", OPDPI(lt,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvngt", OPDPI(gt,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnle", OPDPI(le,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnal", OPDPI(al,mvn), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "mvns", OPDPS(al,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvneqs", OPDPS(eq,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnnes", OPDPS(ne,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvncss", OPDPS(cs,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnccs", OPDPS(cc,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnmis", OPDPS(mi,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnpls", OPDPS(pl,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnvss", OPDPS(vs,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnvcs", OPDPS(vc,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnhis", OPDPS(hi,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnlss", OPDPS(ls,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnges", OPDPS(ge,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnlts", OPDPS(lt,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvngts", OPDPS(gt,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnles", OPDPS(le,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvnals", OPDPS(al,mvn), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "mvns", OPDPIS(al,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvneqs", OPDPIS(eq,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnnes", OPDPIS(ne,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvncss", OPDPIS(cs,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnccs", OPDPIS(cc,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnmis", OPDPIS(mi,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnpls", OPDPIS(pl,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnvss", OPDPIS(vs,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnvcs", OPDPIS(vc,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnhis", OPDPIS(hi,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnlss", OPDPIS(ls,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnges", OPDPIS(ge,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnlts", OPDPIS(lt,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvngts", OPDPIS(gt,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnles", OPDPIS(le,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "mvnals", OPDPIS(al,mvn), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +/* nop */ +{ "nop", OPDP(al,mov), OPDPF, AOT_NONE, AOT_NONE, AOT_NONE }, /* orr */ -{ "orr", OPDATA(al,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orreq", OPDATA(eq,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrne", OPDATA(ne,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrcs", OPDATA(cs,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrcc", OPDATA(cc,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrmi", OPDATA(mi,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrpl", OPDATA(pl,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrvs", OPDATA(vs,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrvc", OPDATA(vc,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrhi", OPDATA(hi,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrls", OPDATA(ls,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrge", OPDATA(ge,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrlt", OPDATA(lt,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrgt", OPDATA(gt,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orrle", OPDATA(le,orr), OPDATAF,OP_R, OP_R, OP_R }, -{ "orral", OPDATA(al,orr), OPDATAF,OP_R, OP_R, OP_R }, +{ "orr", OPDP(al,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orreq", OPDP(eq,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrne", OPDP(ne,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrcs", OPDP(cs,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrcc", OPDP(cc,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrmi", OPDP(mi,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrpl", OPDP(pl,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrvs", OPDP(vs,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrvc", OPDP(vc,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrhi", OPDP(hi,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrls", OPDP(ls,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrge", OPDP(ge,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrlt", OPDP(lt,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrgt", OPDP(gt,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orrle", OPDP(le,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orral", OPDP(al,orr), OPDPF, OP_R, OP_R, OP_R }, +{ "orr", OPDPI(al,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orreq", OPDPI(eq,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrne", OPDPI(ne,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrcs", OPDPI(cs,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrcc", OPDPI(cc,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrmi", OPDPI(mi,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrpl", OPDPI(pl,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrvs", OPDPI(vs,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrvc", OPDPI(vc,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrhi", OPDPI(hi,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrls", OPDPI(ls,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrge", OPDPI(ge,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrlt", OPDPI(lt,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrgt", OPDPI(gt,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrle", OPDPI(le,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orral", OPDPI(al,orr), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "orrs", OPDPS(al,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orreqs", OPDPS(eq,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrnes", OPDPS(ne,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrcss", OPDPS(cs,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrccs", OPDPS(cc,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrmis", OPDPS(mi,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrpls", OPDPS(pl,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrvss", OPDPS(vs,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrvcs", OPDPS(vc,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrhis", OPDPS(hi,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrlss", OPDPS(ls,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrges", OPDPS(ge,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrlts", OPDPS(lt,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrgts", OPDPS(gt,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrles", OPDPS(le,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrals", OPDPS(al,orr), OPDPSF, OP_R, OP_R, OP_R }, +{ "orrs", OPDPIS(al,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orreqs", OPDPIS(eq,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrnes", OPDPIS(ne,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrcss", OPDPIS(cs,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrccs", OPDPIS(cc,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrmis", OPDPIS(mi,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrpls", OPDPIS(pl,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrvss", OPDPIS(vs,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrvcs", OPDPIS(vc,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrhis", OPDPIS(hi,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrlss", OPDPIS(ls,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrges", OPDPIS(ge,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrlts", OPDPIS(lt,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrgts", OPDPIS(gt,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrles", OPDPIS(le,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "orrals", OPDPIS(al,orr), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, /* rsb */ -{ "rsb", OPDATA(al,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbeq", OPDATA(eq,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbne", OPDATA(ne,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbcs", OPDATA(cs,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbcc", OPDATA(cc,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbmi", OPDATA(mi,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbpl", OPDATA(pl,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbvs", OPDATA(vs,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbvc", OPDATA(vc,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbhi", OPDATA(hi,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbls", OPDATA(ls,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbge", OPDATA(ge,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsblt", OPDATA(lt,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbgt", OPDATA(gt,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsble", OPDATA(le,rsb), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsbal", OPDATA(al,rsb), OPDATAF,OP_R, OP_R, OP_R }, +{ "rsb", OPDP(al,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbeq", OPDP(eq,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbne", OPDP(ne,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbcs", OPDP(cs,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbcc", OPDP(cc,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbmi", OPDP(mi,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbpl", OPDP(pl,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbvs", OPDP(vs,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbvc", OPDP(vc,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbhi", OPDP(hi,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbls", OPDP(ls,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbge", OPDP(ge,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsblt", OPDP(lt,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbgt", OPDP(gt,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsble", OPDP(le,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsbal", OPDP(al,rsb), OPDPF, OP_R, OP_R, OP_R }, +{ "rsb", OPDPI(al,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbeq", OPDPI(eq,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbne", OPDPI(ne,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbcs", OPDPI(cs,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbcc", OPDPI(cc,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbmi", OPDPI(mi,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbpl", OPDPI(pl,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbvs", OPDPI(vs,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbvc", OPDPI(vc,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbhi", OPDPI(hi,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbls", OPDPI(ls,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbge", OPDPI(ge,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsblt", OPDPI(lt,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbgt", OPDPI(gt,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsble", OPDPI(le,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbal", OPDPI(al,rsb), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsbs", OPDPS(al,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbeqs", OPDPS(eq,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbnes", OPDPS(ne,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbcss", OPDPS(cs,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbccs", OPDPS(cc,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbmis", OPDPS(mi,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbpls", OPDPS(pl,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbvss", OPDPS(vs,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbvcs", OPDPS(vc,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbhis", OPDPS(hi,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsblss", OPDPS(ls,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbges", OPDPS(ge,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsblts", OPDPS(lt,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbgts", OPDPS(gt,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbles", OPDPS(le,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbals", OPDPS(al,rsb), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsbs", OPDPIS(al,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbeqs", OPDPIS(eq,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbnes", OPDPIS(ne,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbcss", OPDPIS(cs,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbccs", OPDPIS(cc,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbmis", OPDPIS(mi,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbpls", OPDPIS(pl,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbvss", OPDPIS(vs,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbvcs", OPDPIS(vc,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbhis", OPDPIS(hi,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsblss", OPDPIS(ls,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbges", OPDPIS(ge,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsblts", OPDPIS(lt,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbgts", OPDPIS(gt,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbles", OPDPIS(le,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsbals", OPDPIS(al,rsb), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, /* rsc */ -{ "rsc", OPDATA(al,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsceq", OPDATA(eq,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rscne", OPDATA(ne,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsccs", OPDATA(cs,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsccc", OPDATA(cc,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rscmi", OPDATA(mi,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rscpl", OPDATA(pl,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rscvs", OPDATA(vs,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rscvc", OPDATA(vc,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rschi", OPDATA(hi,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rscls", OPDATA(ls,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rscge", OPDATA(ge,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rsclt", OPDATA(lt,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rscgt", OPDATA(gt,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rscle", OPDATA(le,rsc), OPDATAF,OP_R, OP_R, OP_R }, -{ "rscal", OPDATA(al,rsc), OPDATAF,OP_R, OP_R, OP_R }, +{ "rsc", OPDP(al,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rsceq", OPDP(eq,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rscne", OPDP(ne,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rsccs", OPDP(cs,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rsccc", OPDP(cc,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rscmi", OPDP(mi,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rscpl", OPDP(pl,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rscvs", OPDP(vs,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rscvc", OPDP(vc,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rschi", OPDP(hi,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rscls", OPDP(ls,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rscge", OPDP(ge,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rsclt", OPDP(lt,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rscgt", OPDP(gt,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rscle", OPDP(le,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rscal", OPDP(al,rsc), OPDPF, OP_R, OP_R, OP_R }, +{ "rsc", OPDPI(al,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsceq", OPDPI(eq,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscne", OPDPI(ne,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsccs", OPDPI(cs,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsccc", OPDPI(cc,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscmi", OPDPI(mi,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscpl", OPDPI(pl,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscvs", OPDPI(vs,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscvc", OPDPI(vc,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rschi", OPDPI(hi,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscls", OPDPI(ls,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscge", OPDPI(ge,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rsclt", OPDPI(lt,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscgt", OPDPI(gt,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscle", OPDPI(le,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscal", OPDPI(al,rsc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "rscs", OPDPS(al,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsceqs", OPDPS(eq,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscnes", OPDPS(ne,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsccss", OPDPS(cs,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscccs", OPDPS(cc,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscmis", OPDPS(mi,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscpls", OPDPS(pl,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscvss", OPDPS(vs,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscvcs", OPDPS(vc,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rschis", OPDPS(hi,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsclss", OPDPS(ls,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscges", OPDPS(ge,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rsclts", OPDPS(lt,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscgts", OPDPS(gt,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscles", OPDPS(le,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscals", OPDPS(al,rsc), OPDPSF, OP_R, OP_R, OP_R }, +{ "rscs", OPDPIS(al,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsceqs", OPDPIS(eq,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rscnes", OPDPIS(ne,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsccss", OPDPIS(cs,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rscccs", OPDPIS(cc,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rscmis", OPDPIS(mi,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rscpls", OPDPIS(pl,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rscvss", OPDPIS(vs,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rscvcs", OPDPIS(vc,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rschis", OPDPIS(hi,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsclss", OPDPIS(ls,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rscges", OPDPIS(ge,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rsclts", OPDPIS(lt,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rscgts", OPDPIS(gt,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rscles", OPDPIS(le,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "rscals", OPDPIS(al,rsc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, /* sbc */ -{ "sbc", OPDATA(al,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbceq", OPDATA(eq,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbcne", OPDATA(ne,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbccs", OPDATA(cs,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbccc", OPDATA(cc,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbcmi", OPDATA(mi,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbcpl", OPDATA(pl,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbcvs", OPDATA(vs,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbcvc", OPDATA(vc,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbchi", OPDATA(hi,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbcls", OPDATA(ls,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbcge", OPDATA(ge,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbclt", OPDATA(lt,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbcgt", OPDATA(gt,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbcle", OPDATA(le,sbc), OPDATAF,OP_R, OP_R, OP_R }, -{ "sbcal", OPDATA(al,sbc), OPDATAF,OP_R, OP_R, OP_R }, +{ "sbc", OPDP(al,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbceq", OPDP(eq,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbcne", OPDP(ne,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbccs", OPDP(cs,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbccc", OPDP(cc,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbcmi", OPDP(mi,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbcpl", OPDP(pl,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbcvs", OPDP(vs,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbcvc", OPDP(vc,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbchi", OPDP(hi,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbcls", OPDP(ls,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbcge", OPDP(ge,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbclt", OPDP(lt,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbcgt", OPDP(gt,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbcle", OPDP(le,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbcal", OPDP(al,sbc), OPDPF, OP_R, OP_R, OP_R }, +{ "sbc", OPDPI(al,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbceq", OPDPI(eq,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcne", OPDPI(ne,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbccs", OPDPI(cs,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbccc", OPDPI(cc,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcmi", OPDPI(mi,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcpl", OPDPI(pl,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcvs", OPDPI(vs,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcvc", OPDPI(vc,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbchi", OPDPI(hi,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcls", OPDPI(ls,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcge", OPDPI(ge,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbclt", OPDPI(lt,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcgt", OPDPI(gt,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcle", OPDPI(le,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcal", OPDPI(al,sbc), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sbcs", OPDPS(al,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbceqs", OPDPS(eq,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcnes", OPDPS(ne,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbccss", OPDPS(cs,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcccs", OPDPS(cc,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcmis", OPDPS(mi,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcpls", OPDPS(pl,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcvss", OPDPS(vs,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcvcs", OPDPS(vc,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbchis", OPDPS(hi,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbclss", OPDPS(ls,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcges", OPDPS(ge,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbclts", OPDPS(lt,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcgts", OPDPS(gt,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcles", OPDPS(le,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcals", OPDPS(al,sbc), OPDPSF, OP_R, OP_R, OP_R }, +{ "sbcs", OPDPIS(al,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbceqs", OPDPIS(eq,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbcnes", OPDPIS(ne,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbccss", OPDPIS(cs,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbcccs", OPDPIS(cc,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbcmis", OPDPIS(mi,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbcpls", OPDPIS(pl,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbcvss", OPDPIS(vs,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbcvcs", OPDPIS(vc,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbchis", OPDPIS(hi,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbclss", OPDPIS(ls,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbcges", OPDPIS(ge,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbclts", OPDPIS(lt,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbcgts", OPDPIS(gt,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbcles", OPDPIS(le,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sbcals", OPDPIS(al,sbc), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, /* stc */ { "stc", OPCDTS(al), OPCDTSF,OP_R, OP_R, OP_R }, { "stceq", OPCDTS(eq), OPCDTSF,OP_R, OP_R, OP_R }, @@ -558,22 +1244,70 @@ { "strle", OPSDTS(le), OPSDTSF,OP_R, OP_R, OP_R }, { "stral", OPSDTS(al), OPSDTSF,OP_R, OP_R, OP_R }, /* sub */ -{ "sub", OPDATA(al,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subeq", OPDATA(eq,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subne", OPDATA(ne,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subcs", OPDATA(cs,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subcc", OPDATA(cc,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "submi", OPDATA(mi,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subpl", OPDATA(pl,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subvs", OPDATA(vs,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subvc", OPDATA(vc,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subhi", OPDATA(hi,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subls", OPDATA(ls,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subge", OPDATA(ge,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "sublt", OPDATA(lt,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subgt", OPDATA(gt,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "suble", OPDATA(le,sub), OPDATAF,OP_R, OP_R, OP_R }, -{ "subal", OPDATA(al,sub), OPDATAF,OP_R, OP_R, OP_R }, +{ "sub", OPDP(al,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subeq", OPDP(eq,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subne", OPDP(ne,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subcs", OPDP(cs,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subcc", OPDP(cc,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "submi", OPDP(mi,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subpl", OPDP(pl,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subvs", OPDP(vs,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subvc", OPDP(vc,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subhi", OPDP(hi,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subls", OPDP(ls,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subge", OPDP(ge,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "sublt", OPDP(lt,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subgt", OPDP(gt,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "suble", OPDP(le,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "subal", OPDP(al,sub), OPDPF, OP_R, OP_R, OP_R }, +{ "sub", OPDPI(al,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subeq", OPDPI(eq,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subne", OPDPI(ne,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subcs", OPDPI(cs,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subcc", OPDPI(cc,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "submi", OPDPI(mi,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subpl", OPDPI(pl,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subvs", OPDPI(vs,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subvc", OPDPI(vc,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subhi", OPDPI(hi,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subls", OPDPI(ls,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subge", OPDPI(ge,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "sublt", OPDPI(lt,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subgt", OPDPI(gt,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "suble", OPDPI(le,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subal", OPDPI(al,sub), OPDPIF, OP_R, OP_R, OPDPI_U12 }, +{ "subs", OPDPS(al,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subeqs", OPDPS(eq,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subnes", OPDPS(ne,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subcss", OPDPS(cs,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subccs", OPDPS(cc,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "submis", OPDPS(mi,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subpls", OPDPS(pl,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subvss", OPDPS(vs,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subvcs", OPDPS(vc,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subhis", OPDPS(hi,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "sublss", OPDPS(ls,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subges", OPDPS(ge,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "sublts", OPDPS(lt,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subgts", OPDPS(gt,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subles", OPDPS(le,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subals", OPDPS(al,sub), OPDPSF, OP_R, OP_R, OP_R }, +{ "subs", OPDPIS(al,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subeqs", OPDPIS(eq,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subnes", OPDPIS(ne,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subcss", OPDPIS(cs,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subccs", OPDPIS(cc,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "submis", OPDPIS(mi,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subpls", OPDPIS(pl,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subvss", OPDPIS(vs,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subvcs", OPDPIS(vc,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subhis", OPDPIS(hi,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sublss", OPDPIS(ls,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subges", OPDPIS(ge,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "sublts", OPDPIS(lt,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subgts", OPDPIS(gt,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subles", OPDPIS(le,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, +{ "subals", OPDPIS(al,sub), OPDPISF,OP_R, OP_R, OPDPIS_U12 }, /* swi */ { "swi", OPSI(al), OPSIF, OPSI_U24, AOT_NONE, AOT_NONE }, { "swieq", OPSI(eq), OPSIF, OPSI_U24, AOT_NONE, AOT_NONE }, @@ -608,7 +1342,133 @@ { "swpgt", OPSDS(gt), OPSDSF, OP_R, OP_R, OP_R }, { "swple", OPSDS(le), OPSDSF, OP_R, OP_R, OP_R }, { "swpal", OPSDS(al), OPSDSF, OP_R, OP_R, OP_R }, -#if 1 /* FIXME implement correctly */ -{ "teq", 0x00000000, OPNOP, AOT_NONE, AOT_NONE, AOT_NONE }, -{ "tst", 0x00000000, OPNOP, AOT_NONE, AOT_NONE, AOT_NONE }, -#endif +/* teq */ +{ "teq", OPDP(al,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqeq", OPDP(eq,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqne", OPDP(ne,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqcs", OPDP(cs,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqcc", OPDP(cc,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqmi", OPDP(mi,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqpl", OPDP(pl,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqvs", OPDP(vs,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqvc", OPDP(vc,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqhi", OPDP(hi,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqls", OPDP(ls,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqge", OPDP(ge,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqlt", OPDP(lt,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqgt", OPDP(gt,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqle", OPDP(le,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teqal", OPDP(al,teq), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "teq", OPDPI(al,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqeq", OPDPI(eq,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqne", OPDPI(ne,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqcs", OPDPI(cs,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqcc", OPDPI(cc,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqmi", OPDPI(mi,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqpl", OPDPI(pl,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqvs", OPDPI(vs,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqvc", OPDPI(vc,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqhi", OPDPI(hi,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqls", OPDPI(ls,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqge", OPDPI(ge,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqlt", OPDPI(lt,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqgt", OPDPI(gt,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqle", OPDPI(le,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqal", OPDPI(al,teq), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "teqs", OPDPS(al,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqeqs", OPDPS(eq,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqnes", OPDPS(ne,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqcss", OPDPS(cs,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqccs", OPDPS(cc,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqmis", OPDPS(mi,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqpls", OPDPS(pl,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqvss", OPDPS(vs,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqvcs", OPDPS(vc,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqhis", OPDPS(hi,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqlss", OPDPS(ls,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqges", OPDPS(ge,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqlts", OPDPS(lt,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqgts", OPDPS(gt,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqles", OPDPS(le,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqals", OPDPS(al,teq), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "teqs", OPDPIS(al,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqeqs", OPDPIS(eq,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqnes", OPDPIS(ne,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqcss", OPDPIS(cs,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqccs", OPDPIS(cc,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqmis", OPDPIS(mi,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqpls", OPDPIS(pl,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqvss", OPDPIS(vs,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqvcs", OPDPIS(vc,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqhis", OPDPIS(hi,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqlss", OPDPIS(ls,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqges", OPDPIS(ge,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqlts", OPDPIS(lt,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqgts", OPDPIS(gt,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqles", OPDPIS(le,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "teqals", OPDPIS(al,teq), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +/* tst */ +{ "tst", OPDP(al,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tsteq", OPDP(eq,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstne", OPDP(ne,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstcs", OPDP(cs,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstcc", OPDP(cc,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstmi", OPDP(mi,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstpl", OPDP(pl,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstvs", OPDP(vs,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstvc", OPDP(vc,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tsthi", OPDP(hi,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstls", OPDP(ls,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstge", OPDP(ge,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstlt", OPDP(lt,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstgt", OPDP(gt,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstle", OPDP(le,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tstal", OPDP(al,tst), OPDPF, OP_R, OP_R, AOT_NONE }, +{ "tst", OPDPI(al,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tsteq", OPDPI(eq,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstne", OPDPI(ne,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstcs", OPDPI(cs,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstcc", OPDPI(cc,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstmi", OPDPI(mi,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstpl", OPDPI(pl,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstvs", OPDPI(vs,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstvc", OPDPI(vc,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tsthi", OPDPI(hi,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstls", OPDPI(ls,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstge", OPDPI(ge,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstlt", OPDPI(lt,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstgt", OPDPI(gt,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstle", OPDPI(le,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tstal", OPDPI(al,tst), OPDPIF, OP_R, OPDPI_U12,AOT_NONE }, +{ "tsts", OPDPS(al,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tsteqs", OPDPS(eq,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstnes", OPDPS(ne,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstcss", OPDPS(cs,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstccs", OPDPS(cc,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstmis", OPDPS(mi,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstpls", OPDPS(pl,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstvss", OPDPS(vs,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstvcs", OPDPS(vc,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tsthis", OPDPS(hi,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstlss", OPDPS(ls,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstges", OPDPS(ge,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstlts", OPDPS(lt,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstgts", OPDPS(gt,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstles", OPDPS(le,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tstals", OPDPS(al,tst), OPDPSF, OP_R, OP_R, AOT_NONE }, +{ "tsts", OPDPIS(al,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tsteqs", OPDPIS(eq,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstnes", OPDPIS(ne,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstcss", OPDPIS(cs,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstccs", OPDPIS(cc,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstmis", OPDPIS(mi,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstpls", OPDPIS(pl,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstvss", OPDPIS(vs,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstvcs", OPDPIS(vc,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tsthis", OPDPIS(hi,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstlss", OPDPIS(ls,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstges", OPDPIS(ge,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstlts", OPDPIS(lt,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstgts", OPDPIS(gt,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstles", OPDPIS(le,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, +{ "tstals", OPDPIS(al,tst), OPDPISF,OP_R, OPDPI_U12,AOT_NONE }, diff --git a/test/arm.S b/test/arm.S index 65faccf..13a22cb 100644 --- a/test/arm.S +++ b/test/arm.S @@ -1,25 +1,67 @@ /* $Id$ */ .text - adc %r0, %r1, %r2 - adceq %r0, %r1, %r2 - add %r2, %r1, %r0 - addeq %r2, %r1, %r0 + adc %r3, %r4, %r5 + adceq %r3, %r4, %r5 + adc %r3, %r4, $0x0 + adceq %r3, %r4, $0x1 + adcs %r3, %r4, %r5 + adceqs %r3, %r4, %r5 + adcs %r3, %r4, $0x0 + adceqs %r3, %r4, $0x1 + add %r3, %r4, %r5 + addeq %r3, %r4, %r5 + add %r3, %r4, $0x0 + addeq %r3, %r4, $0x1 + adds %r3, %r4, %r5 + addeqs %r3, %r4, %r5 + adds %r3, %r4, $0x0 + addeqs %r3, %r4, $0x1 and %r3, %r4, %r5 andeq %r3, %r4, %r5 + and %r3, %r4, $0x0 + andeq %r3, %r4, $0x1 + ands %r3, %r4, %r5 + andeqs %r3, %r4, %r5 + ands %r3, %r4, $0x0 + andeqs %r3, %r4, $0x1 b $0xa0 beq $0xa0 + bic %r3, %r4, %r5 + biceq %r3, %r4, %r5 + bic %r3, %r4, $0x0 + biceq %r3, %r4, $0x1 + bics %r3, %r4, %r5 + biceqs %r3, %r4, %r5 + bics %r3, %r4, $0x0 + biceqs %r3, %r4, $0x1 bl $0xa0 bleq $0xa0 bx %r0 bxeq %r0 - bic %r0, %r0, %r0 - biceq %r2, %r0, %r1 - cmn %r5, %r4, %r3 - cmneq %r5, %r4, %r3 - cmp %r5, %r4, %r3 - cmpeq %r5, %r4, %r3 - eor %r5, %r4, %r3 - eoreq %r5, %r4, %r3 + cmn %r5, %r4 + cmneq %r5, %r4 + cmn %r5, $0x1 + cmneq %r5, $0x2 + cmns %r5, %r4 + cmneqs %r5, %r4 + cmns %r5, $0x1 + cmneqs %r5, $0x2 + cmp %r5, %r4 + cmpeq %r5, %r4 + cmp %r5, $0x1 + cmpeq %r5, $0x2 + cmps %r5, %r4 + cmpeqs %r5, %r4 + cmps %r5, $0x1 + cmpeqs %r5, $0x2 + eor %r3, %r4, %r5 + eoreq %r3, %r4, %r5 + eor %r3, %r4, $0x0 + eoreq %r3, %r4, $0x1 + eors %r3, %r4, %r5 + eoreqs %r3, %r4, %r5 + eors %r3, %r4, $0x0 + eoreqs %r3, %r4, $0x1 ldc %r0, %r0, %r0 ldceq %r0, %r0, %r0 ldm %r0, %r0, %r0 @@ -28,34 +70,98 @@ ldreq %r0, %r0, %r0 mcr %r0, %r0, %r0 mcreq %r0, %r0, %r0 - mov %r5, %r4, %r3 - moveq %r5, %r4, %r3 + mov %r5, %r4 + moveq %r5, %r4 + mov %r5, $0x1 + moveq %r5, $0x2 + movs %r5, %r4 + moveqs %r5, %r4 + movs %r5, $0x1 + moveqs %r5, $0x2 mrc %r0, %r0, %r0 mrceq %r0, %r0, %r0 mrs %r0, %cpsr - msr %r0, %cpsr + mrseq %r0, %cpsr + mrs %r0, %spsr + mrseq %r0, %spsr + msr %cpsr, %r0 + msreq %cpsr, %r1 + msr %spsr, %r0 + msreq %spsr, %r1 mul %r0, %r1, %r2 muls %r0, %r1, %r2 - mvn %r5, %r4, %r3 - mvneq %r5, %r4, %r3 + mvn %r5, %r4 + mvneq %r5, %r4 + mvn %r5, $0x1 + mvneq %r5, $0x2 + mvns %r5, %r4 + mvneqs %r5, %r4 + mvns %r5, $0x1 + mvneqs %r5, $0x2 nop - orr %r5, %r4, %r3 - orreq %r5, %r4, %r3 - rsb %r5, %r4, %r3 - rsbeq %r5, %r4, %r3 - rsc %r5, %r4, %r3 - rsceq %r5, %r4, %r3 - sbc %r5, %r4, %r3 - sbceq %r5, %r4, %r3 + orr %r3, %r4, %r5 + orreq %r3, %r4, %r5 + orr %r3, %r4, $0x0 + orreq %r3, %r4, $0x1 + orrs %r3, %r4, %r5 + orreqs %r3, %r4, %r5 + orrs %r3, %r4, $0x0 + orreqs %r3, %r4, $0x1 + rsb %r3, %r4, %r5 + rsbeq %r3, %r4, %r5 + rsb %r3, %r4, $0x0 + rsbeq %r3, %r4, $0x1 + rsbs %r3, %r4, %r5 + rsbeqs %r3, %r4, %r5 + rsbs %r3, %r4, $0x0 + rsbeqs %r3, %r4, $0x1 + rsc %r3, %r4, %r5 + rsceq %r3, %r4, %r5 + rsc %r3, %r4, $0x0 + rsceq %r3, %r4, $0x1 + rscs %r3, %r4, %r5 + rsceqs %r3, %r4, %r5 + rscs %r3, %r4, $0x0 + rsceqs %r3, %r4, $0x1 + sbc %r3, %r4, %r5 + sbceq %r3, %r4, %r5 + sbc %r3, %r4, $0x0 + sbceq %r3, %r4, $0x1 + sbcs %r3, %r4, %r5 + sbceqs %r3, %r4, %r5 + sbcs %r3, %r4, $0x0 + sbceqs %r3, %r4, $0x1 stc %r0, %r0, %r0 stceq %r0, %r0, %r0 stm %r0, %r0, %r0 stmeq %r0, %r0, %r0 str %r0, %r0, %r0 streq %r0, %r0, %r0 - sub %r5, %r4, %r3 - subeq %r5, %r4, %r3 + sub %r3, %r4, %r5 + subeq %r3, %r4, %r5 + sub %r3, %r4, $0x0 + subeq %r3, %r4, $0x1 + subs %r3, %r4, %r5 + subeqs %r3, %r4, %r5 + subs %r3, %r4, $0x0 + subeqs %r3, %r4, $0x1 swi $0x0 swine $0x0 swp %r5, %r4, %r3 swpeq %r5, %r4, %r3 + teq %r5, %r4 + teqeq %r5, %r4 + teq %r5, $0x1 + teqeq %r5, $0x2 + teqs %r5, %r4 + teqeqs %r5, %r4 + teqs %r5, $0x1 + teqeqs %r5, $0x2 + tst %r5, %r4 + tsteq %r5, %r4 + tst %r5, $0x1 + tsteq %r5, $0x2 + tsts %r5, %r4 + tsteqs %r5, %r4 + tsts %r5, $0x1 + tsteqs %r5, $0x2