1251 lines
56 KiB
C
1251 lines
56 KiB
C
/* This file is autogenerated by scripts/decodetree.py. */
|
|
|
|
typedef struct {
|
|
int vd;
|
|
int vm;
|
|
int vn;
|
|
} arg_disas_vfp0;
|
|
|
|
typedef struct {
|
|
int vd;
|
|
int vm;
|
|
} arg_disas_vfp1;
|
|
|
|
typedef struct {
|
|
int imm;
|
|
int vd;
|
|
} arg_disas_vfp10;
|
|
|
|
typedef struct {
|
|
int e;
|
|
int vd;
|
|
int vm;
|
|
int z;
|
|
} arg_disas_vfp11;
|
|
|
|
typedef struct {
|
|
int t;
|
|
int vd;
|
|
int vm;
|
|
} arg_disas_vfp12;
|
|
|
|
typedef struct {
|
|
int s;
|
|
int vd;
|
|
int vm;
|
|
} arg_disas_vfp13;
|
|
|
|
typedef struct {
|
|
int imm;
|
|
int opc;
|
|
int vd;
|
|
} arg_disas_vfp14;
|
|
|
|
typedef struct {
|
|
int rz;
|
|
int s;
|
|
int vd;
|
|
int vm;
|
|
} arg_disas_vfp15;
|
|
|
|
typedef struct {
|
|
int l;
|
|
int rn;
|
|
} arg_disas_vfp16;
|
|
|
|
typedef struct {
|
|
int index;
|
|
int rt;
|
|
int size;
|
|
int u;
|
|
int vn;
|
|
} arg_disas_vfp2;
|
|
|
|
typedef struct {
|
|
int index;
|
|
int rt;
|
|
int size;
|
|
int vn;
|
|
} arg_disas_vfp3;
|
|
|
|
typedef struct {
|
|
int b;
|
|
int e;
|
|
int q;
|
|
int rt;
|
|
int vn;
|
|
} arg_disas_vfp4;
|
|
|
|
typedef struct {
|
|
int l;
|
|
int reg;
|
|
int rt;
|
|
} arg_disas_vfp5;
|
|
|
|
typedef struct {
|
|
int l;
|
|
int rt;
|
|
int vn;
|
|
} arg_disas_vfp6;
|
|
|
|
typedef struct {
|
|
int op;
|
|
int rt;
|
|
int rt2;
|
|
int vm;
|
|
} arg_disas_vfp7;
|
|
|
|
typedef struct {
|
|
int imm;
|
|
int l;
|
|
int rn;
|
|
int u;
|
|
int vd;
|
|
} arg_disas_vfp8;
|
|
|
|
typedef struct {
|
|
int imm;
|
|
int l;
|
|
int p;
|
|
int rn;
|
|
int u;
|
|
int vd;
|
|
int w;
|
|
} arg_disas_vfp9;
|
|
|
|
typedef arg_disas_vfp2 arg_VMOV_to_gp;
|
|
static bool trans_VMOV_to_gp(DisasContext *ctx, arg_VMOV_to_gp *a);
|
|
typedef arg_disas_vfp3 arg_VMOV_from_gp;
|
|
static bool trans_VMOV_from_gp(DisasContext *ctx, arg_VMOV_from_gp *a);
|
|
typedef arg_disas_vfp4 arg_VDUP;
|
|
static bool trans_VDUP(DisasContext *ctx, arg_VDUP *a);
|
|
typedef arg_disas_vfp5 arg_VMSR_VMRS;
|
|
static bool trans_VMSR_VMRS(DisasContext *ctx, arg_VMSR_VMRS *a);
|
|
typedef arg_disas_vfp6 arg_VMOV_single;
|
|
static bool trans_VMOV_single(DisasContext *ctx, arg_VMOV_single *a);
|
|
typedef arg_disas_vfp7 arg_VMOV_64_sp;
|
|
static bool trans_VMOV_64_sp(DisasContext *ctx, arg_VMOV_64_sp *a);
|
|
typedef arg_disas_vfp7 arg_VMOV_64_dp;
|
|
static bool trans_VMOV_64_dp(DisasContext *ctx, arg_VMOV_64_dp *a);
|
|
typedef arg_disas_vfp8 arg_VLDR_VSTR_sp;
|
|
static bool trans_VLDR_VSTR_sp(DisasContext *ctx, arg_VLDR_VSTR_sp *a);
|
|
typedef arg_disas_vfp8 arg_VLDR_VSTR_dp;
|
|
static bool trans_VLDR_VSTR_dp(DisasContext *ctx, arg_VLDR_VSTR_dp *a);
|
|
typedef arg_disas_vfp9 arg_VLDM_VSTM_sp;
|
|
static bool trans_VLDM_VSTM_sp(DisasContext *ctx, arg_VLDM_VSTM_sp *a);
|
|
typedef arg_disas_vfp9 arg_VLDM_VSTM_dp;
|
|
static bool trans_VLDM_VSTM_dp(DisasContext *ctx, arg_VLDM_VSTM_dp *a);
|
|
typedef arg_disas_vfp0 arg_VMLA_sp;
|
|
static bool trans_VMLA_sp(DisasContext *ctx, arg_VMLA_sp *a);
|
|
typedef arg_disas_vfp0 arg_VMLA_dp;
|
|
static bool trans_VMLA_dp(DisasContext *ctx, arg_VMLA_dp *a);
|
|
typedef arg_disas_vfp0 arg_VMLS_sp;
|
|
static bool trans_VMLS_sp(DisasContext *ctx, arg_VMLS_sp *a);
|
|
typedef arg_disas_vfp0 arg_VMLS_dp;
|
|
static bool trans_VMLS_dp(DisasContext *ctx, arg_VMLS_dp *a);
|
|
typedef arg_disas_vfp0 arg_VNMLS_sp;
|
|
static bool trans_VNMLS_sp(DisasContext *ctx, arg_VNMLS_sp *a);
|
|
typedef arg_disas_vfp0 arg_VNMLS_dp;
|
|
static bool trans_VNMLS_dp(DisasContext *ctx, arg_VNMLS_dp *a);
|
|
typedef arg_disas_vfp0 arg_VNMLA_sp;
|
|
static bool trans_VNMLA_sp(DisasContext *ctx, arg_VNMLA_sp *a);
|
|
typedef arg_disas_vfp0 arg_VNMLA_dp;
|
|
static bool trans_VNMLA_dp(DisasContext *ctx, arg_VNMLA_dp *a);
|
|
typedef arg_disas_vfp0 arg_VMUL_sp;
|
|
static bool trans_VMUL_sp(DisasContext *ctx, arg_VMUL_sp *a);
|
|
typedef arg_disas_vfp0 arg_VMUL_dp;
|
|
static bool trans_VMUL_dp(DisasContext *ctx, arg_VMUL_dp *a);
|
|
typedef arg_disas_vfp0 arg_VNMUL_sp;
|
|
static bool trans_VNMUL_sp(DisasContext *ctx, arg_VNMUL_sp *a);
|
|
typedef arg_disas_vfp0 arg_VNMUL_dp;
|
|
static bool trans_VNMUL_dp(DisasContext *ctx, arg_VNMUL_dp *a);
|
|
typedef arg_disas_vfp0 arg_VADD_sp;
|
|
static bool trans_VADD_sp(DisasContext *ctx, arg_VADD_sp *a);
|
|
typedef arg_disas_vfp0 arg_VADD_dp;
|
|
static bool trans_VADD_dp(DisasContext *ctx, arg_VADD_dp *a);
|
|
typedef arg_disas_vfp0 arg_VSUB_sp;
|
|
static bool trans_VSUB_sp(DisasContext *ctx, arg_VSUB_sp *a);
|
|
typedef arg_disas_vfp0 arg_VSUB_dp;
|
|
static bool trans_VSUB_dp(DisasContext *ctx, arg_VSUB_dp *a);
|
|
typedef arg_disas_vfp0 arg_VDIV_sp;
|
|
static bool trans_VDIV_sp(DisasContext *ctx, arg_VDIV_sp *a);
|
|
typedef arg_disas_vfp0 arg_VDIV_dp;
|
|
static bool trans_VDIV_dp(DisasContext *ctx, arg_VDIV_dp *a);
|
|
typedef arg_disas_vfp0 arg_VFMA_sp;
|
|
static bool trans_VFMA_sp(DisasContext *ctx, arg_VFMA_sp *a);
|
|
typedef arg_disas_vfp0 arg_VFMS_sp;
|
|
static bool trans_VFMS_sp(DisasContext *ctx, arg_VFMS_sp *a);
|
|
typedef arg_disas_vfp0 arg_VFNMA_sp;
|
|
static bool trans_VFNMA_sp(DisasContext *ctx, arg_VFNMA_sp *a);
|
|
typedef arg_disas_vfp0 arg_VFNMS_sp;
|
|
static bool trans_VFNMS_sp(DisasContext *ctx, arg_VFNMS_sp *a);
|
|
typedef arg_disas_vfp0 arg_VFMA_dp;
|
|
static bool trans_VFMA_dp(DisasContext *ctx, arg_VFMA_dp *a);
|
|
typedef arg_disas_vfp0 arg_VFMS_dp;
|
|
static bool trans_VFMS_dp(DisasContext *ctx, arg_VFMS_dp *a);
|
|
typedef arg_disas_vfp0 arg_VFNMA_dp;
|
|
static bool trans_VFNMA_dp(DisasContext *ctx, arg_VFNMA_dp *a);
|
|
typedef arg_disas_vfp0 arg_VFNMS_dp;
|
|
static bool trans_VFNMS_dp(DisasContext *ctx, arg_VFNMS_dp *a);
|
|
typedef arg_disas_vfp10 arg_VMOV_imm_sp;
|
|
static bool trans_VMOV_imm_sp(DisasContext *ctx, arg_VMOV_imm_sp *a);
|
|
typedef arg_disas_vfp10 arg_VMOV_imm_dp;
|
|
static bool trans_VMOV_imm_dp(DisasContext *ctx, arg_VMOV_imm_dp *a);
|
|
typedef arg_disas_vfp1 arg_VMOV_reg_sp;
|
|
static bool trans_VMOV_reg_sp(DisasContext *ctx, arg_VMOV_reg_sp *a);
|
|
typedef arg_disas_vfp1 arg_VMOV_reg_dp;
|
|
static bool trans_VMOV_reg_dp(DisasContext *ctx, arg_VMOV_reg_dp *a);
|
|
typedef arg_disas_vfp1 arg_VABS_sp;
|
|
static bool trans_VABS_sp(DisasContext *ctx, arg_VABS_sp *a);
|
|
typedef arg_disas_vfp1 arg_VABS_dp;
|
|
static bool trans_VABS_dp(DisasContext *ctx, arg_VABS_dp *a);
|
|
typedef arg_disas_vfp1 arg_VNEG_sp;
|
|
static bool trans_VNEG_sp(DisasContext *ctx, arg_VNEG_sp *a);
|
|
typedef arg_disas_vfp1 arg_VNEG_dp;
|
|
static bool trans_VNEG_dp(DisasContext *ctx, arg_VNEG_dp *a);
|
|
typedef arg_disas_vfp1 arg_VSQRT_sp;
|
|
static bool trans_VSQRT_sp(DisasContext *ctx, arg_VSQRT_sp *a);
|
|
typedef arg_disas_vfp1 arg_VSQRT_dp;
|
|
static bool trans_VSQRT_dp(DisasContext *ctx, arg_VSQRT_dp *a);
|
|
typedef arg_disas_vfp11 arg_VCMP_sp;
|
|
static bool trans_VCMP_sp(DisasContext *ctx, arg_VCMP_sp *a);
|
|
typedef arg_disas_vfp11 arg_VCMP_dp;
|
|
static bool trans_VCMP_dp(DisasContext *ctx, arg_VCMP_dp *a);
|
|
typedef arg_disas_vfp12 arg_VCVT_f32_f16;
|
|
static bool trans_VCVT_f32_f16(DisasContext *ctx, arg_VCVT_f32_f16 *a);
|
|
typedef arg_disas_vfp12 arg_VCVT_f64_f16;
|
|
static bool trans_VCVT_f64_f16(DisasContext *ctx, arg_VCVT_f64_f16 *a);
|
|
typedef arg_disas_vfp12 arg_VCVT_f16_f32;
|
|
static bool trans_VCVT_f16_f32(DisasContext *ctx, arg_VCVT_f16_f32 *a);
|
|
typedef arg_disas_vfp12 arg_VCVT_f16_f64;
|
|
static bool trans_VCVT_f16_f64(DisasContext *ctx, arg_VCVT_f16_f64 *a);
|
|
typedef arg_disas_vfp1 arg_VRINTR_sp;
|
|
static bool trans_VRINTR_sp(DisasContext *ctx, arg_VRINTR_sp *a);
|
|
typedef arg_disas_vfp1 arg_VRINTR_dp;
|
|
static bool trans_VRINTR_dp(DisasContext *ctx, arg_VRINTR_dp *a);
|
|
typedef arg_disas_vfp1 arg_VRINTZ_sp;
|
|
static bool trans_VRINTZ_sp(DisasContext *ctx, arg_VRINTZ_sp *a);
|
|
typedef arg_disas_vfp1 arg_VRINTZ_dp;
|
|
static bool trans_VRINTZ_dp(DisasContext *ctx, arg_VRINTZ_dp *a);
|
|
typedef arg_disas_vfp1 arg_VRINTX_sp;
|
|
static bool trans_VRINTX_sp(DisasContext *ctx, arg_VRINTX_sp *a);
|
|
typedef arg_disas_vfp1 arg_VRINTX_dp;
|
|
static bool trans_VRINTX_dp(DisasContext *ctx, arg_VRINTX_dp *a);
|
|
typedef arg_disas_vfp1 arg_VCVT_sp;
|
|
static bool trans_VCVT_sp(DisasContext *ctx, arg_VCVT_sp *a);
|
|
typedef arg_disas_vfp1 arg_VCVT_dp;
|
|
static bool trans_VCVT_dp(DisasContext *ctx, arg_VCVT_dp *a);
|
|
typedef arg_disas_vfp13 arg_VCVT_int_sp;
|
|
static bool trans_VCVT_int_sp(DisasContext *ctx, arg_VCVT_int_sp *a);
|
|
typedef arg_disas_vfp13 arg_VCVT_int_dp;
|
|
static bool trans_VCVT_int_dp(DisasContext *ctx, arg_VCVT_int_dp *a);
|
|
typedef arg_disas_vfp1 arg_VJCVT;
|
|
static bool trans_VJCVT(DisasContext *ctx, arg_VJCVT *a);
|
|
typedef arg_disas_vfp14 arg_VCVT_fix_sp;
|
|
static bool trans_VCVT_fix_sp(DisasContext *ctx, arg_VCVT_fix_sp *a);
|
|
typedef arg_disas_vfp14 arg_VCVT_fix_dp;
|
|
static bool trans_VCVT_fix_dp(DisasContext *ctx, arg_VCVT_fix_dp *a);
|
|
typedef arg_disas_vfp15 arg_VCVT_sp_int;
|
|
static bool trans_VCVT_sp_int(DisasContext *ctx, arg_VCVT_sp_int *a);
|
|
typedef arg_disas_vfp15 arg_VCVT_dp_int;
|
|
static bool trans_VCVT_dp_int(DisasContext *ctx, arg_VCVT_dp_int *a);
|
|
typedef arg_disas_vfp16 arg_VLLDM_VLSTM;
|
|
static bool trans_VLLDM_VLSTM(DisasContext *ctx, arg_VLLDM_VLSTM *a);
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_10(DisasContext *ctx, arg_disas_vfp3 *a, uint32_t insn)
|
|
{
|
|
a->rt = extract32(insn, 12, 4);
|
|
a->vn = deposit32(extract32(insn, 16, 4), 4, 28, extract32(insn, 7, 1));
|
|
a->size = 1;
|
|
a->index = deposit32(extract32(insn, 6, 1), 1, 31, extract32(insn, 21, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_11(DisasContext *ctx, arg_disas_vfp3 *a, uint32_t insn)
|
|
{
|
|
a->index = extract32(insn, 21, 1);
|
|
a->rt = extract32(insn, 12, 4);
|
|
a->vn = deposit32(extract32(insn, 16, 4), 4, 28, extract32(insn, 7, 1));
|
|
a->size = 2;
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_12(DisasContext *ctx, arg_disas_vfp4 *a, uint32_t insn)
|
|
{
|
|
a->b = extract32(insn, 22, 1);
|
|
a->q = extract32(insn, 21, 1);
|
|
a->rt = extract32(insn, 12, 4);
|
|
a->e = extract32(insn, 5, 1);
|
|
a->vn = deposit32(extract32(insn, 16, 4), 4, 28, extract32(insn, 7, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_13(DisasContext *ctx, arg_disas_vfp5 *a, uint32_t insn)
|
|
{
|
|
a->l = extract32(insn, 20, 1);
|
|
a->reg = extract32(insn, 16, 4);
|
|
a->rt = extract32(insn, 12, 4);
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_14(DisasContext *ctx, arg_disas_vfp6 *a, uint32_t insn)
|
|
{
|
|
a->l = extract32(insn, 20, 1);
|
|
a->rt = extract32(insn, 12, 4);
|
|
a->vn = deposit32(extract32(insn, 7, 1), 1, 31, extract32(insn, 16, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_15(DisasContext *ctx, arg_disas_vfp7 *a, uint32_t insn)
|
|
{
|
|
a->op = extract32(insn, 20, 1);
|
|
a->rt2 = extract32(insn, 16, 4);
|
|
a->rt = extract32(insn, 12, 4);
|
|
a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_16(DisasContext *ctx, arg_disas_vfp7 *a, uint32_t insn)
|
|
{
|
|
a->op = extract32(insn, 20, 1);
|
|
a->rt2 = extract32(insn, 16, 4);
|
|
a->rt = extract32(insn, 12, 4);
|
|
a->vm = deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 5, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_17(DisasContext *ctx, arg_disas_vfp8 *a, uint32_t insn)
|
|
{
|
|
a->u = extract32(insn, 23, 1);
|
|
a->l = extract32(insn, 20, 1);
|
|
a->rn = extract32(insn, 16, 4);
|
|
a->imm = extract32(insn, 0, 8);
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_18(DisasContext *ctx, arg_disas_vfp8 *a, uint32_t insn)
|
|
{
|
|
a->u = extract32(insn, 23, 1);
|
|
a->l = extract32(insn, 20, 1);
|
|
a->rn = extract32(insn, 16, 4);
|
|
a->imm = extract32(insn, 0, 8);
|
|
a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_19(DisasContext *ctx, arg_disas_vfp9 *a, uint32_t insn)
|
|
{
|
|
a->w = extract32(insn, 21, 1);
|
|
a->l = extract32(insn, 20, 1);
|
|
a->rn = extract32(insn, 16, 4);
|
|
a->imm = extract32(insn, 0, 8);
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
a->p = 0;
|
|
a->u = 1;
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_20(DisasContext *ctx, arg_disas_vfp9 *a, uint32_t insn)
|
|
{
|
|
a->w = extract32(insn, 21, 1);
|
|
a->l = extract32(insn, 20, 1);
|
|
a->rn = extract32(insn, 16, 4);
|
|
a->imm = extract32(insn, 0, 8);
|
|
a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
|
|
a->p = 0;
|
|
a->u = 1;
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_21(DisasContext *ctx, arg_disas_vfp9 *a, uint32_t insn)
|
|
{
|
|
a->l = extract32(insn, 20, 1);
|
|
a->rn = extract32(insn, 16, 4);
|
|
a->imm = extract32(insn, 0, 8);
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
a->p = 1;
|
|
a->u = 0;
|
|
a->w = 1;
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_22(DisasContext *ctx, arg_disas_vfp9 *a, uint32_t insn)
|
|
{
|
|
a->l = extract32(insn, 20, 1);
|
|
a->rn = extract32(insn, 16, 4);
|
|
a->imm = extract32(insn, 0, 8);
|
|
a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
|
|
a->p = 1;
|
|
a->u = 0;
|
|
a->w = 1;
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_23(DisasContext *ctx, arg_disas_vfp10 *a, uint32_t insn)
|
|
{
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
a->imm = deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 16, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_24(DisasContext *ctx, arg_disas_vfp10 *a, uint32_t insn)
|
|
{
|
|
a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
|
|
a->imm = deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 16, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_25(DisasContext *ctx, arg_disas_vfp11 *a, uint32_t insn)
|
|
{
|
|
a->z = extract32(insn, 16, 1);
|
|
a->e = extract32(insn, 7, 1);
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_26(DisasContext *ctx, arg_disas_vfp11 *a, uint32_t insn)
|
|
{
|
|
a->z = extract32(insn, 16, 1);
|
|
a->e = extract32(insn, 7, 1);
|
|
a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
|
|
a->vm = deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 5, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_27(DisasContext *ctx, arg_disas_vfp12 *a, uint32_t insn)
|
|
{
|
|
a->t = extract32(insn, 7, 1);
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_28(DisasContext *ctx, arg_disas_vfp12 *a, uint32_t insn)
|
|
{
|
|
a->t = extract32(insn, 7, 1);
|
|
a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
|
|
a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_29(DisasContext *ctx, arg_disas_vfp12 *a, uint32_t insn)
|
|
{
|
|
a->t = extract32(insn, 7, 1);
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
a->vm = deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 5, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_30(DisasContext *ctx, arg_disas_vfp13 *a, uint32_t insn)
|
|
{
|
|
a->s = extract32(insn, 7, 1);
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_31(DisasContext *ctx, arg_disas_vfp13 *a, uint32_t insn)
|
|
{
|
|
a->s = extract32(insn, 7, 1);
|
|
a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
|
|
a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_32(DisasContext *ctx, arg_disas_vfp14 *a, uint32_t insn)
|
|
{
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
a->imm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
|
|
a->opc = deposit32(deposit32(extract32(insn, 7, 1), 1, 31, extract32(insn, 16, 1)), 2, 30, extract32(insn, 18, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_33(DisasContext *ctx, arg_disas_vfp14 *a, uint32_t insn)
|
|
{
|
|
a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
|
|
a->imm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
|
|
a->opc = deposit32(deposit32(extract32(insn, 7, 1), 1, 31, extract32(insn, 16, 1)), 2, 30, extract32(insn, 18, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_34(DisasContext *ctx, arg_disas_vfp15 *a, uint32_t insn)
|
|
{
|
|
a->s = extract32(insn, 16, 1);
|
|
a->rz = extract32(insn, 7, 1);
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_35(DisasContext *ctx, arg_disas_vfp15 *a, uint32_t insn)
|
|
{
|
|
a->s = extract32(insn, 16, 1);
|
|
a->rz = extract32(insn, 7, 1);
|
|
a->vd = deposit32(extract32(insn, 22, 1), 1, 31, extract32(insn, 12, 4));
|
|
a->vm = deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 5, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_36(DisasContext *ctx, arg_disas_vfp16 *a, uint32_t insn)
|
|
{
|
|
a->l = extract32(insn, 20, 1);
|
|
a->rn = extract32(insn, 16, 4);
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_6(DisasContext *ctx, arg_disas_vfp2 *a, uint32_t insn)
|
|
{
|
|
a->u = extract32(insn, 23, 1);
|
|
a->rt = extract32(insn, 12, 4);
|
|
a->vn = deposit32(extract32(insn, 16, 4), 4, 28, extract32(insn, 7, 1));
|
|
a->size = 0;
|
|
a->index = deposit32(extract32(insn, 5, 2), 2, 30, extract32(insn, 21, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_7(DisasContext *ctx, arg_disas_vfp2 *a, uint32_t insn)
|
|
{
|
|
a->u = extract32(insn, 23, 1);
|
|
a->rt = extract32(insn, 12, 4);
|
|
a->vn = deposit32(extract32(insn, 16, 4), 4, 28, extract32(insn, 7, 1));
|
|
a->size = 1;
|
|
a->index = deposit32(extract32(insn, 6, 1), 1, 31, extract32(insn, 21, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_8(DisasContext *ctx, arg_disas_vfp2 *a, uint32_t insn)
|
|
{
|
|
a->index = extract32(insn, 21, 1);
|
|
a->rt = extract32(insn, 12, 4);
|
|
a->vn = deposit32(extract32(insn, 16, 4), 4, 28, extract32(insn, 7, 1));
|
|
a->size = 2;
|
|
a->u = 0;
|
|
}
|
|
|
|
static void disas_vfp_extract_disas_vfp_Fmt_9(DisasContext *ctx, arg_disas_vfp3 *a, uint32_t insn)
|
|
{
|
|
a->rt = extract32(insn, 12, 4);
|
|
a->vn = deposit32(extract32(insn, 16, 4), 4, 28, extract32(insn, 7, 1));
|
|
a->size = 0;
|
|
a->index = deposit32(extract32(insn, 5, 2), 2, 30, extract32(insn, 21, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_vfp_dm_dd(DisasContext *ctx, arg_disas_vfp1 *a, uint32_t insn)
|
|
{
|
|
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));
|
|
}
|
|
|
|
static void disas_vfp_extract_vfp_dm_ds(DisasContext *ctx, arg_disas_vfp1 *a, uint32_t insn)
|
|
{
|
|
a->vm = deposit32(extract32(insn, 5, 1), 1, 31, extract32(insn, 0, 4));
|
|
a->vd = deposit32(extract32(insn, 12, 4), 4, 28, extract32(insn, 22, 1));
|
|
}
|
|
|
|
static void disas_vfp_extract_vfp_dm_sd(DisasContext *ctx, arg_disas_vfp1 *a, uint32_t insn)
|
|
{
|
|
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));
|
|
}
|
|
|
|
static void disas_vfp_extract_vfp_dm_ss(DisasContext *ctx, arg_disas_vfp1 *a, uint32_t insn)
|
|
{
|
|
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));
|
|
}
|
|
|
|
static void disas_vfp_extract_vfp_dnm_d(DisasContext *ctx, arg_disas_vfp0 *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_extract_vfp_dnm_s(DisasContext *ctx, arg_disas_vfp0 *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(DisasContext *ctx, uint32_t insn)
|
|
{
|
|
union {
|
|
arg_disas_vfp0 f_disas_vfp0;
|
|
arg_disas_vfp1 f_disas_vfp1;
|
|
arg_disas_vfp10 f_disas_vfp10;
|
|
arg_disas_vfp11 f_disas_vfp11;
|
|
arg_disas_vfp12 f_disas_vfp12;
|
|
arg_disas_vfp13 f_disas_vfp13;
|
|
arg_disas_vfp14 f_disas_vfp14;
|
|
arg_disas_vfp15 f_disas_vfp15;
|
|
arg_disas_vfp16 f_disas_vfp16;
|
|
arg_disas_vfp2 f_disas_vfp2;
|
|
arg_disas_vfp3 f_disas_vfp3;
|
|
arg_disas_vfp4 f_disas_vfp4;
|
|
arg_disas_vfp5 f_disas_vfp5;
|
|
arg_disas_vfp6 f_disas_vfp6;
|
|
arg_disas_vfp7 f_disas_vfp7;
|
|
arg_disas_vfp8 f_disas_vfp8;
|
|
arg_disas_vfp9 f_disas_vfp9;
|
|
} u;
|
|
|
|
switch (insn & 0x0f000f00) {
|
|
case 0x0c000a00:
|
|
/* ....1100 ........ ....1010 ........ */
|
|
switch ((insn >> 23) & 0x1) {
|
|
case 0x0:
|
|
/* ....1100 0....... ....1010 ........ */
|
|
switch (insn & 0x006000d0) {
|
|
case 0x00200000:
|
|
/* ....1100 001..... ....1010 00.0.... */
|
|
disas_vfp_extract_disas_vfp_Fmt_36(ctx, &u.f_disas_vfp16, insn);
|
|
switch (insn & 0xf000f02f) {
|
|
case 0xe0000000:
|
|
/* 11101100 001..... 00001010 00000000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:217 */
|
|
if (trans_VLLDM_VLSTM(ctx, &u.f_disas_vfp16)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00400010:
|
|
/* ....1100 010..... ....1010 00.1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:79 */
|
|
disas_vfp_extract_disas_vfp_Fmt_15(ctx, &u.f_disas_vfp7, insn);
|
|
if (trans_VMOV_64_sp(ctx, &u.f_disas_vfp7)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* ....1100 1....... ....1010 ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:95 */
|
|
disas_vfp_extract_disas_vfp_Fmt_19(ctx, &u.f_disas_vfp9, insn);
|
|
if (trans_VLDM_VSTM_sp(ctx, &u.f_disas_vfp9)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x0c000b00:
|
|
/* ....1100 ........ ....1011 ........ */
|
|
switch ((insn >> 23) & 0x1) {
|
|
case 0x0:
|
|
/* ....1100 0....... ....1011 ........ */
|
|
disas_vfp_extract_disas_vfp_Fmt_16(ctx, &u.f_disas_vfp7, insn);
|
|
switch (insn & 0x006000d0) {
|
|
case 0x00400010:
|
|
/* ....1100 010..... ....1011 00.1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:80 */
|
|
if (trans_VMOV_64_dp(ctx, &u.f_disas_vfp7)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* ....1100 1....... ....1011 ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:97 */
|
|
disas_vfp_extract_disas_vfp_Fmt_20(ctx, &u.f_disas_vfp9, insn);
|
|
if (trans_VLDM_VSTM_dp(ctx, &u.f_disas_vfp9)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x0d000a00:
|
|
/* ....1101 ........ ....1010 ........ */
|
|
switch ((insn >> 21) & 0x1) {
|
|
case 0x0:
|
|
/* ....1101 ..0..... ....1010 ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:84 */
|
|
disas_vfp_extract_disas_vfp_Fmt_17(ctx, &u.f_disas_vfp8, insn);
|
|
if (trans_VLDR_VSTR_sp(ctx, &u.f_disas_vfp8)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1101 ..1..... ....1010 ........ */
|
|
disas_vfp_extract_disas_vfp_Fmt_21(ctx, &u.f_disas_vfp9, insn);
|
|
switch ((insn >> 23) & 0x1) {
|
|
case 0x0:
|
|
/* ....1101 0.1..... ....1010 ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:100 */
|
|
if (trans_VLDM_VSTM_sp(ctx, &u.f_disas_vfp9)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x0d000b00:
|
|
/* ....1101 ........ ....1011 ........ */
|
|
switch ((insn >> 21) & 0x1) {
|
|
case 0x0:
|
|
/* ....1101 ..0..... ....1011 ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:85 */
|
|
disas_vfp_extract_disas_vfp_Fmt_18(ctx, &u.f_disas_vfp8, insn);
|
|
if (trans_VLDR_VSTR_dp(ctx, &u.f_disas_vfp8)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1101 ..1..... ....1011 ........ */
|
|
disas_vfp_extract_disas_vfp_Fmt_22(ctx, &u.f_disas_vfp9, insn);
|
|
switch ((insn >> 23) & 0x1) {
|
|
case 0x0:
|
|
/* ....1101 0.1..... ....1011 ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:102 */
|
|
if (trans_VLDM_VSTM_dp(ctx, &u.f_disas_vfp9)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x0e000a00:
|
|
/* ....1110 ........ ....1010 ........ */
|
|
switch (insn & 0x00a00050) {
|
|
case 0x00000000:
|
|
/* ....1110 0.0..... ....1010 .0.0.... */
|
|
disas_vfp_extract_vfp_dnm_s(ctx, &u.f_disas_vfp0, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 0.00.... ....1010 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:106 */
|
|
if (trans_VMLA_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 0.01.... ....1010 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:112 */
|
|
if (trans_VNMLS_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00000010:
|
|
/* ....1110 0.0..... ....1010 .0.1.... */
|
|
disas_vfp_extract_disas_vfp_Fmt_14(ctx, &u.f_disas_vfp6, insn);
|
|
switch (insn & 0x0040002f) {
|
|
case 0x00000000:
|
|
/* ....1110 000..... ....1010 .0010000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:77 */
|
|
if (trans_VMOV_single(ctx, &u.f_disas_vfp6)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00000040:
|
|
/* ....1110 0.0..... ....1010 .1.0.... */
|
|
disas_vfp_extract_vfp_dnm_s(ctx, &u.f_disas_vfp0, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 0.00.... ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:109 */
|
|
if (trans_VMLS_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 0.01.... ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:115 */
|
|
if (trans_VNMLA_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00200000:
|
|
/* ....1110 0.1..... ....1010 .0.0.... */
|
|
disas_vfp_extract_vfp_dnm_s(ctx, &u.f_disas_vfp0, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 0.10.... ....1010 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:118 */
|
|
if (trans_VMUL_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 0.11.... ....1010 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:124 */
|
|
if (trans_VADD_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00200040:
|
|
/* ....1110 0.1..... ....1010 .1.0.... */
|
|
disas_vfp_extract_vfp_dnm_s(ctx, &u.f_disas_vfp0, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 0.10.... ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:121 */
|
|
if (trans_VNMUL_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 0.11.... ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:127 */
|
|
if (trans_VSUB_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00800000:
|
|
/* ....1110 1.0..... ....1010 .0.0.... */
|
|
disas_vfp_extract_vfp_dnm_s(ctx, &u.f_disas_vfp0, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.00.... ....1010 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:130 */
|
|
if (trans_VDIV_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.01.... ....1010 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:135 */
|
|
if (trans_VFNMA_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00800040:
|
|
/* ....1110 1.0..... ....1010 .1.0.... */
|
|
disas_vfp_extract_vfp_dnm_s(ctx, &u.f_disas_vfp0, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x1:
|
|
/* ....1110 1.01.... ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:136 */
|
|
if (trans_VFNMS_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00a00000:
|
|
/* ....1110 1.1..... ....1010 .0.0.... */
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.10.... ....1010 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:133 */
|
|
disas_vfp_extract_vfp_dnm_s(ctx, &u.f_disas_vfp0, insn);
|
|
if (trans_VFMA_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.11.... ....1010 .0.0.... */
|
|
disas_vfp_extract_disas_vfp_Fmt_23(ctx, &u.f_disas_vfp10, insn);
|
|
switch (insn & 0x000000a0) {
|
|
case 0x00000000:
|
|
/* ....1110 1.11.... ....1010 0000.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:143 */
|
|
if (trans_VMOV_imm_sp(ctx, &u.f_disas_vfp10)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00a00010:
|
|
/* ....1110 1.1..... ....1010 .0.1.... */
|
|
disas_vfp_extract_disas_vfp_Fmt_13(ctx, &u.f_disas_vfp5, insn);
|
|
switch (insn & 0x004000af) {
|
|
case 0x00400000:
|
|
/* ....1110 111..... ....1010 00010000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:76 */
|
|
if (trans_VMSR_VMRS(ctx, &u.f_disas_vfp5)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00a00040:
|
|
/* ....1110 1.1..... ....1010 .1.0.... */
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.10.... ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:134 */
|
|
disas_vfp_extract_vfp_dnm_s(ctx, &u.f_disas_vfp0, insn);
|
|
if (trans_VFMS_sp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.11.... ....1010 .1.0.... */
|
|
switch (insn & 0x000a0000) {
|
|
case 0x00000000:
|
|
/* ....1110 1.110.0. ....1010 .1.0.... */
|
|
switch ((insn >> 18) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.11000. ....1010 .1.0.... */
|
|
disas_vfp_extract_vfp_dm_ss(ctx, &u.f_disas_vfp1, insn);
|
|
switch (insn & 0x00010080) {
|
|
case 0x00000000:
|
|
/* ....1110 1.110000 ....1010 01.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:148 */
|
|
if (trans_VMOV_reg_sp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
case 0x00000080:
|
|
/* ....1110 1.110000 ....1010 11.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:151 */
|
|
if (trans_VABS_sp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
case 0x00010000:
|
|
/* ....1110 1.110001 ....1010 01.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:154 */
|
|
if (trans_VNEG_sp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
case 0x00010080:
|
|
/* ....1110 1.110001 ....1010 11.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:157 */
|
|
if (trans_VSQRT_sp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.11010. ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:160 */
|
|
disas_vfp_extract_disas_vfp_Fmt_25(ctx, &u.f_disas_vfp11, insn);
|
|
if (trans_VCMP_sp(ctx, &u.f_disas_vfp11)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00020000:
|
|
/* ....1110 1.110.1. ....1010 .1.0.... */
|
|
switch (insn & 0x00050000) {
|
|
case 0x00000000:
|
|
/* ....1110 1.110010 ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:166 */
|
|
disas_vfp_extract_disas_vfp_Fmt_27(ctx, &u.f_disas_vfp12, insn);
|
|
if (trans_VCVT_f32_f16(ctx, &u.f_disas_vfp12)) return true;
|
|
return false;
|
|
case 0x00010000:
|
|
/* ....1110 1.110011 ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:173 */
|
|
disas_vfp_extract_disas_vfp_Fmt_27(ctx, &u.f_disas_vfp12, insn);
|
|
if (trans_VCVT_f16_f32(ctx, &u.f_disas_vfp12)) return true;
|
|
return false;
|
|
case 0x00040000:
|
|
/* ....1110 1.110110 ....1010 .1.0.... */
|
|
disas_vfp_extract_vfp_dm_ss(ctx, &u.f_disas_vfp1, insn);
|
|
switch ((insn >> 7) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.110110 ....1010 01.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:178 */
|
|
if (trans_VRINTR_sp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.110110 ....1010 11.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:181 */
|
|
if (trans_VRINTZ_sp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00050000:
|
|
/* ....1110 1.110111 ....1010 .1.0.... */
|
|
switch ((insn >> 7) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.110111 ....1010 01.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:184 */
|
|
disas_vfp_extract_vfp_dm_ss(ctx, &u.f_disas_vfp1, insn);
|
|
if (trans_VRINTX_sp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.110111 ....1010 11.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:189 */
|
|
disas_vfp_extract_vfp_dm_ds(ctx, &u.f_disas_vfp1, insn);
|
|
if (trans_VCVT_sp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00080000:
|
|
/* ....1110 1.111.0. ....1010 .1.0.... */
|
|
switch ((insn >> 18) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.11100. ....1010 .1.0.... */
|
|
disas_vfp_extract_disas_vfp_Fmt_30(ctx, &u.f_disas_vfp13, insn);
|
|
switch ((insn >> 16) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.111000 ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:193 */
|
|
if (trans_VCVT_int_sp(ctx, &u.f_disas_vfp13)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.11110. ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:212 */
|
|
disas_vfp_extract_disas_vfp_Fmt_34(ctx, &u.f_disas_vfp15, insn);
|
|
if (trans_VCVT_sp_int(ctx, &u.f_disas_vfp15)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x000a0000:
|
|
/* ....1110 1.111.1. ....1010 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:206 */
|
|
disas_vfp_extract_disas_vfp_Fmt_32(ctx, &u.f_disas_vfp14, insn);
|
|
if (trans_VCVT_fix_sp(ctx, &u.f_disas_vfp14)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x0e000b00:
|
|
/* ....1110 ........ ....1011 ........ */
|
|
switch (insn & 0x00100010) {
|
|
case 0x00000000:
|
|
/* ....1110 ...0.... ....1011 ...0.... */
|
|
disas_vfp_extract_vfp_dnm_d(ctx, &u.f_disas_vfp0, insn);
|
|
switch (insn & 0x00a00040) {
|
|
case 0x00000000:
|
|
/* ....1110 0.00.... ....1011 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:107 */
|
|
if (trans_VMLA_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00000040:
|
|
/* ....1110 0.00.... ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:110 */
|
|
if (trans_VMLS_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00200000:
|
|
/* ....1110 0.10.... ....1011 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:119 */
|
|
if (trans_VMUL_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00200040:
|
|
/* ....1110 0.10.... ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:122 */
|
|
if (trans_VNMUL_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00800000:
|
|
/* ....1110 1.00.... ....1011 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:131 */
|
|
if (trans_VDIV_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00a00000:
|
|
/* ....1110 1.10.... ....1011 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:138 */
|
|
if (trans_VFMA_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00a00040:
|
|
/* ....1110 1.10.... ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:139 */
|
|
if (trans_VFMS_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00000010:
|
|
/* ....1110 ...0.... ....1011 ...1.... */
|
|
switch (insn & 0x0080000f) {
|
|
case 0x00000000:
|
|
/* ....1110 0..0.... ....1011 ...10000 */
|
|
switch ((insn >> 22) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 00.0.... ....1011 ...10000 */
|
|
switch ((insn >> 5) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 00.0.... ....1011 ..010000 */
|
|
disas_vfp_extract_disas_vfp_Fmt_11(ctx, &u.f_disas_vfp3, insn);
|
|
switch ((insn >> 6) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 00.0.... ....1011 .0010000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:70 */
|
|
if (trans_VMOV_from_gp(ctx, &u.f_disas_vfp3)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 00.0.... ....1011 ..110000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:68 */
|
|
disas_vfp_extract_disas_vfp_Fmt_10(ctx, &u.f_disas_vfp3, insn);
|
|
if (trans_VMOV_from_gp(ctx, &u.f_disas_vfp3)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 01.0.... ....1011 ...10000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:66 */
|
|
disas_vfp_extract_disas_vfp_Fmt_9(ctx, &u.f_disas_vfp3, insn);
|
|
if (trans_VMOV_from_gp(ctx, &u.f_disas_vfp3)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00800000:
|
|
/* ....1110 1..0.... ....1011 ...10000 */
|
|
disas_vfp_extract_disas_vfp_Fmt_12(ctx, &u.f_disas_vfp4, insn);
|
|
switch ((insn >> 6) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1..0.... ....1011 .0.10000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:73 */
|
|
if (trans_VDUP(ctx, &u.f_disas_vfp4)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00100000:
|
|
/* ....1110 ...1.... ....1011 ...0.... */
|
|
switch (insn & 0x00a00040) {
|
|
case 0x00000000:
|
|
/* ....1110 0.01.... ....1011 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:113 */
|
|
disas_vfp_extract_vfp_dnm_d(ctx, &u.f_disas_vfp0, insn);
|
|
if (trans_VNMLS_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00000040:
|
|
/* ....1110 0.01.... ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:116 */
|
|
disas_vfp_extract_vfp_dnm_d(ctx, &u.f_disas_vfp0, insn);
|
|
if (trans_VNMLA_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00200000:
|
|
/* ....1110 0.11.... ....1011 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:125 */
|
|
disas_vfp_extract_vfp_dnm_d(ctx, &u.f_disas_vfp0, insn);
|
|
if (trans_VADD_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00200040:
|
|
/* ....1110 0.11.... ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:128 */
|
|
disas_vfp_extract_vfp_dnm_d(ctx, &u.f_disas_vfp0, insn);
|
|
if (trans_VSUB_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00800000:
|
|
/* ....1110 1.01.... ....1011 .0.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:140 */
|
|
disas_vfp_extract_vfp_dnm_d(ctx, &u.f_disas_vfp0, insn);
|
|
if (trans_VFNMA_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00800040:
|
|
/* ....1110 1.01.... ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:141 */
|
|
disas_vfp_extract_vfp_dnm_d(ctx, &u.f_disas_vfp0, insn);
|
|
if (trans_VFNMS_dp(ctx, &u.f_disas_vfp0)) return true;
|
|
return false;
|
|
case 0x00a00000:
|
|
/* ....1110 1.11.... ....1011 .0.0.... */
|
|
disas_vfp_extract_disas_vfp_Fmt_24(ctx, &u.f_disas_vfp10, insn);
|
|
switch (insn & 0x000000a0) {
|
|
case 0x00000000:
|
|
/* ....1110 1.11.... ....1011 0000.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:145 */
|
|
if (trans_VMOV_imm_dp(ctx, &u.f_disas_vfp10)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00a00040:
|
|
/* ....1110 1.11.... ....1011 .1.0.... */
|
|
switch (insn & 0x000a0000) {
|
|
case 0x00000000:
|
|
/* ....1110 1.110.0. ....1011 .1.0.... */
|
|
switch ((insn >> 18) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.11000. ....1011 .1.0.... */
|
|
disas_vfp_extract_vfp_dm_dd(ctx, &u.f_disas_vfp1, insn);
|
|
switch (insn & 0x00010080) {
|
|
case 0x00000000:
|
|
/* ....1110 1.110000 ....1011 01.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:149 */
|
|
if (trans_VMOV_reg_dp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
case 0x00000080:
|
|
/* ....1110 1.110000 ....1011 11.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:152 */
|
|
if (trans_VABS_dp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
case 0x00010000:
|
|
/* ....1110 1.110001 ....1011 01.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:155 */
|
|
if (trans_VNEG_dp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
case 0x00010080:
|
|
/* ....1110 1.110001 ....1011 11.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:158 */
|
|
if (trans_VSQRT_dp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.11010. ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:162 */
|
|
disas_vfp_extract_disas_vfp_Fmt_26(ctx, &u.f_disas_vfp11, insn);
|
|
if (trans_VCMP_dp(ctx, &u.f_disas_vfp11)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00020000:
|
|
/* ....1110 1.110.1. ....1011 .1.0.... */
|
|
switch (insn & 0x00050000) {
|
|
case 0x00000000:
|
|
/* ....1110 1.110010 ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:168 */
|
|
disas_vfp_extract_disas_vfp_Fmt_28(ctx, &u.f_disas_vfp12, insn);
|
|
if (trans_VCVT_f64_f16(ctx, &u.f_disas_vfp12)) return true;
|
|
return false;
|
|
case 0x00010000:
|
|
/* ....1110 1.110011 ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:175 */
|
|
disas_vfp_extract_disas_vfp_Fmt_29(ctx, &u.f_disas_vfp12, insn);
|
|
if (trans_VCVT_f16_f64(ctx, &u.f_disas_vfp12)) return true;
|
|
return false;
|
|
case 0x00040000:
|
|
/* ....1110 1.110110 ....1011 .1.0.... */
|
|
disas_vfp_extract_vfp_dm_dd(ctx, &u.f_disas_vfp1, insn);
|
|
switch ((insn >> 7) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.110110 ....1011 01.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:179 */
|
|
if (trans_VRINTR_dp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.110110 ....1011 11.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:182 */
|
|
if (trans_VRINTZ_dp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00050000:
|
|
/* ....1110 1.110111 ....1011 .1.0.... */
|
|
switch ((insn >> 7) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.110111 ....1011 01.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:185 */
|
|
disas_vfp_extract_vfp_dm_dd(ctx, &u.f_disas_vfp1, insn);
|
|
if (trans_VRINTX_dp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.110111 ....1011 11.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:190 */
|
|
disas_vfp_extract_vfp_dm_sd(ctx, &u.f_disas_vfp1, insn);
|
|
if (trans_VCVT_dp(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00080000:
|
|
/* ....1110 1.111.0. ....1011 .1.0.... */
|
|
switch ((insn >> 18) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.11100. ....1011 .1.0.... */
|
|
switch ((insn >> 16) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 1.111000 ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:195 */
|
|
disas_vfp_extract_disas_vfp_Fmt_31(ctx, &u.f_disas_vfp13, insn);
|
|
if (trans_VCVT_int_dp(ctx, &u.f_disas_vfp13)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.111001 ....1011 .1.0.... */
|
|
disas_vfp_extract_vfp_dm_sd(ctx, &u.f_disas_vfp1, insn);
|
|
switch ((insn >> 7) & 0x1) {
|
|
case 0x1:
|
|
/* ....1110 1.111001 ....1011 11.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:199 */
|
|
if (trans_VJCVT(ctx, &u.f_disas_vfp1)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 1.11110. ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:214 */
|
|
disas_vfp_extract_disas_vfp_Fmt_35(ctx, &u.f_disas_vfp15, insn);
|
|
if (trans_VCVT_dp_int(ctx, &u.f_disas_vfp15)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x000a0000:
|
|
/* ....1110 1.111.1. ....1011 .1.0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:208 */
|
|
disas_vfp_extract_disas_vfp_Fmt_33(ctx, &u.f_disas_vfp14, insn);
|
|
if (trans_VCVT_fix_dp(ctx, &u.f_disas_vfp14)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00100010:
|
|
/* ....1110 ...1.... ....1011 ...1.... */
|
|
switch (insn & 0x0040000f) {
|
|
case 0x00000000:
|
|
/* ....1110 .0.1.... ....1011 ...10000 */
|
|
switch ((insn >> 5) & 0x1) {
|
|
case 0x0:
|
|
/* ....1110 .0.1.... ....1011 ..010000 */
|
|
disas_vfp_extract_disas_vfp_Fmt_8(ctx, &u.f_disas_vfp2, insn);
|
|
switch (insn & 0x00800040) {
|
|
case 0x00000000:
|
|
/* ....1110 00.1.... ....1011 .0010000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:63 */
|
|
if (trans_VMOV_to_gp(ctx, &u.f_disas_vfp2)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* ....1110 .0.1.... ....1011 ..110000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:61 */
|
|
disas_vfp_extract_disas_vfp_Fmt_7(ctx, &u.f_disas_vfp2, insn);
|
|
if (trans_VMOV_to_gp(ctx, &u.f_disas_vfp2)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00400000:
|
|
/* ....1110 .1.1.... ....1011 ...10000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/vfp.decode:59 */
|
|
disas_vfp_extract_disas_vfp_Fmt_6(ctx, &u.f_disas_vfp2, insn);
|
|
if (trans_VMOV_to_gp(ctx, &u.f_disas_vfp2)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|