/* This file is autogenerated by scripts/decodetree.py.  */

typedef struct {
    int rd;
    int rb;
    int ctrl;
} arg_decode10;

typedef struct {
    int imm;
} arg_decode11;

typedef struct {
    int rd;
    int e;
    int rs;
} arg_decode12;

typedef struct {
    int e;
    int ra;
    int rs;
} arg_decode13;

typedef struct {
    int ra;
    int ctrl;
    int imm;
} arg_decode14;

typedef struct {
    int ra;
    int rb;
    int ctrl;
} arg_decode15;

typedef struct {
} arg_decode8;

typedef struct {
    int rd;
    int ctrl;
    int imm;
} arg_decode9;

typedef struct {
    int rd;
    int imm;
} arg_type_msr;

typedef struct {
    int rd;
    int ra;
    int rb;
} arg_typea;

typedef struct {
    int rd;
    int ra;
} arg_typea0;

typedef struct {
    int ra;
    int rb;
} arg_typea_bc;

typedef struct {
    int rd;
    int rb;
} arg_typea_br;

typedef struct {
    int rd;
    int ra;
    int imm;
} arg_typeb;

typedef struct {
    int ra;
    int imm;
} arg_typeb_bc;

typedef struct {
    int rd;
    int imm;
} arg_typeb_br;

typedef arg_decode8 arg_zero;
static bool trans_zero(DisasContext *ctx, arg_zero *a);
typedef arg_typea arg_add;
static bool trans_add(DisasContext *ctx, arg_add *a);
typedef arg_typea arg_addc;
static bool trans_addc(DisasContext *ctx, arg_addc *a);
typedef arg_typea arg_addk;
static bool trans_addk(DisasContext *ctx, arg_addk *a);
typedef arg_typea arg_addkc;
static bool trans_addkc(DisasContext *ctx, arg_addkc *a);
typedef arg_typeb arg_addi;
static bool trans_addi(DisasContext *ctx, arg_addi *a);
typedef arg_typeb arg_addic;
static bool trans_addic(DisasContext *ctx, arg_addic *a);
typedef arg_typeb arg_addik;
static bool trans_addik(DisasContext *ctx, arg_addik *a);
typedef arg_typeb arg_addikc;
static bool trans_addikc(DisasContext *ctx, arg_addikc *a);
typedef arg_typea arg_and;
static bool trans_and(DisasContext *ctx, arg_and *a);
typedef arg_typeb arg_andi;
static bool trans_andi(DisasContext *ctx, arg_andi *a);
typedef arg_typea arg_andn;
static bool trans_andn(DisasContext *ctx, arg_andn *a);
typedef arg_typeb arg_andni;
static bool trans_andni(DisasContext *ctx, arg_andni *a);
typedef arg_typea_bc arg_beq;
static bool trans_beq(DisasContext *ctx, arg_beq *a);
typedef arg_typea_bc arg_bge;
static bool trans_bge(DisasContext *ctx, arg_bge *a);
typedef arg_typea_bc arg_bgt;
static bool trans_bgt(DisasContext *ctx, arg_bgt *a);
typedef arg_typea_bc arg_ble;
static bool trans_ble(DisasContext *ctx, arg_ble *a);
typedef arg_typea_bc arg_blt;
static bool trans_blt(DisasContext *ctx, arg_blt *a);
typedef arg_typea_bc arg_bne;
static bool trans_bne(DisasContext *ctx, arg_bne *a);
typedef arg_typea_bc arg_beqd;
static bool trans_beqd(DisasContext *ctx, arg_beqd *a);
typedef arg_typea_bc arg_bged;
static bool trans_bged(DisasContext *ctx, arg_bged *a);
typedef arg_typea_bc arg_bgtd;
static bool trans_bgtd(DisasContext *ctx, arg_bgtd *a);
typedef arg_typea_bc arg_bled;
static bool trans_bled(DisasContext *ctx, arg_bled *a);
typedef arg_typea_bc arg_bltd;
static bool trans_bltd(DisasContext *ctx, arg_bltd *a);
typedef arg_typea_bc arg_bned;
static bool trans_bned(DisasContext *ctx, arg_bned *a);
typedef arg_typeb_bc arg_beqi;
static bool trans_beqi(DisasContext *ctx, arg_beqi *a);
typedef arg_typeb_bc arg_bgei;
static bool trans_bgei(DisasContext *ctx, arg_bgei *a);
typedef arg_typeb_bc arg_bgti;
static bool trans_bgti(DisasContext *ctx, arg_bgti *a);
typedef arg_typeb_bc arg_blei;
static bool trans_blei(DisasContext *ctx, arg_blei *a);
typedef arg_typeb_bc arg_blti;
static bool trans_blti(DisasContext *ctx, arg_blti *a);
typedef arg_typeb_bc arg_bnei;
static bool trans_bnei(DisasContext *ctx, arg_bnei *a);
typedef arg_typeb_bc arg_beqid;
static bool trans_beqid(DisasContext *ctx, arg_beqid *a);
typedef arg_typeb_bc arg_bgeid;
static bool trans_bgeid(DisasContext *ctx, arg_bgeid *a);
typedef arg_typeb_bc arg_bgtid;
static bool trans_bgtid(DisasContext *ctx, arg_bgtid *a);
typedef arg_typeb_bc arg_bleid;
static bool trans_bleid(DisasContext *ctx, arg_bleid *a);
typedef arg_typeb_bc arg_bltid;
static bool trans_bltid(DisasContext *ctx, arg_bltid *a);
typedef arg_typeb_bc arg_bneid;
static bool trans_bneid(DisasContext *ctx, arg_bneid *a);
typedef arg_typea_br arg_br;
static bool trans_br(DisasContext *ctx, arg_br *a);
typedef arg_typea_br arg_bra;
static bool trans_bra(DisasContext *ctx, arg_bra *a);
typedef arg_typea_br arg_brd;
static bool trans_brd(DisasContext *ctx, arg_brd *a);
typedef arg_typea_br arg_brad;
static bool trans_brad(DisasContext *ctx, arg_brad *a);
typedef arg_typea_br arg_brld;
static bool trans_brld(DisasContext *ctx, arg_brld *a);
typedef arg_typea_br arg_brald;
static bool trans_brald(DisasContext *ctx, arg_brald *a);
typedef arg_typeb_br arg_bri;
static bool trans_bri(DisasContext *ctx, arg_bri *a);
typedef arg_typeb_br arg_brai;
static bool trans_brai(DisasContext *ctx, arg_brai *a);
typedef arg_typeb_br arg_brid;
static bool trans_brid(DisasContext *ctx, arg_brid *a);
typedef arg_typeb_br arg_braid;
static bool trans_braid(DisasContext *ctx, arg_braid *a);
typedef arg_typeb_br arg_brlid;
static bool trans_brlid(DisasContext *ctx, arg_brlid *a);
typedef arg_typeb_br arg_bralid;
static bool trans_bralid(DisasContext *ctx, arg_bralid *a);
typedef arg_typea_br arg_brk;
static bool trans_brk(DisasContext *ctx, arg_brk *a);
typedef arg_typeb_br arg_brki;
static bool trans_brki(DisasContext *ctx, arg_brki *a);
typedef arg_typea arg_bsrl;
static bool trans_bsrl(DisasContext *ctx, arg_bsrl *a);
typedef arg_typea arg_bsra;
static bool trans_bsra(DisasContext *ctx, arg_bsra *a);
typedef arg_typea arg_bsll;
static bool trans_bsll(DisasContext *ctx, arg_bsll *a);
typedef arg_typeb arg_bsrli;
static bool trans_bsrli(DisasContext *ctx, arg_bsrli *a);
typedef arg_typeb arg_bsrai;
static bool trans_bsrai(DisasContext *ctx, arg_bsrai *a);
typedef arg_typeb arg_bslli;
static bool trans_bslli(DisasContext *ctx, arg_bslli *a);
typedef arg_typeb arg_bsefi;
static bool trans_bsefi(DisasContext *ctx, arg_bsefi *a);
typedef arg_typeb arg_bsifi;
static bool trans_bsifi(DisasContext *ctx, arg_bsifi *a);
typedef arg_typea0 arg_clz;
static bool trans_clz(DisasContext *ctx, arg_clz *a);
typedef arg_typea arg_cmp;
static bool trans_cmp(DisasContext *ctx, arg_cmp *a);
typedef arg_typea arg_cmpu;
static bool trans_cmpu(DisasContext *ctx, arg_cmpu *a);
typedef arg_typea arg_fadd;
static bool trans_fadd(DisasContext *ctx, arg_fadd *a);
typedef arg_typea arg_frsub;
static bool trans_frsub(DisasContext *ctx, arg_frsub *a);
typedef arg_typea arg_fmul;
static bool trans_fmul(DisasContext *ctx, arg_fmul *a);
typedef arg_typea arg_fdiv;
static bool trans_fdiv(DisasContext *ctx, arg_fdiv *a);
typedef arg_typea arg_fcmp_un;
static bool trans_fcmp_un(DisasContext *ctx, arg_fcmp_un *a);
typedef arg_typea arg_fcmp_lt;
static bool trans_fcmp_lt(DisasContext *ctx, arg_fcmp_lt *a);
typedef arg_typea arg_fcmp_eq;
static bool trans_fcmp_eq(DisasContext *ctx, arg_fcmp_eq *a);
typedef arg_typea arg_fcmp_le;
static bool trans_fcmp_le(DisasContext *ctx, arg_fcmp_le *a);
typedef arg_typea arg_fcmp_gt;
static bool trans_fcmp_gt(DisasContext *ctx, arg_fcmp_gt *a);
typedef arg_typea arg_fcmp_ne;
static bool trans_fcmp_ne(DisasContext *ctx, arg_fcmp_ne *a);
typedef arg_typea arg_fcmp_ge;
static bool trans_fcmp_ge(DisasContext *ctx, arg_fcmp_ge *a);
typedef arg_typea0 arg_flt;
static bool trans_flt(DisasContext *ctx, arg_flt *a);
typedef arg_typea0 arg_fint;
static bool trans_fint(DisasContext *ctx, arg_fint *a);
typedef arg_typea0 arg_fsqrt;
static bool trans_fsqrt(DisasContext *ctx, arg_fsqrt *a);
typedef arg_decode9 arg_get;
static bool trans_get(DisasContext *ctx, arg_get *a);
typedef arg_decode10 arg_getd;
static bool trans_getd(DisasContext *ctx, arg_getd *a);
typedef arg_typea arg_idiv;
static bool trans_idiv(DisasContext *ctx, arg_idiv *a);
typedef arg_typea arg_idivu;
static bool trans_idivu(DisasContext *ctx, arg_idivu *a);
typedef arg_decode11 arg_imm;
static bool trans_imm(DisasContext *ctx, arg_imm *a);
typedef arg_typea arg_lbu;
static bool trans_lbu(DisasContext *ctx, arg_lbu *a);
typedef arg_typea arg_lbur;
static bool trans_lbur(DisasContext *ctx, arg_lbur *a);
typedef arg_typea arg_lbuea;
static bool trans_lbuea(DisasContext *ctx, arg_lbuea *a);
typedef arg_typeb arg_lbui;
static bool trans_lbui(DisasContext *ctx, arg_lbui *a);
typedef arg_typea arg_lhu;
static bool trans_lhu(DisasContext *ctx, arg_lhu *a);
typedef arg_typea arg_lhur;
static bool trans_lhur(DisasContext *ctx, arg_lhur *a);
typedef arg_typea arg_lhuea;
static bool trans_lhuea(DisasContext *ctx, arg_lhuea *a);
typedef arg_typeb arg_lhui;
static bool trans_lhui(DisasContext *ctx, arg_lhui *a);
typedef arg_typea arg_lw;
static bool trans_lw(DisasContext *ctx, arg_lw *a);
typedef arg_typea arg_lwr;
static bool trans_lwr(DisasContext *ctx, arg_lwr *a);
typedef arg_typea arg_lwea;
static bool trans_lwea(DisasContext *ctx, arg_lwea *a);
typedef arg_typea arg_lwx;
static bool trans_lwx(DisasContext *ctx, arg_lwx *a);
typedef arg_typeb arg_lwi;
static bool trans_lwi(DisasContext *ctx, arg_lwi *a);
typedef arg_decode11 arg_mbar;
static bool trans_mbar(DisasContext *ctx, arg_mbar *a);
typedef arg_decode12 arg_mfs;
static bool trans_mfs(DisasContext *ctx, arg_mfs *a);
typedef arg_decode13 arg_mts;
static bool trans_mts(DisasContext *ctx, arg_mts *a);
typedef arg_type_msr arg_msrclr;
static bool trans_msrclr(DisasContext *ctx, arg_msrclr *a);
typedef arg_type_msr arg_msrset;
static bool trans_msrset(DisasContext *ctx, arg_msrset *a);
typedef arg_typea arg_mul;
static bool trans_mul(DisasContext *ctx, arg_mul *a);
typedef arg_typea arg_mulh;
static bool trans_mulh(DisasContext *ctx, arg_mulh *a);
typedef arg_typea arg_mulhu;
static bool trans_mulhu(DisasContext *ctx, arg_mulhu *a);
typedef arg_typea arg_mulhsu;
static bool trans_mulhsu(DisasContext *ctx, arg_mulhsu *a);
typedef arg_typeb arg_muli;
static bool trans_muli(DisasContext *ctx, arg_muli *a);
typedef arg_typea arg_or;
static bool trans_or(DisasContext *ctx, arg_or *a);
typedef arg_typeb arg_ori;
static bool trans_ori(DisasContext *ctx, arg_ori *a);
typedef arg_typea arg_pcmpbf;
static bool trans_pcmpbf(DisasContext *ctx, arg_pcmpbf *a);
typedef arg_typea arg_pcmpeq;
static bool trans_pcmpeq(DisasContext *ctx, arg_pcmpeq *a);
typedef arg_typea arg_pcmpne;
static bool trans_pcmpne(DisasContext *ctx, arg_pcmpne *a);
typedef arg_decode14 arg_put;
static bool trans_put(DisasContext *ctx, arg_put *a);
typedef arg_decode15 arg_putd;
static bool trans_putd(DisasContext *ctx, arg_putd *a);
typedef arg_typea arg_rsub;
static bool trans_rsub(DisasContext *ctx, arg_rsub *a);
typedef arg_typea arg_rsubc;
static bool trans_rsubc(DisasContext *ctx, arg_rsubc *a);
typedef arg_typea arg_rsubk;
static bool trans_rsubk(DisasContext *ctx, arg_rsubk *a);
typedef arg_typea arg_rsubkc;
static bool trans_rsubkc(DisasContext *ctx, arg_rsubkc *a);
typedef arg_typeb arg_rsubi;
static bool trans_rsubi(DisasContext *ctx, arg_rsubi *a);
typedef arg_typeb arg_rsubic;
static bool trans_rsubic(DisasContext *ctx, arg_rsubic *a);
typedef arg_typeb arg_rsubik;
static bool trans_rsubik(DisasContext *ctx, arg_rsubik *a);
typedef arg_typeb arg_rsubikc;
static bool trans_rsubikc(DisasContext *ctx, arg_rsubikc *a);
typedef arg_typeb_bc arg_rtbd;
static bool trans_rtbd(DisasContext *ctx, arg_rtbd *a);
typedef arg_typeb_bc arg_rtid;
static bool trans_rtid(DisasContext *ctx, arg_rtid *a);
typedef arg_typeb_bc arg_rted;
static bool trans_rted(DisasContext *ctx, arg_rted *a);
typedef arg_typeb_bc arg_rtsd;
static bool trans_rtsd(DisasContext *ctx, arg_rtsd *a);
typedef arg_typea arg_sb;
static bool trans_sb(DisasContext *ctx, arg_sb *a);
typedef arg_typea arg_sbr;
static bool trans_sbr(DisasContext *ctx, arg_sbr *a);
typedef arg_typea arg_sbea;
static bool trans_sbea(DisasContext *ctx, arg_sbea *a);
typedef arg_typeb arg_sbi;
static bool trans_sbi(DisasContext *ctx, arg_sbi *a);
typedef arg_typea arg_sh;
static bool trans_sh(DisasContext *ctx, arg_sh *a);
typedef arg_typea arg_shr;
static bool trans_shr(DisasContext *ctx, arg_shr *a);
typedef arg_typea arg_shea;
static bool trans_shea(DisasContext *ctx, arg_shea *a);
typedef arg_typeb arg_shi;
static bool trans_shi(DisasContext *ctx, arg_shi *a);
typedef arg_typea arg_sw;
static bool trans_sw(DisasContext *ctx, arg_sw *a);
typedef arg_typea arg_swr;
static bool trans_swr(DisasContext *ctx, arg_swr *a);
typedef arg_typea arg_swea;
static bool trans_swea(DisasContext *ctx, arg_swea *a);
typedef arg_typea arg_swx;
static bool trans_swx(DisasContext *ctx, arg_swx *a);
typedef arg_typeb arg_swi;
static bool trans_swi(DisasContext *ctx, arg_swi *a);
typedef arg_typea0 arg_sext8;
static bool trans_sext8(DisasContext *ctx, arg_sext8 *a);
typedef arg_typea0 arg_sext16;
static bool trans_sext16(DisasContext *ctx, arg_sext16 *a);
typedef arg_typea0 arg_sra;
static bool trans_sra(DisasContext *ctx, arg_sra *a);
typedef arg_typea0 arg_src;
static bool trans_src(DisasContext *ctx, arg_src *a);
typedef arg_typea0 arg_srl;
static bool trans_srl(DisasContext *ctx, arg_srl *a);
typedef arg_typea0 arg_swapb;
static bool trans_swapb(DisasContext *ctx, arg_swapb *a);
typedef arg_typea0 arg_swaph;
static bool trans_swaph(DisasContext *ctx, arg_swaph *a);
typedef arg_decode8 arg_wdic;
static bool trans_wdic(DisasContext *ctx, arg_wdic *a);
typedef arg_typea arg_xor;
static bool trans_xor(DisasContext *ctx, arg_xor *a);
typedef arg_typeb arg_xori;
static bool trans_xori(DisasContext *ctx, arg_xori *a);

static void decode_extract_decode_Fmt_10(DisasContext *ctx, arg_decode8 *a, uint32_t insn)
{
}

static void decode_extract_decode_Fmt_11(DisasContext *ctx, arg_decode9 *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->ctrl = extract32(insn, 10, 5);
    a->imm = extract32(insn, 0, 4);
}

static void decode_extract_decode_Fmt_12(DisasContext *ctx, arg_decode10 *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->ctrl = extract32(insn, 5, 5);
    a->rb = extract32(insn, 11, 5);
}

static void decode_extract_decode_Fmt_13(DisasContext *ctx, arg_decode11 *a, uint32_t insn)
{
    a->imm = extract32(insn, 0, 16);
}

static void decode_extract_decode_Fmt_14(DisasContext *ctx, arg_decode11 *a, uint32_t insn)
{
    a->imm = extract32(insn, 21, 5);
}

static void decode_extract_decode_Fmt_15(DisasContext *ctx, arg_decode12 *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->e = extract32(insn, 19, 1);
    a->rs = extract32(insn, 0, 14);
}

static void decode_extract_decode_Fmt_16(DisasContext *ctx, arg_decode13 *a, uint32_t insn)
{
    a->e = extract32(insn, 24, 1);
    a->rs = extract32(insn, 0, 14);
    a->ra = extract32(insn, 16, 5);
}

static void decode_extract_decode_Fmt_17(DisasContext *ctx, arg_decode14 *a, uint32_t insn)
{
    a->ctrl = extract32(insn, 10, 5);
    a->ra = extract32(insn, 16, 5);
    a->imm = extract32(insn, 0, 4);
}

static void decode_extract_decode_Fmt_18(DisasContext *ctx, arg_decode15 *a, uint32_t insn)
{
    a->ctrl = extract32(insn, 5, 5);
    a->rb = extract32(insn, 11, 5);
    a->ra = extract32(insn, 16, 5);
}

static void decode_extract_type_msr(DisasContext *ctx, arg_type_msr *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->imm = extract32(insn, 0, 15);
}

static void decode_extract_typea(DisasContext *ctx, arg_typea *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->rb = extract32(insn, 11, 5);
    a->ra = extract32(insn, 16, 5);
}

static void decode_extract_typea0(DisasContext *ctx, arg_typea0 *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->ra = extract32(insn, 16, 5);
}

static void decode_extract_typea_bc(DisasContext *ctx, arg_typea_bc *a, uint32_t insn)
{
    a->rb = extract32(insn, 11, 5);
    a->ra = extract32(insn, 16, 5);
}

static void decode_extract_typea_br(DisasContext *ctx, arg_typea_br *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->rb = extract32(insn, 11, 5);
}

static void decode_extract_typeb(DisasContext *ctx, arg_typeb *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->ra = extract32(insn, 16, 5);
    a->imm = typeb_imm(ctx, sextract32(insn, 0, 16));
}

static void decode_extract_typeb_bc(DisasContext *ctx, arg_typeb_bc *a, uint32_t insn)
{
    a->ra = extract32(insn, 16, 5);
    a->imm = typeb_imm(ctx, sextract32(insn, 0, 16));
}

static void decode_extract_typeb_br(DisasContext *ctx, arg_typeb_br *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->imm = typeb_imm(ctx, sextract32(insn, 0, 16));
}

static void decode_extract_typeb_bs(DisasContext *ctx, arg_typeb *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->ra = extract32(insn, 16, 5);
    a->imm = extract32(insn, 0, 5);
}

static void decode_extract_typeb_ie(DisasContext *ctx, arg_typeb *a, uint32_t insn)
{
    a->rd = extract32(insn, 21, 5);
    a->ra = extract32(insn, 16, 5);
    a->imm = deposit32(extract32(insn, 0, 5), 5, 27, extract32(insn, 6, 5));
}

static bool decode(DisasContext *ctx, uint32_t insn)
{
    union {
        arg_decode10 f_decode10;
        arg_decode11 f_decode11;
        arg_decode12 f_decode12;
        arg_decode13 f_decode13;
        arg_decode14 f_decode14;
        arg_decode15 f_decode15;
        arg_decode8 f_decode8;
        arg_decode9 f_decode9;
        arg_type_msr f_type_msr;
        arg_typea f_typea;
        arg_typea0 f_typea0;
        arg_typea_bc f_typea_bc;
        arg_typea_br f_typea_br;
        arg_typeb f_typeb;
        arg_typeb_bc f_typeb_bc;
        arg_typeb_br f_typeb_br;
    } u;

    switch ((insn >> 26) & 0x3f) {
    case 0x0:
        /* 000000.. ........ ........ ........ */
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 000000.. ........ .....000 00000000 */
            if ((insn & 0x03fff800) == 0x00000000) {
                /* 00000000 00000000 00000000 00000000 */
                /* ../git/target/microblaze/insns.decode:64 */
                decode_extract_decode_Fmt_10(ctx, &u.f_decode8, insn);
                if (trans_zero(ctx, &u.f_decode8)) return true;
            }
            /* ../git/target/microblaze/insns.decode:65 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_add(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x1:
        /* 000001.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 000001.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:210 */
            if (trans_rsub(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x2:
        /* 000010.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 000010.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:67 */
            if (trans_addc(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x3:
        /* 000011.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 000011.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:211 */
            if (trans_rsubc(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x4:
        /* 000100.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 000100.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:68 */
            if (trans_addk(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x5:
        /* 000101.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 000101.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:212 */
            if (trans_rsubk(ctx, &u.f_typea)) return true;
            break;
        case 0x00000001:
            /* 000101.. ........ .....000 00000001 */
            /* ../git/target/microblaze/insns.decode:140 */
            if (trans_cmp(ctx, &u.f_typea)) return true;
            break;
        case 0x00000003:
            /* 000101.. ........ .....000 00000011 */
            /* ../git/target/microblaze/insns.decode:141 */
            if (trans_cmpu(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x6:
        /* 000110.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 000110.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:69 */
            if (trans_addkc(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x7:
        /* 000111.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 000111.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:213 */
            if (trans_rsubkc(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x8:
        /* 001000.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:71 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_addi(ctx, &u.f_typeb)) return true;
        break;
    case 0x9:
        /* 001001.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:215 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_rsubi(ctx, &u.f_typeb)) return true;
        break;
    case 0xa:
        /* 001010.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:72 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_addic(ctx, &u.f_typeb)) return true;
        break;
    case 0xb:
        /* 001011.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:216 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_rsubic(ctx, &u.f_typeb)) return true;
        break;
    case 0xc:
        /* 001100.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:73 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_addik(ctx, &u.f_typeb)) return true;
        break;
    case 0xd:
        /* 001101.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:217 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_rsubik(ctx, &u.f_typeb)) return true;
        break;
    case 0xe:
        /* 001110.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:74 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_addikc(ctx, &u.f_typeb)) return true;
        break;
    case 0xf:
        /* 001111.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:218 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_rsubikc(ctx, &u.f_typeb)) return true;
        break;
    case 0x10:
        /* 010000.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 010000.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:194 */
            if (trans_mul(ctx, &u.f_typea)) return true;
            break;
        case 0x00000001:
            /* 010000.. ........ .....000 00000001 */
            /* ../git/target/microblaze/insns.decode:195 */
            if (trans_mulh(ctx, &u.f_typea)) return true;
            break;
        case 0x00000002:
            /* 010000.. ........ .....000 00000010 */
            /* ../git/target/microblaze/insns.decode:197 */
            if (trans_mulhsu(ctx, &u.f_typea)) return true;
            break;
        case 0x00000003:
            /* 010000.. ........ .....000 00000011 */
            /* ../git/target/microblaze/insns.decode:196 */
            if (trans_mulhu(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x11:
        /* 010001.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 010001.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:127 */
            if (trans_bsrl(ctx, &u.f_typea)) return true;
            break;
        case 0x00000200:
            /* 010001.. ........ .....010 00000000 */
            /* ../git/target/microblaze/insns.decode:128 */
            if (trans_bsra(ctx, &u.f_typea)) return true;
            break;
        case 0x00000400:
            /* 010001.. ........ .....100 00000000 */
            /* ../git/target/microblaze/insns.decode:129 */
            if (trans_bsll(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x12:
        /* 010010.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 010010.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:165 */
            if (trans_idiv(ctx, &u.f_typea)) return true;
            break;
        case 0x00000002:
            /* 010010.. ........ .....000 00000010 */
            /* ../git/target/microblaze/insns.decode:166 */
            if (trans_idivu(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x13:
        /* 010011.. ........ ........ ........ */
        switch (insn & 0x0000041f) {
        case 0x00000000:
            /* 010011.. ........ .....0.. ...00000 */
            decode_extract_decode_Fmt_12(ctx, &u.f_decode10, insn);
            switch ((insn >> 16) & 0x1f) {
            case 0x0:
                /* 010011.. ...00000 .....0.. ...00000 */
                /* ../git/target/microblaze/insns.decode:163 */
                if (trans_getd(ctx, &u.f_decode10)) return true;
                break;
            }
            break;
        case 0x00000400:
            /* 010011.. ........ .....1.. ...00000 */
            decode_extract_decode_Fmt_18(ctx, &u.f_decode15, insn);
            switch ((insn >> 21) & 0x1f) {
            case 0x0:
                /* 01001100 000..... .....1.. ...00000 */
                /* ../git/target/microblaze/insns.decode:208 */
                if (trans_putd(ctx, &u.f_decode15)) return true;
                break;
            }
            break;
        }
        break;
    case 0x16:
        /* 010110.. ........ ........ ........ */
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 010110.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:143 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_fadd(ctx, &u.f_typea)) return true;
            break;
        case 0x00000080:
            /* 010110.. ........ .....000 10000000 */
            /* ../git/target/microblaze/insns.decode:144 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_frsub(ctx, &u.f_typea)) return true;
            break;
        case 0x00000100:
            /* 010110.. ........ .....001 00000000 */
            /* ../git/target/microblaze/insns.decode:145 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_fmul(ctx, &u.f_typea)) return true;
            break;
        case 0x00000180:
            /* 010110.. ........ .....001 10000000 */
            /* ../git/target/microblaze/insns.decode:146 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_fdiv(ctx, &u.f_typea)) return true;
            break;
        case 0x00000200:
            /* 010110.. ........ .....010 00000000 */
            /* ../git/target/microblaze/insns.decode:147 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_fcmp_un(ctx, &u.f_typea)) return true;
            break;
        case 0x00000210:
            /* 010110.. ........ .....010 00010000 */
            /* ../git/target/microblaze/insns.decode:148 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_fcmp_lt(ctx, &u.f_typea)) return true;
            break;
        case 0x00000220:
            /* 010110.. ........ .....010 00100000 */
            /* ../git/target/microblaze/insns.decode:149 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_fcmp_eq(ctx, &u.f_typea)) return true;
            break;
        case 0x00000230:
            /* 010110.. ........ .....010 00110000 */
            /* ../git/target/microblaze/insns.decode:150 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_fcmp_le(ctx, &u.f_typea)) return true;
            break;
        case 0x00000240:
            /* 010110.. ........ .....010 01000000 */
            /* ../git/target/microblaze/insns.decode:151 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_fcmp_gt(ctx, &u.f_typea)) return true;
            break;
        case 0x00000250:
            /* 010110.. ........ .....010 01010000 */
            /* ../git/target/microblaze/insns.decode:152 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_fcmp_ne(ctx, &u.f_typea)) return true;
            break;
        case 0x00000260:
            /* 010110.. ........ .....010 01100000 */
            /* ../git/target/microblaze/insns.decode:153 */
            decode_extract_typea(ctx, &u.f_typea, insn);
            if (trans_fcmp_ge(ctx, &u.f_typea)) return true;
            break;
        case 0x00000280:
            /* 010110.. ........ .....010 10000000 */
            /* ../git/target/microblaze/insns.decode:158 */
            decode_extract_typea0(ctx, &u.f_typea0, insn);
            if (trans_flt(ctx, &u.f_typea0)) return true;
            break;
        case 0x00000300:
            /* 010110.. ........ .....011 00000000 */
            /* ../git/target/microblaze/insns.decode:159 */
            decode_extract_typea0(ctx, &u.f_typea0, insn);
            if (trans_fint(ctx, &u.f_typea0)) return true;
            break;
        case 0x00000380:
            /* 010110.. ........ .....011 10000000 */
            decode_extract_typea0(ctx, &u.f_typea0, insn);
            switch ((insn >> 11) & 0x1f) {
            case 0x0:
                /* 010110.. ........ 00000011 10000000 */
                /* ../git/target/microblaze/insns.decode:160 */
                if (trans_fsqrt(ctx, &u.f_typea0)) return true;
                break;
            }
            break;
        }
        break;
    case 0x18:
        /* 011000.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:198 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_muli(ctx, &u.f_typeb)) return true;
        break;
    case 0x19:
        /* 011001.. ........ ........ ........ */
        switch (insn & 0x0000f820) {
        case 0x00000000:
            /* 011001.. ........ 00000... ..0..... */
            decode_extract_typeb_bs(ctx, &u.f_typeb, insn);
            switch ((insn >> 6) & 0x1f) {
            case 0x0:
                /* 011001.. ........ 00000000 000..... */
                /* ../git/target/microblaze/insns.decode:131 */
                if (trans_bsrli(ctx, &u.f_typeb)) return true;
                break;
            case 0x8:
                /* 011001.. ........ 00000010 000..... */
                /* ../git/target/microblaze/insns.decode:132 */
                if (trans_bsrai(ctx, &u.f_typeb)) return true;
                break;
            case 0x10:
                /* 011001.. ........ 00000100 000..... */
                /* ../git/target/microblaze/insns.decode:133 */
                if (trans_bslli(ctx, &u.f_typeb)) return true;
                break;
            }
            break;
        case 0x00004000:
            /* 011001.. ........ 01000... ..0..... */
            /* ../git/target/microblaze/insns.decode:135 */
            decode_extract_typeb_ie(ctx, &u.f_typeb, insn);
            if (trans_bsefi(ctx, &u.f_typeb)) return true;
            break;
        case 0x00008000:
            /* 011001.. ........ 10000... ..0..... */
            /* ../git/target/microblaze/insns.decode:136 */
            decode_extract_typeb_ie(ctx, &u.f_typeb, insn);
            if (trans_bsifi(ctx, &u.f_typeb)) return true;
            break;
        }
        break;
    case 0x1b:
        /* 011011.. ........ ........ ........ */
        switch (insn & 0x000083f0) {
        case 0x00000000:
            /* 011011.. ........ 0.....00 0000.... */
            decode_extract_decode_Fmt_11(ctx, &u.f_decode9, insn);
            switch ((insn >> 16) & 0x1f) {
            case 0x0:
                /* 011011.. ...00000 0.....00 0000.... */
                /* ../git/target/microblaze/insns.decode:162 */
                if (trans_get(ctx, &u.f_decode9)) return true;
                break;
            }
            break;
        case 0x00008000:
            /* 011011.. ........ 1.....00 0000.... */
            decode_extract_decode_Fmt_17(ctx, &u.f_decode14, insn);
            switch ((insn >> 21) & 0x1f) {
            case 0x0:
                /* 01101100 000..... 1.....00 0000.... */
                /* ../git/target/microblaze/insns.decode:207 */
                if (trans_put(ctx, &u.f_decode14)) return true;
                break;
            }
            break;
        }
        break;
    case 0x20:
        /* 100000.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 100000.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:200 */
            if (trans_or(ctx, &u.f_typea)) return true;
            break;
        case 0x00000400:
            /* 100000.. ........ .....100 00000000 */
            /* ../git/target/microblaze/insns.decode:203 */
            if (trans_pcmpbf(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x21:
        /* 100001.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 100001.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:76 */
            if (trans_and(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x22:
        /* 100010.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 100010.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:255 */
            if (trans_xor(ctx, &u.f_typea)) return true;
            break;
        case 0x00000400:
            /* 100010.. ........ .....100 00000000 */
            /* ../git/target/microblaze/insns.decode:204 */
            if (trans_pcmpeq(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x23:
        /* 100011.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 100011.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:79 */
            if (trans_andn(ctx, &u.f_typea)) return true;
            break;
        case 0x00000400:
            /* 100011.. ........ .....100 00000000 */
            /* ../git/target/microblaze/insns.decode:205 */
            if (trans_pcmpne(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x24:
        /* 100100.. ........ ........ ........ */
        switch (insn & 0x0000036d) {
        case 0x00000001:
            /* 100100.. ........ ......00 .00.00.1 */
            decode_extract_typea0(ctx, &u.f_typea0, insn);
            switch (insn & 0x0000fc92) {
            case 0x00000000:
                /* 100100.. ........ 00000000 00000001 */
                /* ../git/target/microblaze/insns.decode:244 */
                if (trans_sra(ctx, &u.f_typea0)) return true;
                break;
            }
            break;
        case 0x00000021:
            /* 100100.. ........ ......00 .01.00.1 */
            decode_extract_typea0(ctx, &u.f_typea0, insn);
            switch (insn & 0x0000fc92) {
            case 0x00000000:
                /* 100100.. ........ 00000000 00100001 */
                /* ../git/target/microblaze/insns.decode:245 */
                if (trans_src(ctx, &u.f_typea0)) return true;
                break;
            }
            break;
        case 0x00000041:
            /* 100100.. ........ ......00 .10.00.1 */
            decode_extract_typea0(ctx, &u.f_typea0, insn);
            switch (insn & 0x0000fc92) {
            case 0x00000000:
                /* 100100.. ........ 00000000 01000001 */
                /* ../git/target/microblaze/insns.decode:246 */
                if (trans_srl(ctx, &u.f_typea0)) return true;
                break;
            }
            break;
        case 0x00000060:
            /* 100100.. ........ ......00 .11.00.0 */
            decode_extract_typea0(ctx, &u.f_typea0, insn);
            switch (insn & 0x0000fc92) {
            case 0x00000000:
                /* 100100.. ........ 00000000 01100000 */
                /* ../git/target/microblaze/insns.decode:241 */
                if (trans_sext8(ctx, &u.f_typea0)) return true;
                break;
            case 0x00000080:
                /* 100100.. ........ 00000000 11100000 */
                /* ../git/target/microblaze/insns.decode:138 */
                if (trans_clz(ctx, &u.f_typea0)) return true;
                break;
            }
            break;
        case 0x00000061:
            /* 100100.. ........ ......00 .11.00.1 */
            decode_extract_typea0(ctx, &u.f_typea0, insn);
            switch (insn & 0x0000fc92) {
            case 0x00000000:
                /* 100100.. ........ 00000000 01100001 */
                /* ../git/target/microblaze/insns.decode:242 */
                if (trans_sext16(ctx, &u.f_typea0)) return true;
                break;
            }
            break;
        case 0x00000064:
            /* 100100.. ........ ......00 .11.01.0 */
            decode_extract_decode_Fmt_10(ctx, &u.f_decode8, insn);
            switch ((insn >> 21) & 0x1f) {
            case 0x0:
                /* 10010000 000..... ......00 .11.01.0 */
                /* ../git/target/microblaze/insns.decode:252 */
                if (trans_wdic(ctx, &u.f_decode8)) return true;
                break;
            }
            break;
        case 0x00000068:
            /* 100100.. ........ ......00 .11.10.0 */
            decode_extract_decode_Fmt_10(ctx, &u.f_decode8, insn);
            switch (insn & 0x03e00492) {
            case 0x00000000:
                /* 10010000 000..... .....000 01101000 */
                /* ../git/target/microblaze/insns.decode:253 */
                if (trans_wdic(ctx, &u.f_decode8)) return true;
                break;
            }
            break;
        case 0x00000160:
            /* 100100.. ........ ......01 .11.00.0 */
            decode_extract_typea0(ctx, &u.f_typea0, insn);
            switch (insn & 0x0000fc92) {
            case 0x00000080:
                /* 100100.. ........ 00000001 11100000 */
                /* ../git/target/microblaze/insns.decode:248 */
                if (trans_swapb(ctx, &u.f_typea0)) return true;
                break;
            case 0x00000082:
                /* 100100.. ........ 00000001 11100010 */
                /* ../git/target/microblaze/insns.decode:249 */
                if (trans_swaph(ctx, &u.f_typea0)) return true;
                break;
            }
            break;
        }
        break;
    case 0x25:
        /* 100101.. ........ ........ ........ */
        switch ((insn >> 15) & 0x1) {
        case 0x0:
            /* 100101.. ........ 0....... ........ */
            decode_extract_type_msr(ctx, &u.f_type_msr, insn);
            switch ((insn >> 16) & 0x1f) {
            case 0x10:
                /* 100101.. ...10000 0....... ........ */
                /* ../git/target/microblaze/insns.decode:192 */
                if (trans_msrset(ctx, &u.f_type_msr)) return true;
                break;
            case 0x11:
                /* 100101.. ...10001 0....... ........ */
                /* ../git/target/microblaze/insns.decode:191 */
                if (trans_msrclr(ctx, &u.f_type_msr)) return true;
                break;
            }
            break;
        case 0x1:
            /* 100101.. ........ 1....... ........ */
            switch ((insn >> 14) & 0x1) {
            case 0x0:
                /* 100101.. ........ 10...... ........ */
                decode_extract_decode_Fmt_15(ctx, &u.f_decode12, insn);
                switch (insn & 0x00170000) {
                case 0x00000000:
                    /* 100101.. ...0.000 10...... ........ */
                    /* ../git/target/microblaze/insns.decode:188 */
                    if (trans_mfs(ctx, &u.f_decode12)) return true;
                    break;
                }
                break;
            case 0x1:
                /* 100101.. ........ 11...... ........ */
                decode_extract_decode_Fmt_16(ctx, &u.f_decode13, insn);
                switch (insn & 0x02e00000) {
                case 0x00000000:
                    /* 1001010. 000..... 11...... ........ */
                    /* ../git/target/microblaze/insns.decode:189 */
                    if (trans_mts(ctx, &u.f_decode13)) return true;
                    break;
                }
                break;
            }
            break;
        }
        break;
    case 0x26:
        /* 100110.. ........ ........ ........ */
        decode_extract_typea_br(ctx, &u.f_typea_br, insn);
        switch (insn & 0x001f07ff) {
        case 0x00000000:
            /* 100110.. ...00000 .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:110 */
            if (trans_br(ctx, &u.f_typea_br)) return true;
            break;
        case 0x00080000:
            /* 100110.. ...01000 .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:111 */
            if (trans_bra(ctx, &u.f_typea_br)) return true;
            break;
        case 0x000c0000:
            /* 100110.. ...01100 .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:124 */
            if (trans_brk(ctx, &u.f_typea_br)) return true;
            break;
        case 0x00100000:
            /* 100110.. ...10000 .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:112 */
            if (trans_brd(ctx, &u.f_typea_br)) return true;
            break;
        case 0x00140000:
            /* 100110.. ...10100 .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:114 */
            if (trans_brld(ctx, &u.f_typea_br)) return true;
            break;
        case 0x00180000:
            /* 100110.. ...11000 .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:113 */
            if (trans_brad(ctx, &u.f_typea_br)) return true;
            break;
        case 0x001c0000:
            /* 100110.. ...11100 .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:115 */
            if (trans_brald(ctx, &u.f_typea_br)) return true;
            break;
        }
        break;
    case 0x27:
        /* 100111.. ........ ........ ........ */
        decode_extract_typea_bc(ctx, &u.f_typea_bc, insn);
        switch (insn & 0x03e007ff) {
        case 0x00000000:
            /* 10011100 000..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:82 */
            if (trans_beq(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x00200000:
            /* 10011100 001..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:87 */
            if (trans_bne(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x00400000:
            /* 10011100 010..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:86 */
            if (trans_blt(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x00600000:
            /* 10011100 011..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:85 */
            if (trans_ble(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x00800000:
            /* 10011100 100..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:84 */
            if (trans_bgt(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x00a00000:
            /* 10011100 101..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:83 */
            if (trans_bge(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x02000000:
            /* 10011110 000..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:89 */
            if (trans_beqd(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x02200000:
            /* 10011110 001..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:94 */
            if (trans_bned(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x02400000:
            /* 10011110 010..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:93 */
            if (trans_bltd(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x02600000:
            /* 10011110 011..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:92 */
            if (trans_bled(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x02800000:
            /* 10011110 100..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:91 */
            if (trans_bgtd(ctx, &u.f_typea_bc)) return true;
            break;
        case 0x02a00000:
            /* 10011110 101..... .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:90 */
            if (trans_bged(ctx, &u.f_typea_bc)) return true;
            break;
        }
        break;
    case 0x28:
        /* 101000.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:201 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_ori(ctx, &u.f_typeb)) return true;
        break;
    case 0x29:
        /* 101001.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:77 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_andi(ctx, &u.f_typeb)) return true;
        break;
    case 0x2a:
        /* 101010.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:256 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_xori(ctx, &u.f_typeb)) return true;
        break;
    case 0x2b:
        /* 101011.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:80 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_andni(ctx, &u.f_typeb)) return true;
        break;
    case 0x2c:
        /* 101100.. ........ ........ ........ */
        decode_extract_decode_Fmt_13(ctx, &u.f_decode11, insn);
        switch ((insn >> 16) & 0x3ff) {
        case 0x0:
            /* 10110000 00000000 ........ ........ */
            /* ../git/target/microblaze/insns.decode:168 */
            if (trans_imm(ctx, &u.f_decode11)) return true;
            break;
        }
        break;
    case 0x2d:
        /* 101101.. ........ ........ ........ */
        decode_extract_typeb_bc(ctx, &u.f_typeb_bc, insn);
        switch ((insn >> 21) & 0x1f) {
        case 0x10:
            /* 10110110 000..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:223 */
            if (trans_rtsd(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x11:
            /* 10110110 001..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:221 */
            if (trans_rtid(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x12:
            /* 10110110 010..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:220 */
            if (trans_rtbd(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x14:
            /* 10110110 100..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:222 */
            if (trans_rted(ctx, &u.f_typeb_bc)) return true;
            break;
        }
        break;
    case 0x2e:
        /* 101110.. ........ ........ ........ */
        switch ((insn >> 16) & 0x1f) {
        case 0x0:
            /* 101110.. ...00000 ........ ........ */
            /* ../git/target/microblaze/insns.decode:117 */
            decode_extract_typeb_br(ctx, &u.f_typeb_br, insn);
            if (trans_bri(ctx, &u.f_typeb_br)) return true;
            break;
        case 0x2:
            /* 101110.. ...00010 ........ ........ */
            decode_extract_decode_Fmt_14(ctx, &u.f_decode11, insn);
            switch (insn & 0x0000ffff) {
            case 0x00000004:
                /* 101110.. ...00010 00000000 00000100 */
                /* ../git/target/microblaze/insns.decode:186 */
                if (trans_mbar(ctx, &u.f_decode11)) return true;
                break;
            }
            break;
        case 0x8:
            /* 101110.. ...01000 ........ ........ */
            /* ../git/target/microblaze/insns.decode:118 */
            decode_extract_typeb_br(ctx, &u.f_typeb_br, insn);
            if (trans_brai(ctx, &u.f_typeb_br)) return true;
            break;
        case 0xc:
            /* 101110.. ...01100 ........ ........ */
            /* ../git/target/microblaze/insns.decode:125 */
            decode_extract_typeb_br(ctx, &u.f_typeb_br, insn);
            if (trans_brki(ctx, &u.f_typeb_br)) return true;
            break;
        case 0x10:
            /* 101110.. ...10000 ........ ........ */
            /* ../git/target/microblaze/insns.decode:119 */
            decode_extract_typeb_br(ctx, &u.f_typeb_br, insn);
            if (trans_brid(ctx, &u.f_typeb_br)) return true;
            break;
        case 0x14:
            /* 101110.. ...10100 ........ ........ */
            /* ../git/target/microblaze/insns.decode:121 */
            decode_extract_typeb_br(ctx, &u.f_typeb_br, insn);
            if (trans_brlid(ctx, &u.f_typeb_br)) return true;
            break;
        case 0x18:
            /* 101110.. ...11000 ........ ........ */
            /* ../git/target/microblaze/insns.decode:120 */
            decode_extract_typeb_br(ctx, &u.f_typeb_br, insn);
            if (trans_braid(ctx, &u.f_typeb_br)) return true;
            break;
        case 0x1c:
            /* 101110.. ...11100 ........ ........ */
            /* ../git/target/microblaze/insns.decode:122 */
            decode_extract_typeb_br(ctx, &u.f_typeb_br, insn);
            if (trans_bralid(ctx, &u.f_typeb_br)) return true;
            break;
        }
        break;
    case 0x2f:
        /* 101111.. ........ ........ ........ */
        decode_extract_typeb_bc(ctx, &u.f_typeb_bc, insn);
        switch ((insn >> 21) & 0x1f) {
        case 0x0:
            /* 10111100 000..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:96 */
            if (trans_beqi(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x1:
            /* 10111100 001..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:101 */
            if (trans_bnei(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x2:
            /* 10111100 010..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:100 */
            if (trans_blti(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x3:
            /* 10111100 011..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:99 */
            if (trans_blei(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x4:
            /* 10111100 100..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:98 */
            if (trans_bgti(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x5:
            /* 10111100 101..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:97 */
            if (trans_bgei(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x10:
            /* 10111110 000..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:103 */
            if (trans_beqid(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x11:
            /* 10111110 001..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:108 */
            if (trans_bneid(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x12:
            /* 10111110 010..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:107 */
            if (trans_bltid(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x13:
            /* 10111110 011..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:106 */
            if (trans_bleid(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x14:
            /* 10111110 100..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:105 */
            if (trans_bgtid(ctx, &u.f_typeb_bc)) return true;
            break;
        case 0x15:
            /* 10111110 101..... ........ ........ */
            /* ../git/target/microblaze/insns.decode:104 */
            if (trans_bgeid(ctx, &u.f_typeb_bc)) return true;
            break;
        }
        break;
    case 0x30:
        /* 110000.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 110000.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:170 */
            if (trans_lbu(ctx, &u.f_typea)) return true;
            break;
        case 0x00000080:
            /* 110000.. ........ .....000 10000000 */
            /* ../git/target/microblaze/insns.decode:172 */
            if (trans_lbuea(ctx, &u.f_typea)) return true;
            break;
        case 0x00000200:
            /* 110000.. ........ .....010 00000000 */
            /* ../git/target/microblaze/insns.decode:171 */
            if (trans_lbur(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x31:
        /* 110001.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 110001.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:175 */
            if (trans_lhu(ctx, &u.f_typea)) return true;
            break;
        case 0x00000080:
            /* 110001.. ........ .....000 10000000 */
            /* ../git/target/microblaze/insns.decode:177 */
            if (trans_lhuea(ctx, &u.f_typea)) return true;
            break;
        case 0x00000200:
            /* 110001.. ........ .....010 00000000 */
            /* ../git/target/microblaze/insns.decode:176 */
            if (trans_lhur(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x32:
        /* 110010.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 110010.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:180 */
            if (trans_lw(ctx, &u.f_typea)) return true;
            break;
        case 0x00000080:
            /* 110010.. ........ .....000 10000000 */
            /* ../git/target/microblaze/insns.decode:182 */
            if (trans_lwea(ctx, &u.f_typea)) return true;
            break;
        case 0x00000200:
            /* 110010.. ........ .....010 00000000 */
            /* ../git/target/microblaze/insns.decode:181 */
            if (trans_lwr(ctx, &u.f_typea)) return true;
            break;
        case 0x00000400:
            /* 110010.. ........ .....100 00000000 */
            /* ../git/target/microblaze/insns.decode:183 */
            if (trans_lwx(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x34:
        /* 110100.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 110100.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:225 */
            if (trans_sb(ctx, &u.f_typea)) return true;
            break;
        case 0x00000080:
            /* 110100.. ........ .....000 10000000 */
            /* ../git/target/microblaze/insns.decode:227 */
            if (trans_sbea(ctx, &u.f_typea)) return true;
            break;
        case 0x00000200:
            /* 110100.. ........ .....010 00000000 */
            /* ../git/target/microblaze/insns.decode:226 */
            if (trans_sbr(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x35:
        /* 110101.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 110101.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:230 */
            if (trans_sh(ctx, &u.f_typea)) return true;
            break;
        case 0x00000080:
            /* 110101.. ........ .....000 10000000 */
            /* ../git/target/microblaze/insns.decode:232 */
            if (trans_shea(ctx, &u.f_typea)) return true;
            break;
        case 0x00000200:
            /* 110101.. ........ .....010 00000000 */
            /* ../git/target/microblaze/insns.decode:231 */
            if (trans_shr(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x36:
        /* 110110.. ........ ........ ........ */
        decode_extract_typea(ctx, &u.f_typea, insn);
        switch (insn & 0x000007ff) {
        case 0x00000000:
            /* 110110.. ........ .....000 00000000 */
            /* ../git/target/microblaze/insns.decode:235 */
            if (trans_sw(ctx, &u.f_typea)) return true;
            break;
        case 0x00000080:
            /* 110110.. ........ .....000 10000000 */
            /* ../git/target/microblaze/insns.decode:237 */
            if (trans_swea(ctx, &u.f_typea)) return true;
            break;
        case 0x00000200:
            /* 110110.. ........ .....010 00000000 */
            /* ../git/target/microblaze/insns.decode:236 */
            if (trans_swr(ctx, &u.f_typea)) return true;
            break;
        case 0x00000400:
            /* 110110.. ........ .....100 00000000 */
            /* ../git/target/microblaze/insns.decode:238 */
            if (trans_swx(ctx, &u.f_typea)) return true;
            break;
        }
        break;
    case 0x38:
        /* 111000.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:173 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_lbui(ctx, &u.f_typeb)) return true;
        break;
    case 0x39:
        /* 111001.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:178 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_lhui(ctx, &u.f_typeb)) return true;
        break;
    case 0x3a:
        /* 111010.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:184 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_lwi(ctx, &u.f_typeb)) return true;
        break;
    case 0x3c:
        /* 111100.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:228 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_sbi(ctx, &u.f_typeb)) return true;
        break;
    case 0x3d:
        /* 111101.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:233 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_shi(ctx, &u.f_typeb)) return true;
        break;
    case 0x3e:
        /* 111110.. ........ ........ ........ */
        /* ../git/target/microblaze/insns.decode:239 */
        decode_extract_typeb(ctx, &u.f_typeb, insn);
        if (trans_swi(ctx, &u.f_typeb)) return true;
        break;
    }
    return false;
}
