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

typedef struct {
    int vd;
    int vm;
    int vn;
} arg_disas_vfp_uncond0;

typedef struct {
    int cc;
    int dp;
    int vd;
    int vm;
    int vn;
} arg_disas_vfp_uncond1;

typedef struct {
    int dp;
    int rm;
    int vd;
    int vm;
} arg_disas_vfp_uncond2;

typedef struct {
    int dp;
    int op;
    int rm;
    int vd;
    int vm;
} arg_disas_vfp_uncond3;

typedef arg_disas_vfp_uncond1 arg_VSEL;
static bool trans_VSEL(DisasContext *ctx, arg_VSEL *a);
typedef arg_disas_vfp_uncond0 arg_VMAXNM_sp;
static bool trans_VMAXNM_sp(DisasContext *ctx, arg_VMAXNM_sp *a);
typedef arg_disas_vfp_uncond0 arg_VMINNM_sp;
static bool trans_VMINNM_sp(DisasContext *ctx, arg_VMINNM_sp *a);
typedef arg_disas_vfp_uncond0 arg_VMAXNM_dp;
static bool trans_VMAXNM_dp(DisasContext *ctx, arg_VMAXNM_dp *a);
typedef arg_disas_vfp_uncond0 arg_VMINNM_dp;
static bool trans_VMINNM_dp(DisasContext *ctx, arg_VMINNM_dp *a);
typedef arg_disas_vfp_uncond2 arg_VRINT;
static bool trans_VRINT(DisasContext *ctx, arg_VRINT *a);
typedef arg_disas_vfp_uncond3 arg_VCVT;
static bool trans_VCVT(DisasContext *ctx, arg_VCVT *a);

static void disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_2(DisasContext *ctx, arg_disas_vfp_uncond1 *a, uint32_t insn)
{
    a->cc = extract32(insn, 20, 2);
    a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
    a->vn = deposit32(extract32(insn, 7, 1), 1, 31, extract32(insn, 16, 4));
    a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
    a->dp = 0;
}

static void disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_3(DisasContext *ctx, arg_disas_vfp_uncond1 *a, uint32_t insn)
{
    a->cc = extract32(insn, 20, 2);
    a->vm = deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 5, 1));
    a->vn = deposit32(extract32(insn, 16, 4), 4, 28, extract32(insn, 7, 1));
    a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
    a->dp = 1;
}

static void disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_4(DisasContext *ctx, arg_disas_vfp_uncond2 *a, uint32_t insn)
{
    a->rm = extract32(insn, 16, 2);
    a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
    a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
    a->dp = 0;
}

static void disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_5(DisasContext *ctx, arg_disas_vfp_uncond2 *a, uint32_t insn)
{
    a->rm = extract32(insn, 16, 2);
    a->vm = deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 5, 1));
    a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
    a->dp = 1;
}

static void disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_6(DisasContext *ctx, arg_disas_vfp_uncond3 *a, uint32_t insn)
{
    a->rm = extract32(insn, 16, 2);
    a->op = extract32(insn, 7, 1);
    a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
    a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
    a->dp = 0;
}

static void disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_7(DisasContext *ctx, arg_disas_vfp_uncond3 *a, uint32_t insn)
{
    a->rm = extract32(insn, 16, 2);
    a->op = extract32(insn, 7, 1);
    a->vm = deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 5, 1));
    a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
    a->dp = 1;
}

static void disas_vfp_uncond_extract_vfp_dnm_d(DisasContext *ctx, arg_disas_vfp_uncond0 *a, uint32_t insn)
{
    a->vm = deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 5, 1));
    a->vn = deposit32(extract32(insn, 16, 4), 4, 28, extract32(insn, 7, 1));
    a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
}

static void disas_vfp_uncond_extract_vfp_dnm_s(DisasContext *ctx, arg_disas_vfp_uncond0 *a, uint32_t insn)
{
    a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
    a->vn = deposit32(extract32(insn, 7, 1), 1, 31, extract32(insn, 16, 4));
    a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
}

static bool disas_vfp_uncond(DisasContext *ctx, uint32_t insn)
{
    union {
        arg_disas_vfp_uncond0 f_disas_vfp_uncond0;
        arg_disas_vfp_uncond1 f_disas_vfp_uncond1;
        arg_disas_vfp_uncond2 f_disas_vfp_uncond2;
        arg_disas_vfp_uncond3 f_disas_vfp_uncond3;
    } u;

    switch (insn & 0xff800f50) {
    case 0xfe000a00:
        /* 11111110 0....... ....1010 .0.0.... */
        /* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp-uncond.decode:47 */
        disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_2(ctx, &u.f_disas_vfp_uncond1, insn);
        if (trans_VSEL(ctx, &u.f_disas_vfp_uncond1)) return true;
        return false;
    case 0xfe000b00:
        /* 11111110 0....... ....1011 .0.0.... */
        /* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp-uncond.decode:49 */
        disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_3(ctx, &u.f_disas_vfp_uncond1, insn);
        if (trans_VSEL(ctx, &u.f_disas_vfp_uncond1)) return true;
        return false;
    case 0xfe800a00:
        /* 11111110 1....... ....1010 .0.0.... */
        disas_vfp_uncond_extract_vfp_dnm_s(ctx, &u.f_disas_vfp_uncond0, insn);
        switch ((insn >> 20) & 0x3) {
        case 0x0:
            /* 11111110 1.00.... ....1010 .0.0.... */
            /* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp-uncond.decode:52 */
            if (trans_VMAXNM_sp(ctx, &u.f_disas_vfp_uncond0)) return true;
            return false;
        }
        return false;
    case 0xfe800a40:
        /* 11111110 1....... ....1010 .1.0.... */
        switch ((insn >> 20) & 0x3) {
        case 0x0:
            /* 11111110 1.00.... ....1010 .1.0.... */
            /* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp-uncond.decode:53 */
            disas_vfp_uncond_extract_vfp_dnm_s(ctx, &u.f_disas_vfp_uncond0, insn);
            if (trans_VMINNM_sp(ctx, &u.f_disas_vfp_uncond0)) return true;
            return false;
        case 0x3:
            /* 11111110 1.11.... ....1010 .1.0.... */
            switch ((insn >> 18) & 0x3) {
            case 0x2:
                /* 11111110 1.1110.. ....1010 .1.0.... */
                disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_4(ctx, &u.f_disas_vfp_uncond2, insn);
                switch ((insn >> 7) & 0x1) {
                case 0x0:
                    /* 11111110 1.1110.. ....1010 01.0.... */
                    /* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp-uncond.decode:58 */
                    if (trans_VRINT(ctx, &u.f_disas_vfp_uncond2)) return true;
                    return false;
                }
                return false;
            case 0x3:
                /* 11111110 1.1111.. ....1010 .1.0.... */
                /* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp-uncond.decode:64 */
                disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_6(ctx, &u.f_disas_vfp_uncond3, insn);
                if (trans_VCVT(ctx, &u.f_disas_vfp_uncond3)) return true;
                return false;
            }
            return false;
        }
        return false;
    case 0xfe800b00:
        /* 11111110 1....... ....1011 .0.0.... */
        disas_vfp_uncond_extract_vfp_dnm_d(ctx, &u.f_disas_vfp_uncond0, insn);
        switch ((insn >> 20) & 0x3) {
        case 0x0:
            /* 11111110 1.00.... ....1011 .0.0.... */
            /* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp-uncond.decode:55 */
            if (trans_VMAXNM_dp(ctx, &u.f_disas_vfp_uncond0)) return true;
            return false;
        }
        return false;
    case 0xfe800b40:
        /* 11111110 1....... ....1011 .1.0.... */
        switch ((insn >> 20) & 0x3) {
        case 0x0:
            /* 11111110 1.00.... ....1011 .1.0.... */
            /* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp-uncond.decode:56 */
            disas_vfp_uncond_extract_vfp_dnm_d(ctx, &u.f_disas_vfp_uncond0, insn);
            if (trans_VMINNM_dp(ctx, &u.f_disas_vfp_uncond0)) return true;
            return false;
        case 0x3:
            /* 11111110 1.11.... ....1011 .1.0.... */
            switch ((insn >> 18) & 0x3) {
            case 0x2:
                /* 11111110 1.1110.. ....1011 .1.0.... */
                disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_5(ctx, &u.f_disas_vfp_uncond2, insn);
                switch ((insn >> 7) & 0x1) {
                case 0x0:
                    /* 11111110 1.1110.. ....1011 01.0.... */
                    /* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp-uncond.decode:60 */
                    if (trans_VRINT(ctx, &u.f_disas_vfp_uncond2)) return true;
                    return false;
                }
                return false;
            case 0x3:
                /* 11111110 1.1111.. ....1011 .1.0.... */
                /* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp-uncond.decode:66 */
                disas_vfp_uncond_extract_disas_vfp_uncond_Fmt_7(ctx, &u.f_disas_vfp_uncond3, insn);
                if (trans_VCVT(ctx, &u.f_disas_vfp_uncond3)) return true;
                return false;
            }
            return false;
        }
        return false;
    }
    return false;
}
