/* 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; }