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

typedef struct {
    int rs1;
} arg_decode_xthead7;

typedef struct {
    int rs2;
    int rs1;
} arg_decode_xthead8;

typedef struct {
} arg_decode_xthead9;

typedef struct {
    int msb;
    int lsb;
    int rs1;
    int rd;
} arg_th_bfext;

typedef struct {
    int rd;
    int rs1;
    int rs2;
    int imm2;
} arg_th_memidx;

typedef struct {
    int rd;
    int rs1;
    int imm5;
    int imm2;
} arg_th_meminc;

typedef struct {
    int rd1;
    int rs;
    int rd2;
    int sh2;
} arg_th_pair;

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wredundant-decls"
#ifdef __clang__
#  pragma GCC diagnostic ignored "-Wtypedef-redefinition"
#endif

typedef arg_r arg_add;
static bool trans_add(DisasContext *ctx, arg_add *a);
typedef arg_r arg_th_addsl1;
static bool trans_th_addsl1(DisasContext *ctx, arg_th_addsl1 *a);
typedef arg_r arg_th_addsl2;
static bool trans_th_addsl2(DisasContext *ctx, arg_th_addsl2 *a);
typedef arg_r arg_th_addsl3;
static bool trans_th_addsl3(DisasContext *ctx, arg_th_addsl3 *a);
typedef arg_th_bfext arg_th_ext;
static bool trans_th_ext(DisasContext *ctx, arg_th_ext *a);
typedef arg_th_bfext arg_th_extu;
static bool trans_th_extu(DisasContext *ctx, arg_th_extu *a);
typedef arg_r2 arg_th_ff0;
static bool trans_th_ff0(DisasContext *ctx, arg_th_ff0 *a);
typedef arg_r2 arg_th_ff1;
static bool trans_th_ff1(DisasContext *ctx, arg_th_ff1 *a);
typedef arg_shift arg_th_srri;
static bool trans_th_srri(DisasContext *ctx, arg_th_srri *a);
typedef arg_shift arg_th_srriw;
static bool trans_th_srriw(DisasContext *ctx, arg_th_srriw *a);
typedef arg_r2 arg_th_rev;
static bool trans_th_rev(DisasContext *ctx, arg_th_rev *a);
typedef arg_r2 arg_th_revw;
static bool trans_th_revw(DisasContext *ctx, arg_th_revw *a);
typedef arg_r2 arg_th_tstnbz;
static bool trans_th_tstnbz(DisasContext *ctx, arg_th_tstnbz *a);
typedef arg_shift arg_th_tst;
static bool trans_th_tst(DisasContext *ctx, arg_th_tst *a);
typedef arg_decode_xthead9 arg_th_dcache_call;
static bool trans_th_dcache_call(DisasContext *ctx, arg_th_dcache_call *a);
typedef arg_decode_xthead9 arg_th_dcache_ciall;
static bool trans_th_dcache_ciall(DisasContext *ctx, arg_th_dcache_ciall *a);
typedef arg_decode_xthead9 arg_th_dcache_iall;
static bool trans_th_dcache_iall(DisasContext *ctx, arg_th_dcache_iall *a);
typedef arg_decode_xthead7 arg_th_dcache_cpa;
static bool trans_th_dcache_cpa(DisasContext *ctx, arg_th_dcache_cpa *a);
typedef arg_decode_xthead7 arg_th_dcache_cipa;
static bool trans_th_dcache_cipa(DisasContext *ctx, arg_th_dcache_cipa *a);
typedef arg_decode_xthead7 arg_th_dcache_ipa;
static bool trans_th_dcache_ipa(DisasContext *ctx, arg_th_dcache_ipa *a);
typedef arg_decode_xthead7 arg_th_dcache_cva;
static bool trans_th_dcache_cva(DisasContext *ctx, arg_th_dcache_cva *a);
typedef arg_decode_xthead7 arg_th_dcache_civa;
static bool trans_th_dcache_civa(DisasContext *ctx, arg_th_dcache_civa *a);
typedef arg_decode_xthead7 arg_th_dcache_iva;
static bool trans_th_dcache_iva(DisasContext *ctx, arg_th_dcache_iva *a);
typedef arg_decode_xthead7 arg_th_dcache_csw;
static bool trans_th_dcache_csw(DisasContext *ctx, arg_th_dcache_csw *a);
typedef arg_decode_xthead7 arg_th_dcache_cisw;
static bool trans_th_dcache_cisw(DisasContext *ctx, arg_th_dcache_cisw *a);
typedef arg_decode_xthead7 arg_th_dcache_isw;
static bool trans_th_dcache_isw(DisasContext *ctx, arg_th_dcache_isw *a);
typedef arg_decode_xthead7 arg_th_dcache_cpal1;
static bool trans_th_dcache_cpal1(DisasContext *ctx, arg_th_dcache_cpal1 *a);
typedef arg_decode_xthead7 arg_th_dcache_cval1;
static bool trans_th_dcache_cval1(DisasContext *ctx, arg_th_dcache_cval1 *a);
typedef arg_decode_xthead9 arg_th_icache_iall;
static bool trans_th_icache_iall(DisasContext *ctx, arg_th_icache_iall *a);
typedef arg_decode_xthead9 arg_th_icache_ialls;
static bool trans_th_icache_ialls(DisasContext *ctx, arg_th_icache_ialls *a);
typedef arg_decode_xthead7 arg_th_icache_ipa;
static bool trans_th_icache_ipa(DisasContext *ctx, arg_th_icache_ipa *a);
typedef arg_decode_xthead7 arg_th_icache_iva;
static bool trans_th_icache_iva(DisasContext *ctx, arg_th_icache_iva *a);
typedef arg_decode_xthead9 arg_th_l2cache_call;
static bool trans_th_l2cache_call(DisasContext *ctx, arg_th_l2cache_call *a);
typedef arg_decode_xthead9 arg_th_l2cache_ciall;
static bool trans_th_l2cache_ciall(DisasContext *ctx, arg_th_l2cache_ciall *a);
typedef arg_decode_xthead9 arg_th_l2cache_iall;
static bool trans_th_l2cache_iall(DisasContext *ctx, arg_th_l2cache_iall *a);
typedef arg_r arg_th_mveqz;
static bool trans_th_mveqz(DisasContext *ctx, arg_th_mveqz *a);
typedef arg_r arg_th_mvnez;
static bool trans_th_mvnez(DisasContext *ctx, arg_th_mvnez *a);
typedef arg_th_memidx arg_th_flrd;
static bool trans_th_flrd(DisasContext *ctx, arg_th_flrd *a);
typedef arg_th_memidx arg_th_flrw;
static bool trans_th_flrw(DisasContext *ctx, arg_th_flrw *a);
typedef arg_th_memidx arg_th_flurd;
static bool trans_th_flurd(DisasContext *ctx, arg_th_flurd *a);
typedef arg_th_memidx arg_th_flurw;
static bool trans_th_flurw(DisasContext *ctx, arg_th_flurw *a);
typedef arg_th_memidx arg_th_fsrd;
static bool trans_th_fsrd(DisasContext *ctx, arg_th_fsrd *a);
typedef arg_th_memidx arg_th_fsrw;
static bool trans_th_fsrw(DisasContext *ctx, arg_th_fsrw *a);
typedef arg_th_memidx arg_th_fsurd;
static bool trans_th_fsurd(DisasContext *ctx, arg_th_fsurd *a);
typedef arg_th_memidx arg_th_fsurw;
static bool trans_th_fsurw(DisasContext *ctx, arg_th_fsurw *a);
typedef arg_r2 arg_th_fmv_hw_x;
static bool trans_th_fmv_hw_x(DisasContext *ctx, arg_th_fmv_hw_x *a);
typedef arg_r2 arg_th_fmv_x_hw;
static bool trans_th_fmv_x_hw(DisasContext *ctx, arg_th_fmv_x_hw *a);
typedef arg_r arg_th_mula;
static bool trans_th_mula(DisasContext *ctx, arg_th_mula *a);
typedef arg_r arg_th_mulah;
static bool trans_th_mulah(DisasContext *ctx, arg_th_mulah *a);
typedef arg_r arg_th_mulaw;
static bool trans_th_mulaw(DisasContext *ctx, arg_th_mulaw *a);
typedef arg_r arg_th_muls;
static bool trans_th_muls(DisasContext *ctx, arg_th_muls *a);
typedef arg_r arg_th_mulsh;
static bool trans_th_mulsh(DisasContext *ctx, arg_th_mulsh *a);
typedef arg_r arg_th_mulsw;
static bool trans_th_mulsw(DisasContext *ctx, arg_th_mulsw *a);
typedef arg_th_meminc arg_th_ldia;
static bool trans_th_ldia(DisasContext *ctx, arg_th_ldia *a);
typedef arg_th_meminc arg_th_ldib;
static bool trans_th_ldib(DisasContext *ctx, arg_th_ldib *a);
typedef arg_th_meminc arg_th_lwia;
static bool trans_th_lwia(DisasContext *ctx, arg_th_lwia *a);
typedef arg_th_meminc arg_th_lwib;
static bool trans_th_lwib(DisasContext *ctx, arg_th_lwib *a);
typedef arg_th_meminc arg_th_lwuia;
static bool trans_th_lwuia(DisasContext *ctx, arg_th_lwuia *a);
typedef arg_th_meminc arg_th_lwuib;
static bool trans_th_lwuib(DisasContext *ctx, arg_th_lwuib *a);
typedef arg_th_meminc arg_th_lhia;
static bool trans_th_lhia(DisasContext *ctx, arg_th_lhia *a);
typedef arg_th_meminc arg_th_lhib;
static bool trans_th_lhib(DisasContext *ctx, arg_th_lhib *a);
typedef arg_th_meminc arg_th_lhuia;
static bool trans_th_lhuia(DisasContext *ctx, arg_th_lhuia *a);
typedef arg_th_meminc arg_th_lhuib;
static bool trans_th_lhuib(DisasContext *ctx, arg_th_lhuib *a);
typedef arg_th_meminc arg_th_lbia;
static bool trans_th_lbia(DisasContext *ctx, arg_th_lbia *a);
typedef arg_th_meminc arg_th_lbib;
static bool trans_th_lbib(DisasContext *ctx, arg_th_lbib *a);
typedef arg_th_meminc arg_th_lbuia;
static bool trans_th_lbuia(DisasContext *ctx, arg_th_lbuia *a);
typedef arg_th_meminc arg_th_lbuib;
static bool trans_th_lbuib(DisasContext *ctx, arg_th_lbuib *a);
typedef arg_th_meminc arg_th_sdia;
static bool trans_th_sdia(DisasContext *ctx, arg_th_sdia *a);
typedef arg_th_meminc arg_th_sdib;
static bool trans_th_sdib(DisasContext *ctx, arg_th_sdib *a);
typedef arg_th_meminc arg_th_swia;
static bool trans_th_swia(DisasContext *ctx, arg_th_swia *a);
typedef arg_th_meminc arg_th_swib;
static bool trans_th_swib(DisasContext *ctx, arg_th_swib *a);
typedef arg_th_meminc arg_th_shia;
static bool trans_th_shia(DisasContext *ctx, arg_th_shia *a);
typedef arg_th_meminc arg_th_shib;
static bool trans_th_shib(DisasContext *ctx, arg_th_shib *a);
typedef arg_th_meminc arg_th_sbia;
static bool trans_th_sbia(DisasContext *ctx, arg_th_sbia *a);
typedef arg_th_meminc arg_th_sbib;
static bool trans_th_sbib(DisasContext *ctx, arg_th_sbib *a);
typedef arg_th_memidx arg_th_lrd;
static bool trans_th_lrd(DisasContext *ctx, arg_th_lrd *a);
typedef arg_th_memidx arg_th_lrw;
static bool trans_th_lrw(DisasContext *ctx, arg_th_lrw *a);
typedef arg_th_memidx arg_th_lrwu;
static bool trans_th_lrwu(DisasContext *ctx, arg_th_lrwu *a);
typedef arg_th_memidx arg_th_lrh;
static bool trans_th_lrh(DisasContext *ctx, arg_th_lrh *a);
typedef arg_th_memidx arg_th_lrhu;
static bool trans_th_lrhu(DisasContext *ctx, arg_th_lrhu *a);
typedef arg_th_memidx arg_th_lrb;
static bool trans_th_lrb(DisasContext *ctx, arg_th_lrb *a);
typedef arg_th_memidx arg_th_lrbu;
static bool trans_th_lrbu(DisasContext *ctx, arg_th_lrbu *a);
typedef arg_th_memidx arg_th_srd;
static bool trans_th_srd(DisasContext *ctx, arg_th_srd *a);
typedef arg_th_memidx arg_th_srw;
static bool trans_th_srw(DisasContext *ctx, arg_th_srw *a);
typedef arg_th_memidx arg_th_srh;
static bool trans_th_srh(DisasContext *ctx, arg_th_srh *a);
typedef arg_th_memidx arg_th_srb;
static bool trans_th_srb(DisasContext *ctx, arg_th_srb *a);
typedef arg_th_memidx arg_th_lurd;
static bool trans_th_lurd(DisasContext *ctx, arg_th_lurd *a);
typedef arg_th_memidx arg_th_lurw;
static bool trans_th_lurw(DisasContext *ctx, arg_th_lurw *a);
typedef arg_th_memidx arg_th_lurwu;
static bool trans_th_lurwu(DisasContext *ctx, arg_th_lurwu *a);
typedef arg_th_memidx arg_th_lurh;
static bool trans_th_lurh(DisasContext *ctx, arg_th_lurh *a);
typedef arg_th_memidx arg_th_lurhu;
static bool trans_th_lurhu(DisasContext *ctx, arg_th_lurhu *a);
typedef arg_th_memidx arg_th_lurb;
static bool trans_th_lurb(DisasContext *ctx, arg_th_lurb *a);
typedef arg_th_memidx arg_th_lurbu;
static bool trans_th_lurbu(DisasContext *ctx, arg_th_lurbu *a);
typedef arg_th_memidx arg_th_surd;
static bool trans_th_surd(DisasContext *ctx, arg_th_surd *a);
typedef arg_th_memidx arg_th_surw;
static bool trans_th_surw(DisasContext *ctx, arg_th_surw *a);
typedef arg_th_memidx arg_th_surh;
static bool trans_th_surh(DisasContext *ctx, arg_th_surh *a);
typedef arg_th_memidx arg_th_surb;
static bool trans_th_surb(DisasContext *ctx, arg_th_surb *a);
typedef arg_th_pair arg_th_ldd;
static bool trans_th_ldd(DisasContext *ctx, arg_th_ldd *a);
typedef arg_th_pair arg_th_lwd;
static bool trans_th_lwd(DisasContext *ctx, arg_th_lwd *a);
typedef arg_th_pair arg_th_lwud;
static bool trans_th_lwud(DisasContext *ctx, arg_th_lwud *a);
typedef arg_th_pair arg_th_sdd;
static bool trans_th_sdd(DisasContext *ctx, arg_th_sdd *a);
typedef arg_th_pair arg_th_swd;
static bool trans_th_swd(DisasContext *ctx, arg_th_swd *a);
typedef arg_decode_xthead8 arg_th_sfence_vmas;
static bool trans_th_sfence_vmas(DisasContext *ctx, arg_th_sfence_vmas *a);
typedef arg_decode_xthead9 arg_th_sync;
static bool trans_th_sync(DisasContext *ctx, arg_th_sync *a);
typedef arg_decode_xthead9 arg_th_sync_i;
static bool trans_th_sync_i(DisasContext *ctx, arg_th_sync_i *a);
typedef arg_decode_xthead9 arg_th_sync_is;
static bool trans_th_sync_is(DisasContext *ctx, arg_th_sync_is *a);
typedef arg_decode_xthead9 arg_th_sync_s;
static bool trans_th_sync_s(DisasContext *ctx, arg_th_sync_s *a);

#pragma GCC diagnostic pop

static void decode_xthead_extract_decode_xthead_Fmt_10(DisasContext *ctx, arg_decode_xthead9 *a, uint32_t insn)
{
}

static void decode_xthead_extract_r(DisasContext *ctx, arg_r *a, uint32_t insn)
{
    a->rd = extract32(insn, 7, 5);
    a->rs1 = extract32(insn, 15, 5);
    a->rs2 = extract32(insn, 20, 5);
}

static void decode_xthead_extract_r2(DisasContext *ctx, arg_r2 *a, uint32_t insn)
{
    a->rd = extract32(insn, 7, 5);
    a->rs1 = extract32(insn, 15, 5);
}

static void decode_xthead_extract_rs2_s(DisasContext *ctx, arg_decode_xthead8 *a, uint32_t insn)
{
    a->rs1 = extract32(insn, 15, 5);
    a->rs2 = extract32(insn, 20, 5);
}

static void decode_xthead_extract_sfence_vm(DisasContext *ctx, arg_decode_xthead7 *a, uint32_t insn)
{
    a->rs1 = extract32(insn, 15, 5);
}

static void decode_xthead_extract_sh5(DisasContext *ctx, arg_shift *a, uint32_t insn)
{
    a->rd = extract32(insn, 7, 5);
    a->rs1 = extract32(insn, 15, 5);
    a->shamt = extract32(insn, 20, 5);
}

static void decode_xthead_extract_sh6(DisasContext *ctx, arg_shift *a, uint32_t insn)
{
    a->rd = extract32(insn, 7, 5);
    a->rs1 = extract32(insn, 15, 5);
    a->shamt = extract32(insn, 20, 6);
}

static void decode_xthead_extract_th_bfext(DisasContext *ctx, arg_th_bfext *a, uint32_t insn)
{
    a->rd = extract32(insn, 7, 5);
    a->rs1 = extract32(insn, 15, 5);
    a->lsb = extract32(insn, 20, 6);
    a->msb = extract32(insn, 26, 6);
}

static void decode_xthead_extract_th_memidx(DisasContext *ctx, arg_th_memidx *a, uint32_t insn)
{
    a->rd = extract32(insn, 7, 5);
    a->rs1 = extract32(insn, 15, 5);
    a->imm2 = extract32(insn, 25, 2);
    a->rs2 = extract32(insn, 20, 5);
}

static void decode_xthead_extract_th_meminc(DisasContext *ctx, arg_th_meminc *a, uint32_t insn)
{
    a->rd = extract32(insn, 7, 5);
    a->rs1 = extract32(insn, 15, 5);
    a->imm2 = extract32(insn, 25, 2);
    a->imm5 = sextract32(insn, 20, 5);
}

static void decode_xthead_extract_th_pair(DisasContext *ctx, arg_th_pair *a, uint32_t insn)
{
    a->rd1 = extract32(insn, 7, 5);
    a->rs = extract32(insn, 15, 5);
    a->sh2 = extract32(insn, 25, 2);
    a->rd2 = extract32(insn, 20, 5);
}

static bool decode_xthead(DisasContext *ctx, uint32_t insn)
{
    union {
        arg_decode_xthead7 f_decode_xthead7;
        arg_decode_xthead8 f_decode_xthead8;
        arg_decode_xthead9 f_decode_xthead9;
        arg_r f_r;
        arg_r2 f_r2;
        arg_shift f_shift;
        arg_th_bfext f_th_bfext;
        arg_th_memidx f_th_memidx;
        arg_th_meminc f_th_meminc;
        arg_th_pair f_th_pair;
    } u;

    switch (insn & 0x0000707f) {
    case 0x0000000b:
        /* ........ ........ .000.... .0001011 */
        switch (insn & 0xfe000f80u) {
        case 0x00000000:
            /* 0000000. ........ .0000000 00001011 */
            decode_xthead_extract_decode_xthead_Fmt_10(ctx, &u.f_decode_xthead9, insn);
            switch ((insn >> 15) & 0x3ff) {
            case 0x20:
                /* 00000000 00010000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:77 */
                if (trans_th_dcache_call(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x40:
                /* 00000000 00100000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:79 */
                if (trans_th_dcache_iall(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x60:
                /* 00000000 00110000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:78 */
                if (trans_th_dcache_ciall(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x200:
                /* 00000001 00000000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:91 */
                if (trans_th_icache_iall(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x220:
                /* 00000001 00010000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:92 */
                if (trans_th_icache_ialls(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x2a0:
                /* 00000001 01010000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:95 */
                if (trans_th_l2cache_call(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x2c0:
                /* 00000001 01100000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:97 */
                if (trans_th_l2cache_iall(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x2e0:
                /* 00000001 01110000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:96 */
                if (trans_th_l2cache_ciall(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x300:
                /* 00000001 10000000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:182 */
                if (trans_th_sync(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x320:
                /* 00000001 10010000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:185 */
                if (trans_th_sync_s(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x340:
                /* 00000001 10100000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:183 */
                if (trans_th_sync_i(ctx, &u.f_decode_xthead9)) return true;
                break;
            case 0x360:
                /* 00000001 10110000 00000000 00001011 */
                /* ../git/target/riscv/xthead.decode:184 */
                if (trans_th_sync_is(ctx, &u.f_decode_xthead9)) return true;
                break;
            }
            break;
        case 0x02000000:
            /* 0000001. ........ .0000000 00001011 */
            decode_xthead_extract_sfence_vm(ctx, &u.f_decode_xthead7, insn);
            switch ((insn >> 20) & 0x1f) {
            case 0x1:
                /* 00000010 0001.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:86 */
                if (trans_th_dcache_csw(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0x2:
                /* 00000010 0010.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:88 */
                if (trans_th_dcache_isw(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0x3:
                /* 00000010 0011.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:87 */
                if (trans_th_dcache_cisw(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0x4:
                /* 00000010 0100.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:90 */
                if (trans_th_dcache_cval1(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0x5:
                /* 00000010 0101.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:83 */
                if (trans_th_dcache_cva(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0x6:
                /* 00000010 0110.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:85 */
                if (trans_th_dcache_iva(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0x7:
                /* 00000010 0111.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:84 */
                if (trans_th_dcache_civa(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0x8:
                /* 00000010 1000.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:89 */
                if (trans_th_dcache_cpal1(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0x9:
                /* 00000010 1001.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:80 */
                if (trans_th_dcache_cpa(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0xa:
                /* 00000010 1010.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:82 */
                if (trans_th_dcache_ipa(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0xb:
                /* 00000010 1011.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:81 */
                if (trans_th_dcache_cipa(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0x10:
                /* 00000011 0000.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:94 */
                if (trans_th_icache_iva(ctx, &u.f_decode_xthead7)) return true;
                break;
            case 0x18:
                /* 00000011 1000.... .0000000 00001011 */
                /* ../git/target/riscv/xthead.decode:93 */
                if (trans_th_icache_ipa(ctx, &u.f_decode_xthead7)) return true;
                break;
            }
            break;
        case 0x04000000:
            /* 0000010. ........ .0000000 00001011 */
            /* ../git/target/riscv/xthead.decode:181 */
            decode_xthead_extract_rs2_s(ctx, &u.f_decode_xthead8, insn);
            if (trans_th_sfence_vmas(ctx, &u.f_decode_xthead8)) return true;
            break;
        }
        break;
    case 0x0000100b:
        /* ........ ........ .001.... .0001011 */
        switch ((insn >> 26) & 0x3f) {
        case 0x0:
            /* 000000.. ........ .001.... .0001011 */
            decode_xthead_extract_r(ctx, &u.f_r, insn);
            switch ((insn >> 25) & 0x1) {
            case 0x0:
                /* 0000000. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:57 */
                if (trans_add(ctx, &u.f_r)) return true;
                break;
            case 0x1:
                /* 0000001. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:58 */
                if (trans_th_addsl1(ctx, &u.f_r)) return true;
                break;
            }
            break;
        case 0x1:
            /* 000001.. ........ .001.... .0001011 */
            decode_xthead_extract_r(ctx, &u.f_r, insn);
            switch ((insn >> 25) & 0x1) {
            case 0x0:
                /* 0000010. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:59 */
                if (trans_th_addsl2(ctx, &u.f_r)) return true;
                break;
            case 0x1:
                /* 0000011. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:60 */
                if (trans_th_addsl3(ctx, &u.f_r)) return true;
                break;
            }
            break;
        case 0x4:
            /* 000100.. ........ .001.... .0001011 */
            /* ../git/target/riscv/xthead.decode:67 */
            decode_xthead_extract_sh6(ctx, &u.f_shift, insn);
            if (trans_th_srri(ctx, &u.f_shift)) return true;
            break;
        case 0x5:
            /* 000101.. ........ .001.... .0001011 */
            decode_xthead_extract_sh5(ctx, &u.f_shift, insn);
            switch ((insn >> 25) & 0x1) {
            case 0x0:
                /* 0001010. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:68 */
                if (trans_th_srriw(ctx, &u.f_shift)) return true;
                break;
            }
            break;
        case 0x8:
            /* 001000.. ........ .001.... .0001011 */
            decode_xthead_extract_r(ctx, &u.f_r, insn);
            switch ((insn >> 25) & 0x1) {
            case 0x0:
                /* 0010000. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:118 */
                if (trans_th_mula(ctx, &u.f_r)) return true;
                break;
            case 0x1:
                /* 0010001. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:121 */
                if (trans_th_muls(ctx, &u.f_r)) return true;
                break;
            }
            break;
        case 0x9:
            /* 001001.. ........ .001.... .0001011 */
            decode_xthead_extract_r(ctx, &u.f_r, insn);
            switch ((insn >> 25) & 0x1) {
            case 0x0:
                /* 0010010. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:120 */
                if (trans_th_mulaw(ctx, &u.f_r)) return true;
                break;
            case 0x1:
                /* 0010011. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:123 */
                if (trans_th_mulsw(ctx, &u.f_r)) return true;
                break;
            }
            break;
        case 0xa:
            /* 001010.. ........ .001.... .0001011 */
            decode_xthead_extract_r(ctx, &u.f_r, insn);
            switch ((insn >> 25) & 0x1) {
            case 0x0:
                /* 0010100. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:119 */
                if (trans_th_mulah(ctx, &u.f_r)) return true;
                break;
            case 0x1:
                /* 0010101. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:122 */
                if (trans_th_mulsh(ctx, &u.f_r)) return true;
                break;
            }
            break;
        case 0x10:
            /* 010000.. ........ .001.... .0001011 */
            decode_xthead_extract_r(ctx, &u.f_r, insn);
            switch ((insn >> 25) & 0x1) {
            case 0x0:
                /* 0100000. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:100 */
                if (trans_th_mveqz(ctx, &u.f_r)) return true;
                break;
            case 0x1:
                /* 0100001. ........ .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:101 */
                if (trans_th_mvnez(ctx, &u.f_r)) return true;
                break;
            }
            break;
        case 0x20:
            /* 100000.. ........ .001.... .0001011 */
            decode_xthead_extract_r2(ctx, &u.f_r2, insn);
            switch ((insn >> 20) & 0x3f) {
            case 0x0:
                /* 10000000 0000.... .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:71 */
                if (trans_th_tstnbz(ctx, &u.f_r2)) return true;
                break;
            case 0x20:
                /* 10000010 0000.... .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:69 */
                if (trans_th_rev(ctx, &u.f_r2)) return true;
                break;
            }
            break;
        case 0x21:
            /* 100001.. ........ .001.... .0001011 */
            decode_xthead_extract_r2(ctx, &u.f_r2, insn);
            switch ((insn >> 20) & 0x3f) {
            case 0x0:
                /* 10000100 0000.... .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:65 */
                if (trans_th_ff0(ctx, &u.f_r2)) return true;
                break;
            case 0x20:
                /* 10000110 0000.... .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:66 */
                if (trans_th_ff1(ctx, &u.f_r2)) return true;
                break;
            }
            break;
        case 0x22:
            /* 100010.. ........ .001.... .0001011 */
            /* ../git/target/riscv/xthead.decode:74 */
            decode_xthead_extract_sh6(ctx, &u.f_shift, insn);
            if (trans_th_tst(ctx, &u.f_shift)) return true;
            break;
        case 0x24:
            /* 100100.. ........ .001.... .0001011 */
            decode_xthead_extract_r2(ctx, &u.f_r2, insn);
            switch ((insn >> 20) & 0x3f) {
            case 0x0:
                /* 10010000 0000.... .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:70 */
                if (trans_th_revw(ctx, &u.f_r2)) return true;
                break;
            }
            break;
        case 0x28:
            /* 101000.. ........ .001.... .0001011 */
            decode_xthead_extract_r2(ctx, &u.f_r2, insn);
            switch ((insn >> 20) & 0x3f) {
            case 0x0:
                /* 10100000 0000.... .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:114 */
                if (trans_th_fmv_hw_x(ctx, &u.f_r2)) return true;
                break;
            }
            break;
        case 0x30:
            /* 110000.. ........ .001.... .0001011 */
            decode_xthead_extract_r2(ctx, &u.f_r2, insn);
            switch ((insn >> 20) & 0x3f) {
            case 0x0:
                /* 11000000 0000.... .001.... .0001011 */
                /* ../git/target/riscv/xthead.decode:115 */
                if (trans_th_fmv_x_hw(ctx, &u.f_r2)) return true;
                break;
            }
            break;
        }
        break;
    case 0x0000200b:
        /* ........ ........ .010.... .0001011 */
        /* ../git/target/riscv/xthead.decode:63 */
        decode_xthead_extract_th_bfext(ctx, &u.f_th_bfext, insn);
        if (trans_th_ext(ctx, &u.f_th_bfext)) return true;
        break;
    case 0x0000300b:
        /* ........ ........ .011.... .0001011 */
        /* ../git/target/riscv/xthead.decode:64 */
        decode_xthead_extract_th_bfext(ctx, &u.f_th_bfext, insn);
        if (trans_th_extu(ctx, &u.f_th_bfext)) return true;
        break;
    case 0x0000400b:
        /* ........ ........ .100.... .0001011 */
        switch ((insn >> 27) & 0x1f) {
        case 0x0:
            /* 00000... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:154 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lrb(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x1:
            /* 00001... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:137 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lbib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x2:
            /* 00010... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:166 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lurb(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x3:
            /* 00011... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:136 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lbia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x4:
            /* 00100... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:152 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lrh(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x5:
            /* 00101... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:133 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lhib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x6:
            /* 00110... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:164 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lurh(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x7:
            /* 00111... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:132 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lhia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x8:
            /* 01000... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:150 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lrw(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x9:
            /* 01001... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:129 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lwib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0xa:
            /* 01010... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:162 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lurw(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xb:
            /* 01011... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:128 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lwia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0xc:
            /* 01100... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:149 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lrd(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xd:
            /* 01101... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:127 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_ldib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0xe:
            /* 01110... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:161 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lurd(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xf:
            /* 01111... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:126 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_ldia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x10:
            /* 10000... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:155 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lrbu(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x11:
            /* 10001... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:139 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lbuib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x12:
            /* 10010... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:167 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lurbu(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x13:
            /* 10011... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:138 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lbuia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x14:
            /* 10100... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:153 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lrhu(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x15:
            /* 10101... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:135 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lhuib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x16:
            /* 10110... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:165 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lurhu(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x17:
            /* 10111... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:134 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lhuia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x18:
            /* 11000... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:151 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lrwu(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x19:
            /* 11001... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:131 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lwuib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x1a:
            /* 11010... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:163 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_lurwu(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x1b:
            /* 11011... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:130 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_lwuia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x1c:
            /* 11100... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:175 */
            decode_xthead_extract_th_pair(ctx, &u.f_th_pair, insn);
            if (trans_th_lwd(ctx, &u.f_th_pair)) return true;
            break;
        case 0x1e:
            /* 11110... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:176 */
            decode_xthead_extract_th_pair(ctx, &u.f_th_pair, insn);
            if (trans_th_lwud(ctx, &u.f_th_pair)) return true;
            break;
        case 0x1f:
            /* 11111... ........ .100.... .0001011 */
            /* ../git/target/riscv/xthead.decode:174 */
            decode_xthead_extract_th_pair(ctx, &u.f_th_pair, insn);
            if (trans_th_ldd(ctx, &u.f_th_pair)) return true;
            break;
        }
        break;
    case 0x0000500b:
        /* ........ ........ .101.... .0001011 */
        switch ((insn >> 27) & 0x1f) {
        case 0x0:
            /* 00000... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:159 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_srb(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x1:
            /* 00001... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:147 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_sbib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x2:
            /* 00010... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:171 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_surb(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x3:
            /* 00011... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:146 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_sbia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x4:
            /* 00100... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:158 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_srh(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x5:
            /* 00101... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:145 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_shib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x6:
            /* 00110... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:170 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_surh(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x7:
            /* 00111... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:144 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_shia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x8:
            /* 01000... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:157 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_srw(ctx, &u.f_th_memidx)) return true;
            break;
        case 0x9:
            /* 01001... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:143 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_swib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0xa:
            /* 01010... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:169 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_surw(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xb:
            /* 01011... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:142 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_swia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0xc:
            /* 01100... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:156 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_srd(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xd:
            /* 01101... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:141 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_sdib(ctx, &u.f_th_meminc)) return true;
            break;
        case 0xe:
            /* 01110... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:168 */
            decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
            if (trans_th_surd(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xf:
            /* 01111... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:140 */
            decode_xthead_extract_th_meminc(ctx, &u.f_th_meminc, insn);
            if (trans_th_sdia(ctx, &u.f_th_meminc)) return true;
            break;
        case 0x1c:
            /* 11100... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:178 */
            decode_xthead_extract_th_pair(ctx, &u.f_th_pair, insn);
            if (trans_th_swd(ctx, &u.f_th_pair)) return true;
            break;
        case 0x1f:
            /* 11111... ........ .101.... .0001011 */
            /* ../git/target/riscv/xthead.decode:177 */
            decode_xthead_extract_th_pair(ctx, &u.f_th_pair, insn);
            if (trans_th_sdd(ctx, &u.f_th_pair)) return true;
            break;
        }
        break;
    case 0x0000600b:
        /* ........ ........ .110.... .0001011 */
        decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
        switch ((insn >> 27) & 0x1f) {
        case 0x8:
            /* 01000... ........ .110.... .0001011 */
            /* ../git/target/riscv/xthead.decode:105 */
            if (trans_th_flrw(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xa:
            /* 01010... ........ .110.... .0001011 */
            /* ../git/target/riscv/xthead.decode:107 */
            if (trans_th_flurw(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xc:
            /* 01100... ........ .110.... .0001011 */
            /* ../git/target/riscv/xthead.decode:104 */
            if (trans_th_flrd(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xe:
            /* 01110... ........ .110.... .0001011 */
            /* ../git/target/riscv/xthead.decode:106 */
            if (trans_th_flurd(ctx, &u.f_th_memidx)) return true;
            break;
        }
        break;
    case 0x0000700b:
        /* ........ ........ .111.... .0001011 */
        decode_xthead_extract_th_memidx(ctx, &u.f_th_memidx, insn);
        switch ((insn >> 27) & 0x1f) {
        case 0x8:
            /* 01000... ........ .111.... .0001011 */
            /* ../git/target/riscv/xthead.decode:109 */
            if (trans_th_fsrw(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xa:
            /* 01010... ........ .111.... .0001011 */
            /* ../git/target/riscv/xthead.decode:111 */
            if (trans_th_fsurw(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xc:
            /* 01100... ........ .111.... .0001011 */
            /* ../git/target/riscv/xthead.decode:108 */
            if (trans_th_fsrd(ctx, &u.f_th_memidx)) return true;
            break;
        case 0xe:
            /* 01110... ........ .111.... .0001011 */
            /* ../git/target/riscv/xthead.decode:110 */
            if (trans_th_fsurd(ctx, &u.f_th_memidx)) return true;
            break;
        }
        break;
    }
    return false;
}
