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

typedef struct {
    int qd;
    int imm;
    int cmode;
    int op;
} arg_1imm;

typedef struct {
    int qd;
    int qm;
    int size;
} arg_1op;

typedef struct {
    int qd;
    int qm;
    int qn;
    int size;
} arg_2op;

typedef struct {
    int qd;
    int qn;
    int rm;
    int size;
} arg_2scalar;

typedef struct {
    int qd;
    int qm;
    int shift;
    int size;
} arg_2shift;

typedef struct {
    int rt2;
    int idx;
    int rt;
    int qd;
} arg_disas_mve16;

typedef struct {
    int u;
    int size;
    int a;
    int qm;
    int rda;
} arg_disas_mve20;

typedef struct {
    int u;
    int a;
    int qm;
    int rdahi;
    int rdalo;
} arg_disas_mve21;

typedef struct {
    int imm;
    int rdm;
    int qd;
} arg_disas_mve22;

typedef struct {
} arg_disas_mve23;

typedef struct {
    int mask;
} arg_disas_mve24;

typedef struct {
    int qda;
    int rm;
    int size;
} arg_shl_scalar;

typedef struct {
    int qn;
    int qm;
    int rda;
    int size;
} arg_vabav;

typedef struct {
    int qm;
    int qn;
    int size;
    int mask;
} arg_vcmp;

typedef struct {
    int qn;
    int rm;
    int size;
    int mask;
} arg_vcmp_scalar;

typedef struct {
    int qd;
    int rt;
    int size;
} arg_vdup;

typedef struct {
    int qd;
    int rn;
    int size;
    int imm;
} arg_vidup;

typedef struct {
    int qd;
    int rn;
    int rm;
    int size;
    int imm;
} arg_viwdup;

typedef struct {
    int rn;
    int qd;
    int imm;
    int p;
    int a;
    int w;
    int size;
    int l;
    int u;
} arg_vldr_vstr;

typedef struct {
    int qd;
    int rn;
    int size;
    int pat;
    int w;
} arg_vldst_il;

typedef struct {
    int qd;
    int qm;
    int rn;
    int size;
    int msize;
    int os;
} arg_vldst_sg;

typedef struct {
    int qd;
    int qm;
    int a;
    int w;
    int imm;
} arg_vldst_sg_imm;

typedef struct {
    int qm;
    int rda;
    int size;
} arg_vmaxv;

typedef struct {
    int rda;
    int size;
    int qn;
    int qm;
    int x;
    int a;
} arg_vmladav;

typedef struct {
    int rdahi;
    int rdalo;
    int size;
    int qn;
    int qm;
    int x;
    int a;
} arg_vmlaldav;

typedef arg_vldr_vstr arg_VLDSTB_H;
static bool trans_VLDSTB_H(DisasContext *ctx, arg_VLDSTB_H *a);
typedef arg_vldr_vstr arg_VLDSTB_W;
static bool trans_VLDSTB_W(DisasContext *ctx, arg_VLDSTB_W *a);
typedef arg_vldr_vstr arg_VLDSTH_W;
static bool trans_VLDSTH_W(DisasContext *ctx, arg_VLDSTH_W *a);
typedef arg_vldr_vstr arg_VLDR_VSTR;
static bool trans_VLDR_VSTR(DisasContext *ctx, arg_VLDR_VSTR *a);
typedef arg_vldst_sg arg_VLDR_S_sg;
static bool trans_VLDR_S_sg(DisasContext *ctx, arg_VLDR_S_sg *a);
typedef arg_vldst_sg arg_VLDR_U_sg;
static bool trans_VLDR_U_sg(DisasContext *ctx, arg_VLDR_U_sg *a);
typedef arg_vldst_sg arg_VSTR_sg;
static bool trans_VSTR_sg(DisasContext *ctx, arg_VSTR_sg *a);
typedef arg_vldst_sg_imm arg_VLDRW_sg_imm;
static bool trans_VLDRW_sg_imm(DisasContext *ctx, arg_VLDRW_sg_imm *a);
typedef arg_vldst_sg_imm arg_VLDRD_sg_imm;
static bool trans_VLDRD_sg_imm(DisasContext *ctx, arg_VLDRD_sg_imm *a);
typedef arg_vldst_sg_imm arg_VSTRW_sg_imm;
static bool trans_VSTRW_sg_imm(DisasContext *ctx, arg_VSTRW_sg_imm *a);
typedef arg_vldst_sg_imm arg_VSTRD_sg_imm;
static bool trans_VSTRD_sg_imm(DisasContext *ctx, arg_VSTRD_sg_imm *a);
typedef arg_vldst_il arg_VLD2;
static bool trans_VLD2(DisasContext *ctx, arg_VLD2 *a);
typedef arg_vldst_il arg_VLD4;
static bool trans_VLD4(DisasContext *ctx, arg_VLD4 *a);
typedef arg_vldst_il arg_VST2;
static bool trans_VST2(DisasContext *ctx, arg_VST2 *a);
typedef arg_vldst_il arg_VST4;
static bool trans_VST4(DisasContext *ctx, arg_VST4 *a);
typedef arg_disas_mve16 arg_VMOV_to_2gp;
static bool trans_VMOV_to_2gp(DisasContext *ctx, arg_VMOV_to_2gp *a);
typedef arg_disas_mve16 arg_VMOV_from_2gp;
static bool trans_VMOV_from_2gp(DisasContext *ctx, arg_VMOV_from_2gp *a);
typedef arg_2op arg_VAND;
static bool trans_VAND(DisasContext *ctx, arg_VAND *a);
typedef arg_2op arg_VBIC;
static bool trans_VBIC(DisasContext *ctx, arg_VBIC *a);
typedef arg_2op arg_VORR;
static bool trans_VORR(DisasContext *ctx, arg_VORR *a);
typedef arg_2op arg_VORN;
static bool trans_VORN(DisasContext *ctx, arg_VORN *a);
typedef arg_2op arg_VEOR;
static bool trans_VEOR(DisasContext *ctx, arg_VEOR *a);
typedef arg_2op arg_VADD;
static bool trans_VADD(DisasContext *ctx, arg_VADD *a);
typedef arg_2op arg_VSUB;
static bool trans_VSUB(DisasContext *ctx, arg_VSUB *a);
typedef arg_2op arg_VMUL;
static bool trans_VMUL(DisasContext *ctx, arg_VMUL *a);
typedef arg_1op arg_VCVTB_SH;
static bool trans_VCVTB_SH(DisasContext *ctx, arg_VCVTB_SH *a);
typedef arg_2op arg_VMAXNMA;
static bool trans_VMAXNMA(DisasContext *ctx, arg_VMAXNMA *a);
typedef arg_2shift arg_VSHLL_BS;
static bool trans_VSHLL_BS(DisasContext *ctx, arg_VSHLL_BS *a);
typedef arg_1op arg_VQMOVUNB;
static bool trans_VQMOVUNB(DisasContext *ctx, arg_VQMOVUNB *a);
typedef arg_1op arg_VQMOVN_BS;
static bool trans_VQMOVN_BS(DisasContext *ctx, arg_VQMOVN_BS *a);
typedef arg_1op arg_VMAXA;
static bool trans_VMAXA(DisasContext *ctx, arg_VMAXA *a);
typedef arg_2op arg_VMULH_S;
static bool trans_VMULH_S(DisasContext *ctx, arg_VMULH_S *a);
typedef arg_1op arg_VCVTB_HS;
static bool trans_VCVTB_HS(DisasContext *ctx, arg_VCVTB_HS *a);
typedef arg_2shift arg_VSHLL_BU;
static bool trans_VSHLL_BU(DisasContext *ctx, arg_VSHLL_BU *a);
typedef arg_1op arg_VMOVNB;
static bool trans_VMOVNB(DisasContext *ctx, arg_VMOVNB *a);
typedef arg_1op arg_VQMOVN_BU;
static bool trans_VQMOVN_BU(DisasContext *ctx, arg_VQMOVN_BU *a);
typedef arg_2op arg_VMULH_U;
static bool trans_VMULH_U(DisasContext *ctx, arg_VMULH_U *a);
typedef arg_1op arg_VCVTT_SH;
static bool trans_VCVTT_SH(DisasContext *ctx, arg_VCVTT_SH *a);
typedef arg_2op arg_VMINNMA;
static bool trans_VMINNMA(DisasContext *ctx, arg_VMINNMA *a);
typedef arg_2shift arg_VSHLL_TS;
static bool trans_VSHLL_TS(DisasContext *ctx, arg_VSHLL_TS *a);
typedef arg_1op arg_VQMOVUNT;
static bool trans_VQMOVUNT(DisasContext *ctx, arg_VQMOVUNT *a);
typedef arg_1op arg_VQMOVN_TS;
static bool trans_VQMOVN_TS(DisasContext *ctx, arg_VQMOVN_TS *a);
typedef arg_1op arg_VMINA;
static bool trans_VMINA(DisasContext *ctx, arg_VMINA *a);
typedef arg_2op arg_VRMULH_S;
static bool trans_VRMULH_S(DisasContext *ctx, arg_VRMULH_S *a);
typedef arg_1op arg_VCVTT_HS;
static bool trans_VCVTT_HS(DisasContext *ctx, arg_VCVTT_HS *a);
typedef arg_2shift arg_VSHLL_TU;
static bool trans_VSHLL_TU(DisasContext *ctx, arg_VSHLL_TU *a);
typedef arg_1op arg_VMOVNT;
static bool trans_VMOVNT(DisasContext *ctx, arg_VMOVNT *a);
typedef arg_1op arg_VQMOVN_TU;
static bool trans_VQMOVN_TU(DisasContext *ctx, arg_VQMOVN_TU *a);
typedef arg_2op arg_VRMULH_U;
static bool trans_VRMULH_U(DisasContext *ctx, arg_VRMULH_U *a);
typedef arg_2op arg_VMAX_S;
static bool trans_VMAX_S(DisasContext *ctx, arg_VMAX_S *a);
typedef arg_2op arg_VMAX_U;
static bool trans_VMAX_U(DisasContext *ctx, arg_VMAX_U *a);
typedef arg_2op arg_VMIN_S;
static bool trans_VMIN_S(DisasContext *ctx, arg_VMIN_S *a);
typedef arg_2op arg_VMIN_U;
static bool trans_VMIN_U(DisasContext *ctx, arg_VMIN_U *a);
typedef arg_2op arg_VABD_S;
static bool trans_VABD_S(DisasContext *ctx, arg_VABD_S *a);
typedef arg_2op arg_VABD_U;
static bool trans_VABD_U(DisasContext *ctx, arg_VABD_U *a);
typedef arg_2op arg_VHADD_S;
static bool trans_VHADD_S(DisasContext *ctx, arg_VHADD_S *a);
typedef arg_2op arg_VHADD_U;
static bool trans_VHADD_U(DisasContext *ctx, arg_VHADD_U *a);
typedef arg_2op arg_VHSUB_S;
static bool trans_VHSUB_S(DisasContext *ctx, arg_VHSUB_S *a);
typedef arg_2op arg_VHSUB_U;
static bool trans_VHSUB_U(DisasContext *ctx, arg_VHSUB_U *a);
typedef arg_2op arg_VMULLP_B;
static bool trans_VMULLP_B(DisasContext *ctx, arg_VMULLP_B *a);
typedef arg_2op arg_VMULL_BS;
static bool trans_VMULL_BS(DisasContext *ctx, arg_VMULL_BS *a);
typedef arg_2op arg_VMULL_BU;
static bool trans_VMULL_BU(DisasContext *ctx, arg_VMULL_BU *a);
typedef arg_2op arg_VMULLP_T;
static bool trans_VMULLP_T(DisasContext *ctx, arg_VMULLP_T *a);
typedef arg_2op arg_VMULL_TS;
static bool trans_VMULL_TS(DisasContext *ctx, arg_VMULL_TS *a);
typedef arg_2op arg_VMULL_TU;
static bool trans_VMULL_TU(DisasContext *ctx, arg_VMULL_TU *a);
typedef arg_2op arg_VQDMULH;
static bool trans_VQDMULH(DisasContext *ctx, arg_VQDMULH *a);
typedef arg_2op arg_VQRDMULH;
static bool trans_VQRDMULH(DisasContext *ctx, arg_VQRDMULH *a);
typedef arg_2op arg_VQADD_S;
static bool trans_VQADD_S(DisasContext *ctx, arg_VQADD_S *a);
typedef arg_2op arg_VQADD_U;
static bool trans_VQADD_U(DisasContext *ctx, arg_VQADD_U *a);
typedef arg_2op arg_VQSUB_S;
static bool trans_VQSUB_S(DisasContext *ctx, arg_VQSUB_S *a);
typedef arg_2op arg_VQSUB_U;
static bool trans_VQSUB_U(DisasContext *ctx, arg_VQSUB_U *a);
typedef arg_2op arg_VSHL_S;
static bool trans_VSHL_S(DisasContext *ctx, arg_VSHL_S *a);
typedef arg_2op arg_VSHL_U;
static bool trans_VSHL_U(DisasContext *ctx, arg_VSHL_U *a);
typedef arg_2op arg_VRSHL_S;
static bool trans_VRSHL_S(DisasContext *ctx, arg_VRSHL_S *a);
typedef arg_2op arg_VRSHL_U;
static bool trans_VRSHL_U(DisasContext *ctx, arg_VRSHL_U *a);
typedef arg_2op arg_VQSHL_S;
static bool trans_VQSHL_S(DisasContext *ctx, arg_VQSHL_S *a);
typedef arg_2op arg_VQSHL_U;
static bool trans_VQSHL_U(DisasContext *ctx, arg_VQSHL_U *a);
typedef arg_2op arg_VQRSHL_S;
static bool trans_VQRSHL_S(DisasContext *ctx, arg_VQRSHL_S *a);
typedef arg_2op arg_VQRSHL_U;
static bool trans_VQRSHL_U(DisasContext *ctx, arg_VQRSHL_U *a);
typedef arg_2op arg_VCMUL0;
static bool trans_VCMUL0(DisasContext *ctx, arg_VCMUL0 *a);
typedef arg_2op arg_VQDMLADH;
static bool trans_VQDMLADH(DisasContext *ctx, arg_VQDMLADH *a);
typedef arg_2op arg_VQDMLSDH;
static bool trans_VQDMLSDH(DisasContext *ctx, arg_VQDMLSDH *a);
typedef arg_2op arg_VCMUL180;
static bool trans_VCMUL180(DisasContext *ctx, arg_VCMUL180 *a);
typedef arg_2op arg_VQDMLADHX;
static bool trans_VQDMLADHX(DisasContext *ctx, arg_VQDMLADHX *a);
typedef arg_2op arg_VQDMLSDHX;
static bool trans_VQDMLSDHX(DisasContext *ctx, arg_VQDMLSDHX *a);
typedef arg_2op arg_VCMUL90;
static bool trans_VCMUL90(DisasContext *ctx, arg_VCMUL90 *a);
typedef arg_2op arg_VQRDMLADH;
static bool trans_VQRDMLADH(DisasContext *ctx, arg_VQRDMLADH *a);
typedef arg_2op arg_VQRDMLSDH;
static bool trans_VQRDMLSDH(DisasContext *ctx, arg_VQRDMLSDH *a);
typedef arg_2op arg_VCMUL270;
static bool trans_VCMUL270(DisasContext *ctx, arg_VCMUL270 *a);
typedef arg_2op arg_VQRDMLADHX;
static bool trans_VQRDMLADHX(DisasContext *ctx, arg_VQRDMLADHX *a);
typedef arg_2op arg_VQRDMLSDHX;
static bool trans_VQRDMLSDHX(DisasContext *ctx, arg_VQRDMLSDHX *a);
typedef arg_2op arg_VQDMULLB;
static bool trans_VQDMULLB(DisasContext *ctx, arg_VQDMULLB *a);
typedef arg_2op arg_VQDMULLT;
static bool trans_VQDMULLT(DisasContext *ctx, arg_VQDMULLT *a);
typedef arg_2op arg_VRHADD_S;
static bool trans_VRHADD_S(DisasContext *ctx, arg_VRHADD_S *a);
typedef arg_2op arg_VRHADD_U;
static bool trans_VRHADD_U(DisasContext *ctx, arg_VRHADD_U *a);
typedef arg_2op arg_VADC;
static bool trans_VADC(DisasContext *ctx, arg_VADC *a);
typedef arg_2op arg_VADCI;
static bool trans_VADCI(DisasContext *ctx, arg_VADCI *a);
typedef arg_2op arg_VHCADD90;
static bool trans_VHCADD90(DisasContext *ctx, arg_VHCADD90 *a);
typedef arg_2op arg_VHCADD270;
static bool trans_VHCADD270(DisasContext *ctx, arg_VHCADD270 *a);
typedef arg_2op arg_VSBC;
static bool trans_VSBC(DisasContext *ctx, arg_VSBC *a);
typedef arg_2op arg_VSBCI;
static bool trans_VSBCI(DisasContext *ctx, arg_VSBCI *a);
typedef arg_2op arg_VCADD90;
static bool trans_VCADD90(DisasContext *ctx, arg_VCADD90 *a);
typedef arg_2op arg_VCADD270;
static bool trans_VCADD270(DisasContext *ctx, arg_VCADD270 *a);
typedef arg_1op arg_VCLS;
static bool trans_VCLS(DisasContext *ctx, arg_VCLS *a);
typedef arg_1op arg_VCLZ;
static bool trans_VCLZ(DisasContext *ctx, arg_VCLZ *a);
typedef arg_1op arg_VREV16;
static bool trans_VREV16(DisasContext *ctx, arg_VREV16 *a);
typedef arg_1op arg_VREV32;
static bool trans_VREV32(DisasContext *ctx, arg_VREV32 *a);
typedef arg_1op arg_VREV64;
static bool trans_VREV64(DisasContext *ctx, arg_VREV64 *a);
typedef arg_1op arg_VMVN;
static bool trans_VMVN(DisasContext *ctx, arg_VMVN *a);
typedef arg_1op arg_VABS;
static bool trans_VABS(DisasContext *ctx, arg_VABS *a);
typedef arg_1op arg_VABS_fp;
static bool trans_VABS_fp(DisasContext *ctx, arg_VABS_fp *a);
typedef arg_1op arg_VNEG;
static bool trans_VNEG(DisasContext *ctx, arg_VNEG *a);
typedef arg_1op arg_VNEG_fp;
static bool trans_VNEG_fp(DisasContext *ctx, arg_VNEG_fp *a);
typedef arg_1op arg_VQABS;
static bool trans_VQABS(DisasContext *ctx, arg_VQABS *a);
typedef arg_1op arg_VQNEG;
static bool trans_VQNEG(DisasContext *ctx, arg_VQNEG *a);
typedef arg_vdup arg_VDUP;
static bool trans_VDUP(DisasContext *ctx, arg_VDUP *a);
typedef arg_vidup arg_VIDUP;
static bool trans_VIDUP(DisasContext *ctx, arg_VIDUP *a);
typedef arg_viwdup arg_VIWDUP;
static bool trans_VIWDUP(DisasContext *ctx, arg_VIWDUP *a);
typedef arg_vcmp_scalar arg_VCMPGT_fp_scalar;
static bool trans_VCMPGT_fp_scalar(DisasContext *ctx, arg_VCMPGT_fp_scalar *a);
typedef arg_vcmp_scalar arg_VCMPLE_fp_scalar;
static bool trans_VCMPLE_fp_scalar(DisasContext *ctx, arg_VCMPLE_fp_scalar *a);
typedef arg_vidup arg_VDDUP;
static bool trans_VDDUP(DisasContext *ctx, arg_VDDUP *a);
typedef arg_viwdup arg_VDWDUP;
static bool trans_VDWDUP(DisasContext *ctx, arg_VDWDUP *a);
typedef arg_vmladav arg_VMLADAV_S;
static bool trans_VMLADAV_S(DisasContext *ctx, arg_VMLADAV_S *a);
typedef arg_vmlaldav arg_VMLALDAV_S;
static bool trans_VMLALDAV_S(DisasContext *ctx, arg_VMLALDAV_S *a);
typedef arg_vmladav arg_VMLADAV_U;
static bool trans_VMLADAV_U(DisasContext *ctx, arg_VMLADAV_U *a);
typedef arg_vmlaldav arg_VMLALDAV_U;
static bool trans_VMLALDAV_U(DisasContext *ctx, arg_VMLALDAV_U *a);
typedef arg_vmladav arg_VMLSDAV;
static bool trans_VMLSDAV(DisasContext *ctx, arg_VMLSDAV *a);
typedef arg_vmlaldav arg_VMLSLDAV;
static bool trans_VMLSLDAV(DisasContext *ctx, arg_VMLSLDAV *a);
typedef arg_vmlaldav arg_VRMLSLDAVH;
static bool trans_VRMLSLDAVH(DisasContext *ctx, arg_VRMLSLDAVH *a);
typedef arg_vmaxv arg_VMAXNMAV;
static bool trans_VMAXNMAV(DisasContext *ctx, arg_VMAXNMAV *a);
typedef arg_vmaxv arg_VMINNMAV;
static bool trans_VMINNMAV(DisasContext *ctx, arg_VMINNMAV *a);
typedef arg_vmaxv arg_VMAXNMV;
static bool trans_VMAXNMV(DisasContext *ctx, arg_VMAXNMV *a);
typedef arg_vmaxv arg_VMINNMV;
static bool trans_VMINNMV(DisasContext *ctx, arg_VMINNMV *a);
typedef arg_vmaxv arg_VMAXV_S;
static bool trans_VMAXV_S(DisasContext *ctx, arg_VMAXV_S *a);
typedef arg_vmaxv arg_VMINV_S;
static bool trans_VMINV_S(DisasContext *ctx, arg_VMINV_S *a);
typedef arg_vmaxv arg_VMAXAV;
static bool trans_VMAXAV(DisasContext *ctx, arg_VMAXAV *a);
typedef arg_vmaxv arg_VMINAV;
static bool trans_VMINAV(DisasContext *ctx, arg_VMINAV *a);
typedef arg_vmlaldav arg_VRMLALDAVH_S;
static bool trans_VRMLALDAVH_S(DisasContext *ctx, arg_VRMLALDAVH_S *a);
typedef arg_vmaxv arg_VMAXV_U;
static bool trans_VMAXV_U(DisasContext *ctx, arg_VMAXV_U *a);
typedef arg_vmaxv arg_VMINV_U;
static bool trans_VMINV_U(DisasContext *ctx, arg_VMINV_U *a);
typedef arg_vmlaldav arg_VRMLALDAVH_U;
static bool trans_VRMLALDAVH_U(DisasContext *ctx, arg_VRMLALDAVH_U *a);
typedef arg_vcmp_scalar arg_VCMPEQ_fp_scalar;
static bool trans_VCMPEQ_fp_scalar(DisasContext *ctx, arg_VCMPEQ_fp_scalar *a);
typedef arg_vcmp_scalar arg_VCMPNE_fp_scalar;
static bool trans_VCMPNE_fp_scalar(DisasContext *ctx, arg_VCMPNE_fp_scalar *a);
typedef arg_2scalar arg_VADD_scalar;
static bool trans_VADD_scalar(DisasContext *ctx, arg_VADD_scalar *a);
typedef arg_vcmp_scalar arg_VCMPLT_fp_scalar;
static bool trans_VCMPLT_fp_scalar(DisasContext *ctx, arg_VCMPLT_fp_scalar *a);
typedef arg_vcmp_scalar arg_VCMPGE_fp_scalar;
static bool trans_VCMPGE_fp_scalar(DisasContext *ctx, arg_VCMPGE_fp_scalar *a);
typedef arg_2scalar arg_VSUB_scalar;
static bool trans_VSUB_scalar(DisasContext *ctx, arg_VSUB_scalar *a);
typedef arg_shl_scalar arg_VSHL_S_scalar;
static bool trans_VSHL_S_scalar(DisasContext *ctx, arg_VSHL_S_scalar *a);
typedef arg_shl_scalar arg_VRSHL_S_scalar;
static bool trans_VRSHL_S_scalar(DisasContext *ctx, arg_VRSHL_S_scalar *a);
typedef arg_shl_scalar arg_VQSHL_S_scalar;
static bool trans_VQSHL_S_scalar(DisasContext *ctx, arg_VQSHL_S_scalar *a);
typedef arg_shl_scalar arg_VQRSHL_S_scalar;
static bool trans_VQRSHL_S_scalar(DisasContext *ctx, arg_VQRSHL_S_scalar *a);
typedef arg_2scalar arg_VMUL_scalar;
static bool trans_VMUL_scalar(DisasContext *ctx, arg_VMUL_scalar *a);
typedef arg_shl_scalar arg_VSHL_U_scalar;
static bool trans_VSHL_U_scalar(DisasContext *ctx, arg_VSHL_U_scalar *a);
typedef arg_shl_scalar arg_VRSHL_U_scalar;
static bool trans_VRSHL_U_scalar(DisasContext *ctx, arg_VRSHL_U_scalar *a);
typedef arg_shl_scalar arg_VQSHL_U_scalar;
static bool trans_VQSHL_U_scalar(DisasContext *ctx, arg_VQSHL_U_scalar *a);
typedef arg_shl_scalar arg_VQRSHL_U_scalar;
static bool trans_VQRSHL_U_scalar(DisasContext *ctx, arg_VQRSHL_U_scalar *a);
typedef arg_2scalar arg_VBRSR;
static bool trans_VBRSR(DisasContext *ctx, arg_VBRSR *a);
typedef arg_2scalar arg_VADD_fp_scalar;
static bool trans_VADD_fp_scalar(DisasContext *ctx, arg_VADD_fp_scalar *a);
typedef arg_2scalar arg_VHADD_S_scalar;
static bool trans_VHADD_S_scalar(DisasContext *ctx, arg_VHADD_S_scalar *a);
typedef arg_2scalar arg_VHADD_U_scalar;
static bool trans_VHADD_U_scalar(DisasContext *ctx, arg_VHADD_U_scalar *a);
typedef arg_2scalar arg_VSUB_fp_scalar;
static bool trans_VSUB_fp_scalar(DisasContext *ctx, arg_VSUB_fp_scalar *a);
typedef arg_2scalar arg_VHSUB_S_scalar;
static bool trans_VHSUB_S_scalar(DisasContext *ctx, arg_VHSUB_S_scalar *a);
typedef arg_2scalar arg_VHSUB_U_scalar;
static bool trans_VHSUB_U_scalar(DisasContext *ctx, arg_VHSUB_U_scalar *a);
typedef arg_2scalar arg_VQADD_S_scalar;
static bool trans_VQADD_S_scalar(DisasContext *ctx, arg_VQADD_S_scalar *a);
typedef arg_2scalar arg_VQADD_U_scalar;
static bool trans_VQADD_U_scalar(DisasContext *ctx, arg_VQADD_U_scalar *a);
typedef arg_2scalar arg_VQDMULLB_scalar;
static bool trans_VQDMULLB_scalar(DisasContext *ctx, arg_VQDMULLB_scalar *a);
typedef arg_2scalar arg_VQSUB_S_scalar;
static bool trans_VQSUB_S_scalar(DisasContext *ctx, arg_VQSUB_S_scalar *a);
typedef arg_2scalar arg_VQSUB_U_scalar;
static bool trans_VQSUB_U_scalar(DisasContext *ctx, arg_VQSUB_U_scalar *a);
typedef arg_2scalar arg_VQDMULLT_scalar;
static bool trans_VQDMULLT_scalar(DisasContext *ctx, arg_VQDMULLT_scalar *a);
typedef arg_2scalar arg_VMUL_fp_scalar;
static bool trans_VMUL_fp_scalar(DisasContext *ctx, arg_VMUL_fp_scalar *a);
typedef arg_2scalar arg_VQDMULH_scalar;
static bool trans_VQDMULH_scalar(DisasContext *ctx, arg_VQDMULH_scalar *a);
typedef arg_2scalar arg_VQRDMULH_scalar;
static bool trans_VQRDMULH_scalar(DisasContext *ctx, arg_VQRDMULH_scalar *a);
typedef arg_2scalar arg_VFMA_scalar;
static bool trans_VFMA_scalar(DisasContext *ctx, arg_VFMA_scalar *a);
typedef arg_2scalar arg_VMLA;
static bool trans_VMLA(DisasContext *ctx, arg_VMLA *a);
typedef arg_2scalar arg_VFMAS_scalar;
static bool trans_VFMAS_scalar(DisasContext *ctx, arg_VFMAS_scalar *a);
typedef arg_2scalar arg_VMLAS;
static bool trans_VMLAS(DisasContext *ctx, arg_VMLAS *a);
typedef arg_2scalar arg_VQRDMLAH;
static bool trans_VQRDMLAH(DisasContext *ctx, arg_VQRDMLAH *a);
typedef arg_2scalar arg_VQRDMLASH;
static bool trans_VQRDMLASH(DisasContext *ctx, arg_VQRDMLASH *a);
typedef arg_2scalar arg_VQDMLAH;
static bool trans_VQDMLAH(DisasContext *ctx, arg_VQDMLAH *a);
typedef arg_2scalar arg_VQDMLASH;
static bool trans_VQDMLASH(DisasContext *ctx, arg_VQDMLASH *a);
typedef arg_disas_mve20 arg_VADDV;
static bool trans_VADDV(DisasContext *ctx, arg_VADDV *a);
typedef arg_disas_mve21 arg_VADDLV;
static bool trans_VADDLV(DisasContext *ctx, arg_VADDLV *a);
typedef arg_vabav arg_VABAV_S;
static bool trans_VABAV_S(DisasContext *ctx, arg_VABAV_S *a);
typedef arg_vabav arg_VABAV_U;
static bool trans_VABAV_U(DisasContext *ctx, arg_VABAV_U *a);
typedef arg_1imm arg_Vimm_1r;
static bool trans_Vimm_1r(DisasContext *ctx, arg_Vimm_1r *a);
typedef arg_2shift arg_VSHLI;
static bool trans_VSHLI(DisasContext *ctx, arg_VSHLI *a);
typedef arg_2shift arg_VQSHLI_S;
static bool trans_VQSHLI_S(DisasContext *ctx, arg_VQSHLI_S *a);
typedef arg_2shift arg_VQSHLI_U;
static bool trans_VQSHLI_U(DisasContext *ctx, arg_VQSHLI_U *a);
typedef arg_2shift arg_VQSHLUI;
static bool trans_VQSHLUI(DisasContext *ctx, arg_VQSHLUI *a);
typedef arg_2shift arg_VSHRI_S;
static bool trans_VSHRI_S(DisasContext *ctx, arg_VSHRI_S *a);
typedef arg_2shift arg_VSHRI_U;
static bool trans_VSHRI_U(DisasContext *ctx, arg_VSHRI_U *a);
typedef arg_2shift arg_VRSHRI_S;
static bool trans_VRSHRI_S(DisasContext *ctx, arg_VRSHRI_S *a);
typedef arg_2shift arg_VRSHRI_U;
static bool trans_VRSHRI_U(DisasContext *ctx, arg_VRSHRI_U *a);
typedef arg_2shift arg_VSRI;
static bool trans_VSRI(DisasContext *ctx, arg_VSRI *a);
typedef arg_2shift arg_VSLI;
static bool trans_VSLI(DisasContext *ctx, arg_VSLI *a);
typedef arg_2shift arg_VSHRNB;
static bool trans_VSHRNB(DisasContext *ctx, arg_VSHRNB *a);
typedef arg_2shift arg_VSHRNT;
static bool trans_VSHRNT(DisasContext *ctx, arg_VSHRNT *a);
typedef arg_2shift arg_VRSHRNB;
static bool trans_VRSHRNB(DisasContext *ctx, arg_VRSHRNB *a);
typedef arg_2shift arg_VRSHRNT;
static bool trans_VRSHRNT(DisasContext *ctx, arg_VRSHRNT *a);
typedef arg_2shift arg_VQSHRNB_S;
static bool trans_VQSHRNB_S(DisasContext *ctx, arg_VQSHRNB_S *a);
typedef arg_2shift arg_VQSHRNT_S;
static bool trans_VQSHRNT_S(DisasContext *ctx, arg_VQSHRNT_S *a);
typedef arg_2shift arg_VQSHRNB_U;
static bool trans_VQSHRNB_U(DisasContext *ctx, arg_VQSHRNB_U *a);
typedef arg_2shift arg_VQSHRNT_U;
static bool trans_VQSHRNT_U(DisasContext *ctx, arg_VQSHRNT_U *a);
typedef arg_2shift arg_VQSHRUNB;
static bool trans_VQSHRUNB(DisasContext *ctx, arg_VQSHRUNB *a);
typedef arg_2shift arg_VQSHRUNT;
static bool trans_VQSHRUNT(DisasContext *ctx, arg_VQSHRUNT *a);
typedef arg_2shift arg_VQRSHRNB_S;
static bool trans_VQRSHRNB_S(DisasContext *ctx, arg_VQRSHRNB_S *a);
typedef arg_2shift arg_VQRSHRNT_S;
static bool trans_VQRSHRNT_S(DisasContext *ctx, arg_VQRSHRNT_S *a);
typedef arg_2shift arg_VQRSHRNB_U;
static bool trans_VQRSHRNB_U(DisasContext *ctx, arg_VQRSHRNB_U *a);
typedef arg_2shift arg_VQRSHRNT_U;
static bool trans_VQRSHRNT_U(DisasContext *ctx, arg_VQRSHRNT_U *a);
typedef arg_2shift arg_VQRSHRUNB;
static bool trans_VQRSHRUNB(DisasContext *ctx, arg_VQRSHRUNB *a);
typedef arg_2shift arg_VQRSHRUNT;
static bool trans_VQRSHRUNT(DisasContext *ctx, arg_VQRSHRUNT *a);
typedef arg_disas_mve22 arg_VSHLC;
static bool trans_VSHLC(DisasContext *ctx, arg_VSHLC *a);
typedef arg_vcmp arg_VCMPEQ_fp;
static bool trans_VCMPEQ_fp(DisasContext *ctx, arg_VCMPEQ_fp *a);
typedef arg_vcmp arg_VCMPEQ;
static bool trans_VCMPEQ(DisasContext *ctx, arg_VCMPEQ *a);
typedef arg_vcmp arg_VCMPNE_fp;
static bool trans_VCMPNE_fp(DisasContext *ctx, arg_VCMPNE_fp *a);
typedef arg_vcmp arg_VCMPNE;
static bool trans_VCMPNE(DisasContext *ctx, arg_VCMPNE *a);
typedef arg_vcmp arg_VCMPGE_fp;
static bool trans_VCMPGE_fp(DisasContext *ctx, arg_VCMPGE_fp *a);
typedef arg_vcmp arg_VCMPGE;
static bool trans_VCMPGE(DisasContext *ctx, arg_VCMPGE *a);
typedef arg_vcmp arg_VCMPLT_fp;
static bool trans_VCMPLT_fp(DisasContext *ctx, arg_VCMPLT_fp *a);
typedef arg_vcmp arg_VCMPLT;
static bool trans_VCMPLT(DisasContext *ctx, arg_VCMPLT *a);
typedef arg_vcmp arg_VCMPGT_fp;
static bool trans_VCMPGT_fp(DisasContext *ctx, arg_VCMPGT_fp *a);
typedef arg_vcmp arg_VCMPGT;
static bool trans_VCMPGT(DisasContext *ctx, arg_VCMPGT *a);
typedef arg_vcmp arg_VCMPLE_fp;
static bool trans_VCMPLE_fp(DisasContext *ctx, arg_VCMPLE_fp *a);
typedef arg_vcmp arg_VCMPLE;
static bool trans_VCMPLE(DisasContext *ctx, arg_VCMPLE *a);
typedef arg_2op arg_VPSEL;
static bool trans_VPSEL(DisasContext *ctx, arg_VPSEL *a);
typedef arg_vcmp arg_VCMPCS;
static bool trans_VCMPCS(DisasContext *ctx, arg_VCMPCS *a);
typedef arg_vcmp arg_VCMPHI;
static bool trans_VCMPHI(DisasContext *ctx, arg_VCMPHI *a);
typedef arg_disas_mve23 arg_VPNOT;
static bool trans_VPNOT(DisasContext *ctx, arg_VPNOT *a);
typedef arg_disas_mve24 arg_VPST;
static bool trans_VPST(DisasContext *ctx, arg_VPST *a);
typedef arg_vcmp_scalar arg_VCMPEQ_scalar;
static bool trans_VCMPEQ_scalar(DisasContext *ctx, arg_VCMPEQ_scalar *a);
typedef arg_vcmp_scalar arg_VCMPNE_scalar;
static bool trans_VCMPNE_scalar(DisasContext *ctx, arg_VCMPNE_scalar *a);
typedef arg_vcmp_scalar arg_VCMPGT_scalar;
static bool trans_VCMPGT_scalar(DisasContext *ctx, arg_VCMPGT_scalar *a);
typedef arg_vcmp_scalar arg_VCMPLE_scalar;
static bool trans_VCMPLE_scalar(DisasContext *ctx, arg_VCMPLE_scalar *a);
typedef arg_vcmp_scalar arg_VCMPGE_scalar;
static bool trans_VCMPGE_scalar(DisasContext *ctx, arg_VCMPGE_scalar *a);
typedef arg_vcmp_scalar arg_VCMPLT_scalar;
static bool trans_VCMPLT_scalar(DisasContext *ctx, arg_VCMPLT_scalar *a);
typedef arg_vcmp_scalar arg_VCMPCS_scalar;
static bool trans_VCMPCS_scalar(DisasContext *ctx, arg_VCMPCS_scalar *a);
typedef arg_vcmp_scalar arg_VCMPHI_scalar;
static bool trans_VCMPHI_scalar(DisasContext *ctx, arg_VCMPHI_scalar *a);
typedef arg_2op arg_VADD_fp;
static bool trans_VADD_fp(DisasContext *ctx, arg_VADD_fp *a);
typedef arg_2op arg_VSUB_fp;
static bool trans_VSUB_fp(DisasContext *ctx, arg_VSUB_fp *a);
typedef arg_2op arg_VMUL_fp;
static bool trans_VMUL_fp(DisasContext *ctx, arg_VMUL_fp *a);
typedef arg_2op arg_VABD_fp;
static bool trans_VABD_fp(DisasContext *ctx, arg_VABD_fp *a);
typedef arg_2op arg_VMAXNM;
static bool trans_VMAXNM(DisasContext *ctx, arg_VMAXNM *a);
typedef arg_2op arg_VMINNM;
static bool trans_VMINNM(DisasContext *ctx, arg_VMINNM *a);
typedef arg_2op arg_VCADD90_fp;
static bool trans_VCADD90_fp(DisasContext *ctx, arg_VCADD90_fp *a);
typedef arg_2op arg_VCADD270_fp;
static bool trans_VCADD270_fp(DisasContext *ctx, arg_VCADD270_fp *a);
typedef arg_2op arg_VFMA;
static bool trans_VFMA(DisasContext *ctx, arg_VFMA *a);
typedef arg_2op arg_VFMS;
static bool trans_VFMS(DisasContext *ctx, arg_VFMS *a);
typedef arg_2op arg_VCMLA0;
static bool trans_VCMLA0(DisasContext *ctx, arg_VCMLA0 *a);
typedef arg_2op arg_VCMLA90;
static bool trans_VCMLA90(DisasContext *ctx, arg_VCMLA90 *a);
typedef arg_2op arg_VCMLA180;
static bool trans_VCMLA180(DisasContext *ctx, arg_VCMLA180 *a);
typedef arg_2op arg_VCMLA270;
static bool trans_VCMLA270(DisasContext *ctx, arg_VCMLA270 *a);
typedef arg_2shift arg_VCVT_SH_fixed;
static bool trans_VCVT_SH_fixed(DisasContext *ctx, arg_VCVT_SH_fixed *a);
typedef arg_2shift arg_VCVT_UH_fixed;
static bool trans_VCVT_UH_fixed(DisasContext *ctx, arg_VCVT_UH_fixed *a);
typedef arg_2shift arg_VCVT_HS_fixed;
static bool trans_VCVT_HS_fixed(DisasContext *ctx, arg_VCVT_HS_fixed *a);
typedef arg_2shift arg_VCVT_HU_fixed;
static bool trans_VCVT_HU_fixed(DisasContext *ctx, arg_VCVT_HU_fixed *a);
typedef arg_2shift arg_VCVT_SF_fixed;
static bool trans_VCVT_SF_fixed(DisasContext *ctx, arg_VCVT_SF_fixed *a);
typedef arg_2shift arg_VCVT_UF_fixed;
static bool trans_VCVT_UF_fixed(DisasContext *ctx, arg_VCVT_UF_fixed *a);
typedef arg_2shift arg_VCVT_FS_fixed;
static bool trans_VCVT_FS_fixed(DisasContext *ctx, arg_VCVT_FS_fixed *a);
typedef arg_2shift arg_VCVT_FU_fixed;
static bool trans_VCVT_FU_fixed(DisasContext *ctx, arg_VCVT_FU_fixed *a);
typedef arg_1op arg_VCVT_SF;
static bool trans_VCVT_SF(DisasContext *ctx, arg_VCVT_SF *a);
typedef arg_1op arg_VCVT_UF;
static bool trans_VCVT_UF(DisasContext *ctx, arg_VCVT_UF *a);
typedef arg_1op arg_VCVT_FS;
static bool trans_VCVT_FS(DisasContext *ctx, arg_VCVT_FS *a);
typedef arg_1op arg_VCVT_FU;
static bool trans_VCVT_FU(DisasContext *ctx, arg_VCVT_FU *a);
typedef arg_1op arg_VCVTAS;
static bool trans_VCVTAS(DisasContext *ctx, arg_VCVTAS *a);
typedef arg_1op arg_VCVTAU;
static bool trans_VCVTAU(DisasContext *ctx, arg_VCVTAU *a);
typedef arg_1op arg_VCVTNS;
static bool trans_VCVTNS(DisasContext *ctx, arg_VCVTNS *a);
typedef arg_1op arg_VCVTNU;
static bool trans_VCVTNU(DisasContext *ctx, arg_VCVTNU *a);
typedef arg_1op arg_VCVTPS;
static bool trans_VCVTPS(DisasContext *ctx, arg_VCVTPS *a);
typedef arg_1op arg_VCVTPU;
static bool trans_VCVTPU(DisasContext *ctx, arg_VCVTPU *a);
typedef arg_1op arg_VCVTMS;
static bool trans_VCVTMS(DisasContext *ctx, arg_VCVTMS *a);
typedef arg_1op arg_VCVTMU;
static bool trans_VCVTMU(DisasContext *ctx, arg_VCVTMU *a);
typedef arg_1op arg_VRINTN;
static bool trans_VRINTN(DisasContext *ctx, arg_VRINTN *a);
typedef arg_1op arg_VRINTX;
static bool trans_VRINTX(DisasContext *ctx, arg_VRINTX *a);
typedef arg_1op arg_VRINTA;
static bool trans_VRINTA(DisasContext *ctx, arg_VRINTA *a);
typedef arg_1op arg_VRINTZ;
static bool trans_VRINTZ(DisasContext *ctx, arg_VRINTZ *a);
typedef arg_1op arg_VRINTM;
static bool trans_VRINTM(DisasContext *ctx, arg_VRINTM *a);
typedef arg_1op arg_VRINTP;
static bool trans_VRINTP(DisasContext *ctx, arg_VRINTP *a);

static void disas_mve_extract_1imm(DisasContext *ctx, arg_1imm *a, uint32_t insn)
{
    a->op = extract32(insn, 5, 1);
    a->cmode = extract32(insn, 8, 4);
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->imm = deposit32(deposit32(extract32(insn, 0, 4), 4, 28, extract32(insn, 16, 3)), 7, 25, extract32(insn, 28, 1));
}

static void disas_mve_extract_1op(DisasContext *ctx, arg_1op *a, uint32_t insn)
{
    a->size = extract32(insn, 18, 2);
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_1op_nosz(DisasContext *ctx, arg_1op *a, uint32_t insn)
{
    a->size = 0;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2_shl_b(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = extract32(insn, 16, 3);
    a->size = 0;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2_shl_h(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = extract32(insn, 16, 4);
    a->size = 1;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2_shl_w(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = extract32(insn, 16, 5);
    a->size = 2;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2_shll_b(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = extract32(insn, 16, 3);
    a->size = 0;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2_shll_esize_b(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = 8;
    a->size = 0;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2_shll_esize_h(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = 16;
    a->size = 1;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2_shll_h(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = extract32(insn, 16, 4);
    a->size = 1;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2_shr_b(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = rsub_8(ctx, extract32(insn, 16, 3));
    a->size = 0;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2_shr_h(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = rsub_16(ctx, extract32(insn, 16, 4));
    a->size = 1;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2_shr_w(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = rsub_32(ctx, extract32(insn, 16, 5));
    a->size = 2;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2op(DisasContext *ctx, arg_2op *a, uint32_t insn)
{
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->size = extract32(insn, 20, 2);
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2op_fp(DisasContext *ctx, arg_2op *a, uint32_t insn)
{
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->size = neon_3same_fp_size(ctx, extract32(insn, 20, 1));
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2op_fp_scalar(DisasContext *ctx, arg_2scalar *a, uint32_t insn)
{
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->size = neon_3same_fp_size(ctx, extract32(insn, 28, 1));
    a->rm = extract32(insn, 0, 4);
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2op_fp_size_rev(DisasContext *ctx, arg_2op *a, uint32_t insn)
{
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->size = plus_1(ctx, extract32(insn, 20, 1));
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2op_nosz(DisasContext *ctx, arg_2op *a, uint32_t insn)
{
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->size = 0;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2op_rev(DisasContext *ctx, arg_2op *a, uint32_t insn)
{
    a->qn = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->size = extract32(insn, 20, 2);
    a->qm = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2op_sz28(DisasContext *ctx, arg_2op *a, uint32_t insn)
{
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->size = plus_1(ctx, extract32(insn, 28, 1));
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2scalar(DisasContext *ctx, arg_2scalar *a, uint32_t insn)
{
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->size = extract32(insn, 20, 2);
    a->rm = extract32(insn, 0, 4);
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_2scalar_nosz(DisasContext *ctx, arg_2scalar *a, uint32_t insn)
{
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->rm = extract32(insn, 0, 4);
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_disas_mve_Fmt_35(DisasContext *ctx, arg_disas_mve16 *a, uint32_t insn)
{
    a->rt2 = extract32(insn, 16, 4);
    a->rt = extract32(insn, 0, 4);
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->idx = extract32(insn, 4, 1);
}

static void disas_mve_extract_disas_mve_Fmt_43(DisasContext *ctx, arg_disas_mve20 *a, uint32_t insn)
{
    a->u = extract32(insn, 28, 1);
    a->rda = times_2(ctx, extract32(insn, 13, 3));
    a->a = extract32(insn, 5, 1);
    a->size = extract32(insn, 18, 2);
    a->qm = extract32(insn, 1, 3);
}

static void disas_mve_extract_disas_mve_Fmt_44(DisasContext *ctx, arg_disas_mve21 *a, uint32_t insn)
{
    a->u = extract32(insn, 28, 1);
    a->rdalo = times_2(ctx, extract32(insn, 13, 3));
    a->a = extract32(insn, 5, 1);
    a->rdahi = times_2_plus_1(ctx, extract32(insn, 20, 3));
    a->qm = extract32(insn, 1, 3);
}

static void disas_mve_extract_disas_mve_Fmt_46(DisasContext *ctx, arg_disas_mve22 *a, uint32_t insn)
{
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->rdm = extract32(insn, 0, 4);
    a->imm = extract32(insn, 16, 5);
}

static void disas_mve_extract_disas_mve_Fmt_47(DisasContext *ctx, arg_disas_mve23 *a, uint32_t insn)
{
}

static void disas_mve_extract_disas_mve_Fmt_48(DisasContext *ctx, arg_disas_mve24 *a, uint32_t insn)
{
    a->mask = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_shl_scalar(DisasContext *ctx, arg_shl_scalar *a, uint32_t insn)
{
    a->qda = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->size = extract32(insn, 18, 2);
    a->rm = extract32(insn, 0, 4);
}

static void disas_mve_extract_vabav(DisasContext *ctx, arg_vabav *a, uint32_t insn)
{
    a->rda = extract32(insn, 12, 4);
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->size = extract32(insn, 20, 2);
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
}

static void disas_mve_extract_vcmp(DisasContext *ctx, arg_vcmp *a, uint32_t insn)
{
    a->qn = extract32(insn, 17, 3);
    a->mask = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->size = extract32(insn, 20, 2);
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
}

static void disas_mve_extract_vcmp_fp(DisasContext *ctx, arg_vcmp *a, uint32_t insn)
{
    a->qn = extract32(insn, 17, 3);
    a->mask = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->size = neon_3same_fp_size(ctx, extract32(insn, 28, 1));
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
}

static void disas_mve_extract_vcmp_fp_scalar(DisasContext *ctx, arg_vcmp_scalar *a, uint32_t insn)
{
    a->qn = extract32(insn, 17, 3);
    a->mask = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->rm = extract32(insn, 0, 4);
}

static void disas_mve_extract_vcmp_scalar(DisasContext *ctx, arg_vcmp_scalar *a, uint32_t insn)
{
    a->qn = extract32(insn, 17, 3);
    a->mask = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->size = extract32(insn, 20, 2);
    a->rm = extract32(insn, 0, 4);
}

static void disas_mve_extract_vcvt(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = rsub_32(ctx, extract32(insn, 16, 5));
    a->size = 2;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_vcvt_f16(DisasContext *ctx, arg_2shift *a, uint32_t insn)
{
    a->shift = rsub_16(ctx, extract32(insn, 16, 4));
    a->size = 1;
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_vdup(DisasContext *ctx, arg_vdup *a, uint32_t insn)
{
    a->rt = extract32(insn, 12, 4);
    a->qd = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
}

static void disas_mve_extract_vidup(DisasContext *ctx, arg_vidup *a, uint32_t insn)
{
    a->rn = times_2(ctx, extract32(insn, 17, 3));
    a->size = extract32(insn, 20, 2);
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->imm = vidup_imm(ctx, deposit32(extract32(insn, 0, 1), 1, 31, extract32(insn, 7, 1)));
}

static void disas_mve_extract_viwdup(DisasContext *ctx, arg_viwdup *a, uint32_t insn)
{
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->imm = vidup_imm(ctx, deposit32(extract32(insn, 0, 1), 1, 31, extract32(insn, 7, 1)));
    a->rn = times_2(ctx, extract32(insn, 17, 3));
    a->rm = times_2_plus_1(ctx, extract32(insn, 1, 3));
    a->size = extract32(insn, 20, 2);
}

static void disas_mve_extract_vldr_vstr(DisasContext *ctx, arg_vldr_vstr *a, uint32_t insn)
{
    a->u = 0;
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->imm = extract32(insn, 0, 7);
    a->rn = extract32(insn, 16, 4);
    a->l = extract32(insn, 20, 1);
}

static void disas_mve_extract_vldst_il(DisasContext *ctx, arg_vldst_il *a, uint32_t insn)
{
    a->pat = extract32(insn, 5, 2);
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->rn = extract32(insn, 16, 4);
    a->w = extract32(insn, 21, 1);
    a->size = extract32(insn, 7, 2);
}

static void disas_mve_extract_vldst_sg(DisasContext *ctx, arg_vldst_sg *a, uint32_t insn)
{
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->os = extract32(insn, 0, 1);
    a->msize = deposit32(extract32(insn, 4, 1), 1, 31, extract32(insn, 6, 1));
    a->rn = extract32(insn, 16, 4);
    a->size = extract32(insn, 7, 2);
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
}

static void disas_mve_extract_vldst_sg_imm(DisasContext *ctx, arg_vldst_sg_imm *a, uint32_t insn)
{
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->imm = extract32(insn, 0, 7);
    a->a = extract32(insn, 23, 1);
    a->w = extract32(insn, 21, 1);
    a->qm = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
}

static void disas_mve_extract_vldst_wn(DisasContext *ctx, arg_vldr_vstr *a, uint32_t insn)
{
    a->u = extract32(insn, 28, 1);
    a->qd = extract32(insn, 13, 3);
    a->imm = extract32(insn, 0, 7);
    a->rn = extract32(insn, 16, 3);
    a->l = extract32(insn, 20, 1);
}

static void disas_mve_extract_vmaxnma(DisasContext *ctx, arg_2op *a, uint32_t insn)
{
    a->qn = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
    a->qd = deposit32(extract32(insn, 13, 3), 3, 29, extract32(insn, 22, 1));
}

static void disas_mve_extract_vmaxnmv(DisasContext *ctx, arg_vmaxv *a, uint32_t insn)
{
    a->rda = extract32(insn, 12, 4);
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
}

static void disas_mve_extract_vmaxv(DisasContext *ctx, arg_vmaxv *a, uint32_t insn)
{
    a->rda = extract32(insn, 12, 4);
    a->size = extract32(insn, 18, 2);
    a->qm = deposit32(extract32(insn, 1, 3), 3, 29, extract32(insn, 5, 1));
}

static void disas_mve_extract_vmladav(DisasContext *ctx, arg_vmladav *a, uint32_t insn)
{
    a->x = extract32(insn, 12, 1);
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->rda = times_2(ctx, extract32(insn, 13, 3));
    a->a = extract32(insn, 5, 1);
    a->size = plus_1(ctx, extract32(insn, 16, 1));
    a->qm = extract32(insn, 1, 3);
}

static void disas_mve_extract_vmladav_nosz(DisasContext *ctx, arg_vmladav *a, uint32_t insn)
{
    a->x = extract32(insn, 12, 1);
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->rda = times_2(ctx, extract32(insn, 13, 3));
    a->a = extract32(insn, 5, 1);
    a->size = 0;
    a->qm = extract32(insn, 1, 3);
}

static void disas_mve_extract_vmlaldav(DisasContext *ctx, arg_vmlaldav *a, uint32_t insn)
{
    a->x = extract32(insn, 12, 1);
    a->rdalo = times_2(ctx, extract32(insn, 13, 3));
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->a = extract32(insn, 5, 1);
    a->rdahi = times_2_plus_1(ctx, extract32(insn, 20, 3));
    a->size = plus_1(ctx, extract32(insn, 16, 1));
    a->qm = extract32(insn, 1, 3);
}

static void disas_mve_extract_vmlaldav_nosz(DisasContext *ctx, arg_vmlaldav *a, uint32_t insn)
{
    a->x = extract32(insn, 12, 1);
    a->rdalo = times_2(ctx, extract32(insn, 13, 3));
    a->qn = deposit32(extract32(insn, 17, 3), 3, 29, extract32(insn, 7, 1));
    a->a = extract32(insn, 5, 1);
    a->rdahi = times_2_plus_1(ctx, extract32(insn, 20, 3));
    a->size = 0;
    a->qm = extract32(insn, 1, 3);
}

bool disas_mve(DisasContext *ctx, uint32_t insn)
{
    union {
        arg_1imm f_1imm;
        arg_1op f_1op;
        arg_2op f_2op;
        arg_2scalar f_2scalar;
        arg_2shift f_2shift;
        arg_disas_mve16 f_disas_mve16;
        arg_disas_mve20 f_disas_mve20;
        arg_disas_mve21 f_disas_mve21;
        arg_disas_mve22 f_disas_mve22;
        arg_disas_mve23 f_disas_mve23;
        arg_disas_mve24 f_disas_mve24;
        arg_shl_scalar f_shl_scalar;
        arg_vabav f_vabav;
        arg_vcmp f_vcmp;
        arg_vcmp_scalar f_vcmp_scalar;
        arg_vdup f_vdup;
        arg_vidup f_vidup;
        arg_viwdup f_viwdup;
        arg_vldr_vstr f_vldr_vstr;
        arg_vldst_il f_vldst_il;
        arg_vldst_sg f_vldst_sg;
        arg_vldst_sg_imm f_vldst_sg_imm;
        arg_vmaxv f_vmaxv;
        arg_vmladav f_vmladav;
        arg_vmlaldav f_vmlaldav;
    } u;

    switch (insn & 0xef000000u) {
    case 0xec000000u:
        /* 111.1100 ........ ........ ........ */
        switch ((insn >> 9) & 0xf) {
        case 0x4:
            /* 111.1100 ........ ...0100. ........ */
            disas_mve_extract_2op_fp_size_rev(ctx, &u.f_2op, insn);
            switch (insn & 0x10a10151) {
            case 0x10200040:
                /* 11111100 0.1....0 ...01000 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:786 */
                if (trans_VCMLA0(ctx, &u.f_2op)) return true;
                break;
            case 0x10800040:
                /* 11111100 1.0....0 ...01000 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:780 */
                if (trans_VCADD90_fp(ctx, &u.f_2op)) return true;
                break;
            case 0x10a00040:
                /* 11111100 1.1....0 ...01000 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:787 */
                if (trans_VCMLA90(ctx, &u.f_2op)) return true;
                break;
            }
            break;
        case 0x7:
            /* 111.1100 ........ ...0111. ........ */
            switch ((insn >> 21) & 0x1) {
            case 0x0:
                /* 111.1100 ..0..... ...0111. ........ */
                switch (insn & 0x10900000) {
                case 0x00000000:
                    /* 11101100 0.00.... ...0111. ........ */
                    disas_mve_extract_disas_mve_Fmt_35(ctx, &u.f_disas_mve16, insn);
                    switch ((insn >> 5) & 0xf) {
                    case 0x8:
                        /* 11101100 0.00.... ...01111 000..... */
                        /* ../git/target/arm/tcg/mve.decode:207 */
                        if (trans_VMOV_to_2gp(ctx, &u.f_disas_mve16)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11101100 0.01.... ...0111. ........ */
                    disas_mve_extract_disas_mve_Fmt_35(ctx, &u.f_disas_mve16, insn);
                    switch ((insn >> 5) & 0xf) {
                    case 0x8:
                        /* 11101100 0.01.... ...01111 000..... */
                        /* ../git/target/arm/tcg/mve.decode:208 */
                        if (trans_VMOV_from_2gp(ctx, &u.f_disas_mve16)) return true;
                        break;
                    }
                    break;
                case 0x00800000:
                    /* 11101100 1.00.... ...0111. ........ */
                    /* ../git/target/arm/tcg/mve.decode:193 */
                    disas_mve_extract_vldst_sg(ctx, &u.f_vldst_sg, insn);
                    if (trans_VSTR_sg(ctx, &u.f_vldst_sg)) return true;
                    break;
                case 0x00900000:
                    /* 11101100 1.01.... ...0111. ........ */
                    /* ../git/target/arm/tcg/mve.decode:191 */
                    disas_mve_extract_vldst_sg(ctx, &u.f_vldst_sg, insn);
                    if (trans_VLDR_S_sg(ctx, &u.f_vldst_sg)) return true;
                    break;
                case 0x10900000:
                    /* 11111100 1.01.... ...0111. ........ */
                    /* ../git/target/arm/tcg/mve.decode:192 */
                    disas_mve_extract_vldst_sg(ctx, &u.f_vldst_sg, insn);
                    if (trans_VLDR_U_sg(ctx, &u.f_vldst_sg)) return true;
                    break;
                }
                break;
            case 0x1:
                /* 111.1100 ..1..... ...0111. ........ */
                disas_mve_extract_vldst_wn(ctx, &u.f_vldr_vstr, insn);
                switch (insn & 0x00480180) {
                case 0x00000080:
                    /* 111.1100 .01.0... ...01110 1....... */
                    /* ../git/target/arm/tcg/mve.decode:163 */
                    u.f_vldr_vstr.p = 0;
                    u.f_vldr_vstr.a = extract32(insn, 23, 1);
                    u.f_vldr_vstr.size = 1;
                    u.f_vldr_vstr.w = 1;
                    if (trans_VLDSTB_H(ctx, &u.f_vldr_vstr)) return true;
                    break;
                case 0x00000100:
                    /* 111.1100 .01.0... ...01111 0....... */
                    /* ../git/target/arm/tcg/mve.decode:167 */
                    u.f_vldr_vstr.p = 0;
                    u.f_vldr_vstr.a = extract32(insn, 23, 1);
                    u.f_vldr_vstr.size = 2;
                    u.f_vldr_vstr.w = 1;
                    if (trans_VLDSTB_W(ctx, &u.f_vldr_vstr)) return true;
                    break;
                case 0x00080100:
                    /* 111.1100 .01.1... ...01111 0....... */
                    /* ../git/target/arm/tcg/mve.decode:171 */
                    u.f_vldr_vstr.p = 0;
                    u.f_vldr_vstr.a = extract32(insn, 23, 1);
                    u.f_vldr_vstr.size = 2;
                    u.f_vldr_vstr.w = 1;
                    if (trans_VLDSTH_W(ctx, &u.f_vldr_vstr)) return true;
                    break;
                }
                break;
            }
            break;
        case 0xf:
            /* 111.1100 ........ ...1111. ........ */
            switch ((insn >> 28) & 0x1) {
            case 0x0:
                /* 11101100 ........ ...1111. ........ */
                disas_mve_extract_vldr_vstr(ctx, &u.f_vldr_vstr, insn);
                switch (insn & 0x00200180) {
                case 0x00200000:
                    /* 11101100 ..1..... ...11110 0....... */
                    /* ../git/target/arm/tcg/mve.decode:177 */
                    u.f_vldr_vstr.p = 0;
                    u.f_vldr_vstr.a = extract32(insn, 23, 1);
                    u.f_vldr_vstr.size = 0;
                    u.f_vldr_vstr.w = 1;
                    if (trans_VLDR_VSTR(ctx, &u.f_vldr_vstr)) return true;
                    break;
                case 0x00200080:
                    /* 11101100 ..1..... ...11110 1....... */
                    /* ../git/target/arm/tcg/mve.decode:179 */
                    u.f_vldr_vstr.p = 0;
                    u.f_vldr_vstr.a = extract32(insn, 23, 1);
                    u.f_vldr_vstr.size = 1;
                    u.f_vldr_vstr.w = 1;
                    if (trans_VLDR_VSTR(ctx, &u.f_vldr_vstr)) return true;
                    break;
                case 0x00200100:
                    /* 11101100 ..1..... ...11111 0....... */
                    /* ../git/target/arm/tcg/mve.decode:181 */
                    u.f_vldr_vstr.p = 0;
                    u.f_vldr_vstr.a = extract32(insn, 23, 1);
                    u.f_vldr_vstr.size = 2;
                    u.f_vldr_vstr.w = 1;
                    if (trans_VLDR_VSTR(ctx, &u.f_vldr_vstr)) return true;
                    break;
                }
                break;
            case 0x1:
                /* 11111100 ........ ...1111. ........ */
                disas_mve_extract_vldst_il(ctx, &u.f_vldst_il, insn);
                switch (insn & 0x0090001f) {
                case 0x00800000:
                    /* 11111100 1..0.... ...1111. ...00000 */
                    /* ../git/target/arm/tcg/mve.decode:203 */
                    if (trans_VST2(ctx, &u.f_vldst_il)) return true;
                    break;
                case 0x00800001:
                    /* 11111100 1..0.... ...1111. ...00001 */
                    /* ../git/target/arm/tcg/mve.decode:204 */
                    if (trans_VST4(ctx, &u.f_vldst_il)) return true;
                    break;
                case 0x00900000:
                    /* 11111100 1..1.... ...1111. ...00000 */
                    /* ../git/target/arm/tcg/mve.decode:201 */
                    if (trans_VLD2(ctx, &u.f_vldst_il)) return true;
                    break;
                case 0x00900001:
                    /* 11111100 1..1.... ...1111. ...00001 */
                    /* ../git/target/arm/tcg/mve.decode:202 */
                    if (trans_VLD4(ctx, &u.f_vldst_il)) return true;
                    break;
                }
                break;
            }
            break;
        }
        break;
    case 0xed000000u:
        /* 111.1101 ........ ........ ........ */
        switch ((insn >> 8) & 0x1f) {
        case 0x8:
            /* 111.1101 ........ ...01000 ........ */
            disas_mve_extract_2op_fp_size_rev(ctx, &u.f_2op, insn);
            switch (insn & 0x10a10051) {
            case 0x10200040:
                /* 11111101 0.1....0 ...01000 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:788 */
                if (trans_VCMLA180(ctx, &u.f_2op)) return true;
                break;
            case 0x10800040:
                /* 11111101 1.0....0 ...01000 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:781 */
                if (trans_VCADD270_fp(ctx, &u.f_2op)) return true;
                break;
            case 0x10a00040:
                /* 11111101 1.1....0 ...01000 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:789 */
                if (trans_VCMLA270(ctx, &u.f_2op)) return true;
                break;
            }
            break;
        case 0xe:
            /* 111.1101 ........ ...01110 ........ */
            disas_mve_extract_vldst_wn(ctx, &u.f_vldr_vstr, insn);
            switch (insn & 0x00480080) {
            case 0x00000080:
                /* 111.1101 .0..0... ...01110 1....... */
                /* ../git/target/arm/tcg/mve.decode:165 */
                u.f_vldr_vstr.p = 1;
                u.f_vldr_vstr.a = extract32(insn, 23, 1);
                u.f_vldr_vstr.size = 1;
                u.f_vldr_vstr.w = extract32(insn, 21, 1);
                if (trans_VLDSTB_H(ctx, &u.f_vldr_vstr)) return true;
                break;
            }
            break;
        case 0xf:
            /* 111.1101 ........ ...01111 ........ */
            disas_mve_extract_vldst_wn(ctx, &u.f_vldr_vstr, insn);
            switch (insn & 0x00480080) {
            case 0x00000000:
                /* 111.1101 .0..0... ...01111 0....... */
                /* ../git/target/arm/tcg/mve.decode:169 */
                u.f_vldr_vstr.p = 1;
                u.f_vldr_vstr.a = extract32(insn, 23, 1);
                u.f_vldr_vstr.size = 2;
                u.f_vldr_vstr.w = extract32(insn, 21, 1);
                if (trans_VLDSTB_W(ctx, &u.f_vldr_vstr)) return true;
                break;
            case 0x00080000:
                /* 111.1101 .0..1... ...01111 0....... */
                /* ../git/target/arm/tcg/mve.decode:173 */
                u.f_vldr_vstr.p = 1;
                u.f_vldr_vstr.a = extract32(insn, 23, 1);
                u.f_vldr_vstr.size = 2;
                u.f_vldr_vstr.w = extract32(insn, 21, 1);
                if (trans_VLDSTH_W(ctx, &u.f_vldr_vstr)) return true;
                break;
            }
            break;
        case 0x1e:
            /* 111.1101 ........ ...11110 ........ */
            switch ((insn >> 28) & 0x1) {
            case 0x0:
                /* 11101101 ........ ...11110 ........ */
                disas_mve_extract_vldr_vstr(ctx, &u.f_vldr_vstr, insn);
                switch ((insn >> 7) & 0x1) {
                case 0x0:
                    /* 11101101 ........ ...11110 0....... */
                    /* ../git/target/arm/tcg/mve.decode:183 */
                    u.f_vldr_vstr.p = 1;
                    u.f_vldr_vstr.a = extract32(insn, 23, 1);
                    u.f_vldr_vstr.size = 0;
                    u.f_vldr_vstr.w = extract32(insn, 21, 1);
                    if (trans_VLDR_VSTR(ctx, &u.f_vldr_vstr)) return true;
                    break;
                case 0x1:
                    /* 11101101 ........ ...11110 1....... */
                    /* ../git/target/arm/tcg/mve.decode:185 */
                    u.f_vldr_vstr.p = 1;
                    u.f_vldr_vstr.a = extract32(insn, 23, 1);
                    u.f_vldr_vstr.size = 1;
                    u.f_vldr_vstr.w = extract32(insn, 21, 1);
                    if (trans_VLDR_VSTR(ctx, &u.f_vldr_vstr)) return true;
                    break;
                }
                break;
            case 0x1:
                /* 11111101 ........ ...11110 ........ */
                disas_mve_extract_vldst_sg_imm(ctx, &u.f_vldst_sg_imm, insn);
                switch (insn & 0x00110000) {
                case 0x00000000:
                    /* 11111101 ...0...0 ...11110 ........ */
                    /* ../git/target/arm/tcg/mve.decode:197 */
                    if (trans_VSTRW_sg_imm(ctx, &u.f_vldst_sg_imm)) return true;
                    break;
                case 0x00100000:
                    /* 11111101 ...1...0 ...11110 ........ */
                    /* ../git/target/arm/tcg/mve.decode:195 */
                    if (trans_VLDRW_sg_imm(ctx, &u.f_vldst_sg_imm)) return true;
                    break;
                }
                break;
            }
            break;
        case 0x1f:
            /* 111.1101 ........ ...11111 ........ */
            switch ((insn >> 28) & 0x1) {
            case 0x0:
                /* 11101101 ........ ...11111 ........ */
                disas_mve_extract_vldr_vstr(ctx, &u.f_vldr_vstr, insn);
                switch ((insn >> 7) & 0x1) {
                case 0x0:
                    /* 11101101 ........ ...11111 0....... */
                    /* ../git/target/arm/tcg/mve.decode:187 */
                    u.f_vldr_vstr.p = 1;
                    u.f_vldr_vstr.a = extract32(insn, 23, 1);
                    u.f_vldr_vstr.size = 2;
                    u.f_vldr_vstr.w = extract32(insn, 21, 1);
                    if (trans_VLDR_VSTR(ctx, &u.f_vldr_vstr)) return true;
                    break;
                }
                break;
            case 0x1:
                /* 11111101 ........ ...11111 ........ */
                disas_mve_extract_vldst_sg_imm(ctx, &u.f_vldst_sg_imm, insn);
                switch (insn & 0x00110000) {
                case 0x00000000:
                    /* 11111101 ...0...0 ...11111 ........ */
                    /* ../git/target/arm/tcg/mve.decode:198 */
                    if (trans_VSTRD_sg_imm(ctx, &u.f_vldst_sg_imm)) return true;
                    break;
                case 0x00100000:
                    /* 11111101 ...1...0 ...11111 ........ */
                    /* ../git/target/arm/tcg/mve.decode:196 */
                    if (trans_VLDRD_sg_imm(ctx, &u.f_vldst_sg_imm)) return true;
                    break;
                }
                break;
            }
            break;
        }
        break;
    case 0xee000000u:
        /* 111.1110 ........ ........ ........ */
        switch (insn & 0x00800f50) {
        case 0x00000e00:
            /* 111.1110 0....... ....1110 .0.0.... */
            switch (insn & 0x00011001) {
            case 0x00000000:
                /* 111.1110 0......0 ...01110 .0.0...0 */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...0 ...01110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:326 */
                    disas_mve_extract_2op_sz28(ctx, &u.f_2op, insn);
                    if (trans_VCMUL0(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......0 ...01110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:327 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VQDMLADH(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......0 ...01110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:328 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VQDMLSDH(ctx, &u.f_2op)) return true;
                }
                break;
            case 0x00000001:
                /* 111.1110 0......0 ...01110 .0.0...1 */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...0 ...01110 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:338 */
                    disas_mve_extract_2op_sz28(ctx, &u.f_2op, insn);
                    if (trans_VCMUL90(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......0 ...01110 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:339 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VQRDMLADH(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......0 ...01110 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:340 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VQRDMLSDH(ctx, &u.f_2op)) return true;
                }
                break;
            case 0x00001000:
                /* 111.1110 0......0 ...11110 .0.0...0 */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...0 ...11110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:332 */
                    disas_mve_extract_2op_sz28(ctx, &u.f_2op, insn);
                    if (trans_VCMUL180(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......0 ...11110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:333 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VQDMLADHX(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......0 ...11110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:334 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VQDMLSDHX(ctx, &u.f_2op)) return true;
                }
                break;
            case 0x00001001:
                /* 111.1110 0......0 ...11110 .0.0...1 */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...0 ...11110 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:344 */
                    disas_mve_extract_2op_sz28(ctx, &u.f_2op, insn);
                    if (trans_VCMUL270(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......0 ...11110 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:345 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VQRDMLADHX(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......0 ...11110 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:346 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VQRDMLSDHX(ctx, &u.f_2op)) return true;
                }
                break;
            case 0x00010000:
                /* 111.1110 0......1 ...01110 .0.0...0 */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...1 ...01110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:295 */
                    disas_mve_extract_2op_sz28(ctx, &u.f_2op, insn);
                    if (trans_VMULLP_B(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......1 ...01110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:296 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VMULL_BS(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......1 ...01110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:297 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VMULL_BU(ctx, &u.f_2op)) return true;
                }
                break;
            case 0x00010001:
                /* 111.1110 0......1 ...01110 .0.0...1 */
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......1 ...01110 .0.0...1 */
                    if ((insn & 0x003e0080) == 0x003e0000) {
                        /* 11101110 0.111111 ...01110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:224 */
                        disas_mve_extract_1op_nosz(ctx, &u.f_1op, insn);
                        if (trans_VCVTB_SH(ctx, &u.f_1op)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x003e0080) {
                        /* 11101110 0.111111 ...01110 10.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:226 */
                        disas_mve_extract_vmaxnma(ctx, &u.f_2op, insn);
                        u.f_2op.size = 2;
                        if (trans_VMAXNMA(ctx, &u.f_2op)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x00300000) {
                        /* 11101110 0.110001 ...01110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:228 */
                        disas_mve_extract_2_shll_esize_b(ctx, &u.f_2shift, insn);
                        if (trans_VSHLL_BS(ctx, &u.f_2shift)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x00340000) {
                        /* 11101110 0.110101 ...01110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:229 */
                        disas_mve_extract_2_shll_esize_h(ctx, &u.f_2shift, insn);
                        if (trans_VSHLL_BS(ctx, &u.f_2shift)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00300080) {
                        /* 11101110 0.11..01 ...01110 10.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:231 */
                        disas_mve_extract_1op(ctx, &u.f_1op, insn);
                        if (trans_VQMOVUNB(ctx, &u.f_1op)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00320000) {
                        /* 11101110 0.11..11 ...01110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:232 */
                        disas_mve_extract_1op(ctx, &u.f_1op, insn);
                        if (trans_VQMOVN_BS(ctx, &u.f_1op)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00320080) {
                        /* 11101110 0.11..11 ...01110 10.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:234 */
                        disas_mve_extract_1op(ctx, &u.f_1op, insn);
                        if (trans_VMAXA(ctx, &u.f_1op)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:236 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VMULH_S(ctx, &u.f_2op)) return true;
                    break;
                case 0x1:
                    /* 11111110 0......1 ...01110 .0.0...1 */
                    if ((insn & 0x003e0080) == 0x003e0000) {
                        /* 11111110 0.111111 ...01110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:240 */
                        disas_mve_extract_1op_nosz(ctx, &u.f_1op, insn);
                        if (trans_VCVTB_HS(ctx, &u.f_1op)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x003e0080) {
                        /* 11111110 0.111111 ...01110 10.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:242 */
                        disas_mve_extract_vmaxnma(ctx, &u.f_2op, insn);
                        u.f_2op.size = 1;
                        if (trans_VMAXNMA(ctx, &u.f_2op)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x00300000) {
                        /* 11111110 0.110001 ...01110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:244 */
                        disas_mve_extract_2_shll_esize_b(ctx, &u.f_2shift, insn);
                        if (trans_VSHLL_BU(ctx, &u.f_2shift)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x00340000) {
                        /* 11111110 0.110101 ...01110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:245 */
                        disas_mve_extract_2_shll_esize_h(ctx, &u.f_2shift, insn);
                        if (trans_VSHLL_BU(ctx, &u.f_2shift)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00300080) {
                        /* 11111110 0.11..01 ...01110 10.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:247 */
                        disas_mve_extract_1op(ctx, &u.f_1op, insn);
                        if (trans_VMOVNB(ctx, &u.f_1op)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00320000) {
                        /* 11111110 0.11..11 ...01110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:248 */
                        disas_mve_extract_1op(ctx, &u.f_1op, insn);
                        if (trans_VQMOVN_BU(ctx, &u.f_1op)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:250 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VMULH_U(ctx, &u.f_2op)) return true;
                    break;
                }
                break;
            case 0x00011000:
                /* 111.1110 0......1 ...11110 .0.0...0 */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...1 ...11110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:300 */
                    disas_mve_extract_2op_sz28(ctx, &u.f_2op, insn);
                    if (trans_VMULLP_T(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......1 ...11110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:301 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VMULL_TS(ctx, &u.f_2op)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......1 ...11110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:302 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VMULL_TU(ctx, &u.f_2op)) return true;
                }
                break;
            case 0x00011001:
                /* 111.1110 0......1 ...11110 .0.0...1 */
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......1 ...11110 .0.0...1 */
                    if ((insn & 0x003e0080) == 0x003e0000) {
                        /* 11101110 0.111111 ...11110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:254 */
                        disas_mve_extract_1op_nosz(ctx, &u.f_1op, insn);
                        if (trans_VCVTT_SH(ctx, &u.f_1op)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x003e0080) {
                        /* 11101110 0.111111 ...11110 10.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:256 */
                        disas_mve_extract_vmaxnma(ctx, &u.f_2op, insn);
                        u.f_2op.size = 2;
                        if (trans_VMINNMA(ctx, &u.f_2op)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x00300000) {
                        /* 11101110 0.110001 ...11110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:257 */
                        disas_mve_extract_2_shll_esize_b(ctx, &u.f_2shift, insn);
                        if (trans_VSHLL_TS(ctx, &u.f_2shift)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x00340000) {
                        /* 11101110 0.110101 ...11110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:258 */
                        disas_mve_extract_2_shll_esize_h(ctx, &u.f_2shift, insn);
                        if (trans_VSHLL_TS(ctx, &u.f_2shift)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00300080) {
                        /* 11101110 0.11..01 ...11110 10.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:260 */
                        disas_mve_extract_1op(ctx, &u.f_1op, insn);
                        if (trans_VQMOVUNT(ctx, &u.f_1op)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00320000) {
                        /* 11101110 0.11..11 ...11110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:261 */
                        disas_mve_extract_1op(ctx, &u.f_1op, insn);
                        if (trans_VQMOVN_TS(ctx, &u.f_1op)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00320080) {
                        /* 11101110 0.11..11 ...11110 10.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:263 */
                        disas_mve_extract_1op(ctx, &u.f_1op, insn);
                        if (trans_VMINA(ctx, &u.f_1op)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:265 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VRMULH_S(ctx, &u.f_2op)) return true;
                    break;
                case 0x1:
                    /* 11111110 0......1 ...11110 .0.0...1 */
                    if ((insn & 0x003e0080) == 0x003e0000) {
                        /* 11111110 0.111111 ...11110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:269 */
                        disas_mve_extract_1op_nosz(ctx, &u.f_1op, insn);
                        if (trans_VCVTT_HS(ctx, &u.f_1op)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x003e0080) {
                        /* 11111110 0.111111 ...11110 10.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:271 */
                        disas_mve_extract_vmaxnma(ctx, &u.f_2op, insn);
                        u.f_2op.size = 1;
                        if (trans_VMINNMA(ctx, &u.f_2op)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x00300000) {
                        /* 11111110 0.110001 ...11110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:272 */
                        disas_mve_extract_2_shll_esize_b(ctx, &u.f_2shift, insn);
                        if (trans_VSHLL_TU(ctx, &u.f_2shift)) return true;
                    }
                    if ((insn & 0x003e0080) == 0x00340000) {
                        /* 11111110 0.110101 ...11110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:273 */
                        disas_mve_extract_2_shll_esize_h(ctx, &u.f_2shift, insn);
                        if (trans_VSHLL_TU(ctx, &u.f_2shift)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00300080) {
                        /* 11111110 0.11..01 ...11110 10.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:275 */
                        disas_mve_extract_1op(ctx, &u.f_1op, insn);
                        if (trans_VMOVNT(ctx, &u.f_1op)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00320000) {
                        /* 11111110 0.11..11 ...11110 00.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:276 */
                        disas_mve_extract_1op(ctx, &u.f_1op, insn);
                        if (trans_VQMOVN_TU(ctx, &u.f_1op)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:278 */
                    disas_mve_extract_2op(ctx, &u.f_2op, insn);
                    if (trans_VRMULH_U(ctx, &u.f_2op)) return true;
                    break;
                }
                break;
            }
            break;
        case 0x00000e40:
            /* 111.1110 0....... ....1110 .1.0.... */
            switch (insn & 0x00011020) {
            case 0x00000000:
                /* 111.1110 0......0 ...01110 .100.... */
                disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......0 ...01110 .100.... */
                    /* ../git/target/arm/tcg/mve.decode:570 */
                    if (trans_VQRDMLAH(ctx, &u.f_2scalar)) return true;
                    break;
                }
                break;
            case 0x00000020:
                /* 111.1110 0......0 ...01110 .110.... */
                disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......0 ...01110 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:572 */
                    if (trans_VQDMLAH(ctx, &u.f_2scalar)) return true;
                    break;
                }
                break;
            case 0x00001000:
                /* 111.1110 0......0 ...11110 .100.... */
                disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......0 ...11110 .100.... */
                    /* ../git/target/arm/tcg/mve.decode:571 */
                    if (trans_VQRDMLASH(ctx, &u.f_2scalar)) return true;
                    break;
                }
                break;
            case 0x00001020:
                /* 111.1110 0......0 ...11110 .110.... */
                disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......0 ...11110 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:573 */
                    if (trans_VQDMLASH(ctx, &u.f_2scalar)) return true;
                    break;
                }
                break;
            case 0x00010000:
                /* 111.1110 0......1 ...01110 .100.... */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...1 ...01110 .100.... */
                    /* ../git/target/arm/tcg/mve.decode:559 */
                    disas_mve_extract_2op_fp_scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VFMA_scalar(ctx, &u.f_2scalar)) return true;
                }
                /* ../git/target/arm/tcg/mve.decode:561 */
                disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                if (trans_VMLA(ctx, &u.f_2scalar)) return true;
                break;
            case 0x00010020:
                /* 111.1110 0......1 ...01110 .110.... */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...1 ...01110 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:553 */
                    disas_mve_extract_2op_fp_scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VMUL_fp_scalar(ctx, &u.f_2scalar)) return true;
                }
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......1 ...01110 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:554 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VQDMULH_scalar(ctx, &u.f_2scalar)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......1 ...01110 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:555 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VQRDMULH_scalar(ctx, &u.f_2scalar)) return true;
                }
                break;
            case 0x00011000:
                /* 111.1110 0......1 ...11110 .100.... */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...1 ...11110 .100.... */
                    /* ../git/target/arm/tcg/mve.decode:565 */
                    disas_mve_extract_2op_fp_scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VFMAS_scalar(ctx, &u.f_2scalar)) return true;
                }
                /* ../git/target/arm/tcg/mve.decode:567 */
                disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                if (trans_VMLAS(ctx, &u.f_2scalar)) return true;
                break;
            case 0x00011020:
                /* 111.1110 0......1 ...11110 .110.... */
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......1 ...11110 .110.... */
                    if ((insn & 0x00320080) == 0x00300000) {
                        /* 11101110 0.11..01 ...11110 0110.... */
                        /* ../git/target/arm/tcg/mve.decode:511 */
                        disas_mve_extract_shl_scalar(ctx, &u.f_shl_scalar, insn);
                        if (trans_VSHL_S_scalar(ctx, &u.f_shl_scalar)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00320000) {
                        /* 11101110 0.11..11 ...11110 0110.... */
                        /* ../git/target/arm/tcg/mve.decode:512 */
                        disas_mve_extract_shl_scalar(ctx, &u.f_shl_scalar, insn);
                        if (trans_VRSHL_S_scalar(ctx, &u.f_shl_scalar)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00300080) {
                        /* 11101110 0.11..01 ...11110 1110.... */
                        /* ../git/target/arm/tcg/mve.decode:513 */
                        disas_mve_extract_shl_scalar(ctx, &u.f_shl_scalar, insn);
                        if (trans_VQSHL_S_scalar(ctx, &u.f_shl_scalar)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00320080) {
                        /* 11101110 0.11..11 ...11110 1110.... */
                        /* ../git/target/arm/tcg/mve.decode:514 */
                        disas_mve_extract_shl_scalar(ctx, &u.f_shl_scalar, insn);
                        if (trans_VQRSHL_S_scalar(ctx, &u.f_shl_scalar)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:515 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VMUL_scalar(ctx, &u.f_2scalar)) return true;
                    break;
                case 0x1:
                    /* 11111110 0......1 ...11110 .110.... */
                    if ((insn & 0x00320080) == 0x00300000) {
                        /* 11111110 0.11..01 ...11110 0110.... */
                        /* ../git/target/arm/tcg/mve.decode:519 */
                        disas_mve_extract_shl_scalar(ctx, &u.f_shl_scalar, insn);
                        if (trans_VSHL_U_scalar(ctx, &u.f_shl_scalar)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00320000) {
                        /* 11111110 0.11..11 ...11110 0110.... */
                        /* ../git/target/arm/tcg/mve.decode:520 */
                        disas_mve_extract_shl_scalar(ctx, &u.f_shl_scalar, insn);
                        if (trans_VRSHL_U_scalar(ctx, &u.f_shl_scalar)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00300080) {
                        /* 11111110 0.11..01 ...11110 1110.... */
                        /* ../git/target/arm/tcg/mve.decode:521 */
                        disas_mve_extract_shl_scalar(ctx, &u.f_shl_scalar, insn);
                        if (trans_VQSHL_U_scalar(ctx, &u.f_shl_scalar)) return true;
                    }
                    if ((insn & 0x00320080) == 0x00320080) {
                        /* 11111110 0.11..11 ...11110 1110.... */
                        /* ../git/target/arm/tcg/mve.decode:522 */
                        disas_mve_extract_shl_scalar(ctx, &u.f_shl_scalar, insn);
                        if (trans_VQRSHL_U_scalar(ctx, &u.f_shl_scalar)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:523 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VBRSR(ctx, &u.f_2scalar)) return true;
                    break;
                }
                break;
            }
            break;
        case 0x00000f00:
            /* 111.1110 0....... ....1111 .0.0.... */
            switch (insn & 0x00010001) {
            case 0x00000000:
                /* 111.1110 0......0 ....1111 .0.0...0 */
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......0 ....1111 .0.0...0 */
                    if ((insn & 0x00301000) == 0x00300000) {
                        /* 11101110 0.11...0 ...01111 .0.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:356 */
                        disas_mve_extract_2op_nosz(ctx, &u.f_2op, insn);
                        if (trans_VADC(ctx, &u.f_2op)) return true;
                    }
                    if ((insn & 0x00301000) == 0x00301000) {
                        /* 11101110 0.11...0 ...11111 .0.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:357 */
                        disas_mve_extract_2op_nosz(ctx, &u.f_2op, insn);
                        if (trans_VADCI(ctx, &u.f_2op)) return true;
                    }
                    if ((insn & 0x00001000) == 0x00000000) {
                        /* 11101110 0......0 ...01111 .0.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:358 */
                        disas_mve_extract_2op(ctx, &u.f_2op, insn);
                        if (trans_VHCADD90(ctx, &u.f_2op)) return true;
                    }
                    if ((insn & 0x00001000) == 0x00001000) {
                        /* 11101110 0......0 ...11111 .0.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:359 */
                        disas_mve_extract_2op(ctx, &u.f_2op, insn);
                        if (trans_VHCADD270(ctx, &u.f_2op)) return true;
                    }
                    break;
                case 0x1:
                    /* 11111110 0......0 ....1111 .0.0...0 */
                    if ((insn & 0x00301000) == 0x00300000) {
                        /* 11111110 0.11...0 ...01111 .0.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:363 */
                        disas_mve_extract_2op_nosz(ctx, &u.f_2op, insn);
                        if (trans_VSBC(ctx, &u.f_2op)) return true;
                    }
                    if ((insn & 0x00301000) == 0x00301000) {
                        /* 11111110 0.11...0 ...11111 .0.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:364 */
                        disas_mve_extract_2op_nosz(ctx, &u.f_2op, insn);
                        if (trans_VSBCI(ctx, &u.f_2op)) return true;
                    }
                    if ((insn & 0x00001000) == 0x00000000) {
                        /* 11111110 0......0 ...01111 .0.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:365 */
                        disas_mve_extract_2op(ctx, &u.f_2op, insn);
                        if (trans_VCADD90(ctx, &u.f_2op)) return true;
                    }
                    if ((insn & 0x00001000) == 0x00001000) {
                        /* 11111110 0......0 ...11111 .0.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:366 */
                        disas_mve_extract_2op(ctx, &u.f_2op, insn);
                        if (trans_VCADD270(ctx, &u.f_2op)) return true;
                    }
                    break;
                }
                break;
            case 0x00000001:
                /* 111.1110 0......0 ....1111 .0.0...1 */
                disas_mve_extract_2op_sz28(ctx, &u.f_2op, insn);
                switch (insn & 0x00301000) {
                case 0x00300000:
                    /* 111.1110 0.11...0 ...01111 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:349 */
                    if (trans_VQDMULLB(ctx, &u.f_2op)) return true;
                    break;
                case 0x00301000:
                    /* 111.1110 0.11...0 ...11111 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:350 */
                    if (trans_VQDMULLT(ctx, &u.f_2op)) return true;
                    break;
                }
                break;
            case 0x00010000:
                /* 111.1110 0......1 ....1111 .0.0...0 */
                switch (insn & 0x00001080) {
                case 0x00000000:
                    /* 111.1110 0......1 ...01111 00.0...0 */
                    if ((insn & 0x00300000) == 0x00300000) {
                        /* 111.1110 0.11...1 ...01111 00.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:702 */
                        disas_mve_extract_vcmp_fp(ctx, &u.f_vcmp, insn);
                        if (trans_VCMPEQ_fp(ctx, &u.f_vcmp)) return true;
                    }
                    if ((insn & 0x10000000) == 0x10000000) {
                        /* 11111110 0......1 ...01111 00.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:703 */
                        disas_mve_extract_vcmp(ctx, &u.f_vcmp, insn);
                        if (trans_VCMPEQ(ctx, &u.f_vcmp)) return true;
                    }
                    break;
                case 0x00000080:
                    /* 111.1110 0......1 ...01111 10.0...0 */
                    if ((insn & 0x00300000) == 0x00300000) {
                        /* 111.1110 0.11...1 ...01111 10.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:707 */
                        disas_mve_extract_vcmp_fp(ctx, &u.f_vcmp, insn);
                        if (trans_VCMPNE_fp(ctx, &u.f_vcmp)) return true;
                    }
                    if ((insn & 0x10000000) == 0x10000000) {
                        /* 11111110 0......1 ...01111 10.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:708 */
                        disas_mve_extract_vcmp(ctx, &u.f_vcmp, insn);
                        if (trans_VCMPNE(ctx, &u.f_vcmp)) return true;
                    }
                    break;
                case 0x00001000:
                    /* 111.1110 0......1 ...11111 00.0...0 */
                    if ((insn & 0x00300000) == 0x00300000) {
                        /* 111.1110 0.11...1 ...11111 00.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:712 */
                        disas_mve_extract_vcmp_fp(ctx, &u.f_vcmp, insn);
                        if (trans_VCMPGE_fp(ctx, &u.f_vcmp)) return true;
                    }
                    if ((insn & 0x10000000) == 0x10000000) {
                        /* 11111110 0......1 ...11111 00.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:713 */
                        disas_mve_extract_vcmp(ctx, &u.f_vcmp, insn);
                        if (trans_VCMPGE(ctx, &u.f_vcmp)) return true;
                    }
                    break;
                case 0x00001080:
                    /* 111.1110 0......1 ...11111 10.0...0 */
                    if ((insn & 0x00300000) == 0x00300000) {
                        /* 111.1110 0.11...1 ...11111 10.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:717 */
                        disas_mve_extract_vcmp_fp(ctx, &u.f_vcmp, insn);
                        if (trans_VCMPLT_fp(ctx, &u.f_vcmp)) return true;
                    }
                    if ((insn & 0x10000000) == 0x10000000) {
                        /* 11111110 0......1 ...11111 10.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:718 */
                        disas_mve_extract_vcmp(ctx, &u.f_vcmp, insn);
                        if (trans_VCMPLT(ctx, &u.f_vcmp)) return true;
                    }
                    break;
                }
                break;
            case 0x00010001:
                /* 111.1110 0......1 ....1111 .0.0...1 */
                switch ((insn >> 12) & 0x1) {
                case 0x0:
                    /* 111.1110 0......1 ...01111 .0.0...1 */
                    switch ((insn >> 28) & 0x1) {
                    case 0x1:
                        /* 11111110 0......1 ...01111 .0.0...1 */
                        if ((insn & 0x00300000) == 0x00300000) {
                            /* 11111110 0.11...1 ...01111 .0.0...1 */
                            /* ../git/target/arm/tcg/mve.decode:732 */
                            disas_mve_extract_2op_nosz(ctx, &u.f_2op, insn);
                            if (trans_VPSEL(ctx, &u.f_2op)) return true;
                        }
                        if ((insn & 0x00000080) == 0x00000000) {
                            /* 11111110 0......1 ...01111 00.0...1 */
                            /* ../git/target/arm/tcg/mve.decode:733 */
                            disas_mve_extract_vcmp(ctx, &u.f_vcmp, insn);
                            if (trans_VCMPCS(ctx, &u.f_vcmp)) return true;
                        }
                        if ((insn & 0x00000080) == 0x00000080) {
                            /* 11111110 0......1 ...01111 10.0...1 */
                            /* ../git/target/arm/tcg/mve.decode:734 */
                            disas_mve_extract_vcmp(ctx, &u.f_vcmp, insn);
                            if (trans_VCMPHI(ctx, &u.f_vcmp)) return true;
                        }
                        break;
                    }
                    break;
                case 0x1:
                    /* 111.1110 0......1 ...11111 .0.0...1 */
                    switch ((insn >> 7) & 0x1) {
                    case 0x0:
                        /* 111.1110 0......1 ...11111 00.0...1 */
                        if ((insn & 0x00300000) == 0x00300000) {
                            /* 111.1110 0.11...1 ...11111 00.0...1 */
                            /* ../git/target/arm/tcg/mve.decode:722 */
                            disas_mve_extract_vcmp_fp(ctx, &u.f_vcmp, insn);
                            if (trans_VCMPGT_fp(ctx, &u.f_vcmp)) return true;
                        }
                        if ((insn & 0x10000000) == 0x10000000) {
                            /* 11111110 0......1 ...11111 00.0...1 */
                            /* ../git/target/arm/tcg/mve.decode:723 */
                            disas_mve_extract_vcmp(ctx, &u.f_vcmp, insn);
                            if (trans_VCMPGT(ctx, &u.f_vcmp)) return true;
                        }
                        break;
                    case 0x1:
                        /* 111.1110 0......1 ...11111 10.0...1 */
                        if ((insn & 0x00300000) == 0x00300000) {
                            /* 111.1110 0.11...1 ...11111 10.0...1 */
                            /* ../git/target/arm/tcg/mve.decode:727 */
                            disas_mve_extract_vcmp_fp(ctx, &u.f_vcmp, insn);
                            if (trans_VCMPLE_fp(ctx, &u.f_vcmp)) return true;
                        }
                        if ((insn & 0x10000000) == 0x10000000) {
                            /* 11111110 0......1 ...11111 10.0...1 */
                            /* ../git/target/arm/tcg/mve.decode:728 */
                            disas_mve_extract_vcmp(ctx, &u.f_vcmp, insn);
                            if (trans_VCMPLE(ctx, &u.f_vcmp)) return true;
                        }
                        break;
                    }
                    break;
                }
                break;
            }
            break;
        case 0x00000f40:
            /* 111.1110 0....... ....1111 .1.0.... */
            switch (insn & 0x00011020) {
            case 0x00000000:
                /* 111.1110 0......0 ...01111 .100.... */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...0 ...01111 .100.... */
                    /* ../git/target/arm/tcg/mve.decode:527 */
                    disas_mve_extract_2op_fp_scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VADD_fp_scalar(ctx, &u.f_2scalar)) return true;
                }
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......0 ...01111 .100.... */
                    /* ../git/target/arm/tcg/mve.decode:528 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VHADD_S_scalar(ctx, &u.f_2scalar)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......0 ...01111 .100.... */
                    /* ../git/target/arm/tcg/mve.decode:529 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VHADD_U_scalar(ctx, &u.f_2scalar)) return true;
                }
                break;
            case 0x00000020:
                /* 111.1110 0......0 ...01111 .110.... */
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......0 ...01111 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:539 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VQADD_S_scalar(ctx, &u.f_2scalar)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......0 ...01111 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:540 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VQADD_U_scalar(ctx, &u.f_2scalar)) return true;
                }
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...0 ...01111 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:541 */
                    disas_mve_extract_2scalar_nosz(ctx, &u.f_2scalar, insn);
                    u.f_2scalar.size = plus_1(ctx, extract32(insn, 28, 1));
                    if (trans_VQDMULLB_scalar(ctx, &u.f_2scalar)) return true;
                }
                break;
            case 0x00001000:
                /* 111.1110 0......0 ...11111 .100.... */
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...0 ...11111 .100.... */
                    /* ../git/target/arm/tcg/mve.decode:533 */
                    disas_mve_extract_2op_fp_scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VSUB_fp_scalar(ctx, &u.f_2scalar)) return true;
                }
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......0 ...11111 .100.... */
                    /* ../git/target/arm/tcg/mve.decode:534 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VHSUB_S_scalar(ctx, &u.f_2scalar)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......0 ...11111 .100.... */
                    /* ../git/target/arm/tcg/mve.decode:535 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VHSUB_U_scalar(ctx, &u.f_2scalar)) return true;
                }
                break;
            case 0x00001020:
                /* 111.1110 0......0 ...11111 .110.... */
                if ((insn & 0x10000000) == 0x00000000) {
                    /* 11101110 0......0 ...11111 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:546 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VQSUB_S_scalar(ctx, &u.f_2scalar)) return true;
                }
                if ((insn & 0x10000000) == 0x10000000) {
                    /* 11111110 0......0 ...11111 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:547 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VQSUB_U_scalar(ctx, &u.f_2scalar)) return true;
                }
                if ((insn & 0x00300000) == 0x00300000) {
                    /* 111.1110 0.11...0 ...11111 .110.... */
                    /* ../git/target/arm/tcg/mve.decode:548 */
                    disas_mve_extract_2scalar_nosz(ctx, &u.f_2scalar, insn);
                    u.f_2scalar.size = plus_1(ctx, extract32(insn, 28, 1));
                    if (trans_VQDMULLT_scalar(ctx, &u.f_2scalar)) return true;
                }
                break;
            case 0x00010000:
                /* 111.1110 0......1 ...01111 .100.... */
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......1 ...01111 .100.... */
                    if ((insn & 0x00300080) == 0x00300000) {
                        /* 11101110 0.11...1 ...01111 0100.... */
                        /* ../git/target/arm/tcg/mve.decode:499 */
                        disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        u.f_vcmp_scalar.size = 2;
                        if (trans_VCMPEQ_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                    }
                    if ((insn & 0x00300080) == 0x00300080) {
                        /* 11101110 0.11...1 ...01111 1100.... */
                        /* ../git/target/arm/tcg/mve.decode:500 */
                        disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        u.f_vcmp_scalar.size = 2;
                        if (trans_VCMPNE_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:501 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VADD_scalar(ctx, &u.f_2scalar)) return true;
                    break;
                case 0x1:
                    /* 11111110 0......1 ...01111 .100.... */
                    switch ((insn >> 7) & 0x1) {
                    case 0x0:
                        /* 11111110 0......1 ...01111 0100.... */
                        if ((insn & 0x007ee00f) == 0x0030000d) {
                            /* 11111110 00110001 00001111 01001101 */
                            /* ../git/target/arm/tcg/mve.decode:738 */
                            disas_mve_extract_disas_mve_Fmt_47(ctx, &u.f_disas_mve23, insn);
                            if (trans_VPNOT(ctx, &u.f_disas_mve23)) return true;
                        }
                        if ((insn & 0x003e000f) == 0x0030000d) {
                            /* 11111110 0.110001 ...01111 01001101 */
                            /* ../git/target/arm/tcg/mve.decode:739 */
                            disas_mve_extract_disas_mve_Fmt_48(ctx, &u.f_disas_mve24, insn);
                            if (trans_VPST(ctx, &u.f_disas_mve24)) return true;
                        }
                        if ((insn & 0x00300000) == 0x00300000) {
                            /* 11111110 0.11...1 ...01111 0100.... */
                            /* ../git/target/arm/tcg/mve.decode:740 */
                            disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                            u.f_vcmp_scalar.size = 1;
                            if (trans_VCMPEQ_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        }
                        /* ../git/target/arm/tcg/mve.decode:741 */
                        disas_mve_extract_vcmp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        if (trans_VCMPEQ_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        break;
                    case 0x1:
                        /* 11111110 0......1 ...01111 1100.... */
                        if ((insn & 0x00300000) == 0x00300000) {
                            /* 11111110 0.11...1 ...01111 1100.... */
                            /* ../git/target/arm/tcg/mve.decode:745 */
                            disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                            u.f_vcmp_scalar.size = 1;
                            if (trans_VCMPNE_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        }
                        /* ../git/target/arm/tcg/mve.decode:746 */
                        disas_mve_extract_vcmp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        if (trans_VCMPNE_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        break;
                    }
                    break;
                }
                break;
            case 0x00010020:
                /* 111.1110 0......1 ...01111 .110.... */
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......1 ...01111 .110.... */
                    if ((insn & 0x0000000e) == 0x0000000e) {
                        /* 11101110 0......1 ...01111 .110111. */
                        /* ../git/target/arm/tcg/mve.decode:412 */
                        disas_mve_extract_vidup(ctx, &u.f_vidup, insn);
                        if (trans_VIDUP(ctx, &u.f_vidup)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:413 */
                    disas_mve_extract_viwdup(ctx, &u.f_viwdup, insn);
                    if (trans_VIWDUP(ctx, &u.f_viwdup)) return true;
                    break;
                case 0x1:
                    /* 11111110 0......1 ...01111 .110.... */
                    disas_mve_extract_vcmp_scalar(ctx, &u.f_vcmp_scalar, insn);
                    switch ((insn >> 7) & 0x1) {
                    case 0x0:
                        /* 11111110 0......1 ...01111 0110.... */
                        /* ../git/target/arm/tcg/mve.decode:768 */
                        if (trans_VCMPCS_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        break;
                    case 0x1:
                        /* 11111110 0......1 ...01111 1110.... */
                        /* ../git/target/arm/tcg/mve.decode:769 */
                        if (trans_VCMPHI_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        break;
                    }
                    break;
                }
                break;
            case 0x00011000:
                /* 111.1110 0......1 ...11111 .100.... */
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......1 ...11111 .100.... */
                    if ((insn & 0x00300080) == 0x00300080) {
                        /* 11101110 0.11...1 ...11111 1100.... */
                        /* ../git/target/arm/tcg/mve.decode:505 */
                        disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        u.f_vcmp_scalar.size = 2;
                        if (trans_VCMPLT_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                    }
                    if ((insn & 0x00300080) == 0x00300000) {
                        /* 11101110 0.11...1 ...11111 0100.... */
                        /* ../git/target/arm/tcg/mve.decode:506 */
                        disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        u.f_vcmp_scalar.size = 2;
                        if (trans_VCMPGE_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:507 */
                    disas_mve_extract_2scalar(ctx, &u.f_2scalar, insn);
                    if (trans_VSUB_scalar(ctx, &u.f_2scalar)) return true;
                    break;
                case 0x1:
                    /* 11111110 0......1 ...11111 .100.... */
                    switch ((insn >> 7) & 0x1) {
                    case 0x0:
                        /* 11111110 0......1 ...11111 0100.... */
                        if ((insn & 0x00300000) == 0x00300000) {
                            /* 11111110 0.11...1 ...11111 0100.... */
                            /* ../git/target/arm/tcg/mve.decode:760 */
                            disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                            u.f_vcmp_scalar.size = 1;
                            if (trans_VCMPGE_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        }
                        /* ../git/target/arm/tcg/mve.decode:761 */
                        disas_mve_extract_vcmp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        if (trans_VCMPGE_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        break;
                    case 0x1:
                        /* 11111110 0......1 ...11111 1100.... */
                        if ((insn & 0x00300000) == 0x00300000) {
                            /* 11111110 0.11...1 ...11111 1100.... */
                            /* ../git/target/arm/tcg/mve.decode:764 */
                            disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                            u.f_vcmp_scalar.size = 1;
                            if (trans_VCMPLT_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        }
                        /* ../git/target/arm/tcg/mve.decode:765 */
                        disas_mve_extract_vcmp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        if (trans_VCMPLT_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        break;
                    }
                    break;
                }
                break;
            case 0x00011020:
                /* 111.1110 0......1 ...11111 .110.... */
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 0......1 ...11111 .110.... */
                    if ((insn & 0x00300080) == 0x00300000) {
                        /* 11101110 0.11...1 ...11111 0110.... */
                        /* ../git/target/arm/tcg/mve.decode:416 */
                        disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        u.f_vcmp_scalar.size = 2;
                        if (trans_VCMPGT_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                    }
                    if ((insn & 0x00300080) == 0x00300080) {
                        /* 11101110 0.11...1 ...11111 1110.... */
                        /* ../git/target/arm/tcg/mve.decode:417 */
                        disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        u.f_vcmp_scalar.size = 2;
                        if (trans_VCMPLE_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                    }
                    if ((insn & 0x0000000e) == 0x0000000e) {
                        /* 11101110 0......1 ...11111 .110111. */
                        /* ../git/target/arm/tcg/mve.decode:418 */
                        disas_mve_extract_vidup(ctx, &u.f_vidup, insn);
                        if (trans_VDDUP(ctx, &u.f_vidup)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:419 */
                    disas_mve_extract_viwdup(ctx, &u.f_viwdup, insn);
                    if (trans_VDWDUP(ctx, &u.f_viwdup)) return true;
                    break;
                case 0x1:
                    /* 11111110 0......1 ...11111 .110.... */
                    switch ((insn >> 7) & 0x1) {
                    case 0x0:
                        /* 11111110 0......1 ...11111 0110.... */
                        if ((insn & 0x00300000) == 0x00300000) {
                            /* 11111110 0.11...1 ...11111 0110.... */
                            /* ../git/target/arm/tcg/mve.decode:750 */
                            disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                            u.f_vcmp_scalar.size = 1;
                            if (trans_VCMPGT_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        }
                        /* ../git/target/arm/tcg/mve.decode:751 */
                        disas_mve_extract_vcmp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        if (trans_VCMPGT_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        break;
                    case 0x1:
                        /* 11111110 0......1 ...11111 1110.... */
                        if ((insn & 0x00300000) == 0x00300000) {
                            /* 11111110 0.11...1 ...11111 1110.... */
                            /* ../git/target/arm/tcg/mve.decode:755 */
                            disas_mve_extract_vcmp_fp_scalar(ctx, &u.f_vcmp_scalar, insn);
                            u.f_vcmp_scalar.size = 1;
                            if (trans_VCMPLE_fp_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        }
                        /* ../git/target/arm/tcg/mve.decode:756 */
                        disas_mve_extract_vcmp_scalar(ctx, &u.f_vcmp_scalar, insn);
                        if (trans_VCMPLE_scalar(ctx, &u.f_vcmp_scalar)) return true;
                        break;
                    }
                    break;
                }
                break;
            }
            break;
        case 0x00800b10:
            /* 111.1110 1....... ....1011 .0.1.... */
            disas_mve_extract_vdup(ctx, &u.f_vdup, insn);
            switch (insn & 0x1071002f) {
            case 0x00200000:
                /* 11101110 1010...0 ....1011 .0010000 */
                /* ../git/target/arm/tcg/mve.decode:395 */
                u.f_vdup.size = 2;
                if (trans_VDUP(ctx, &u.f_vdup)) return true;
                break;
            case 0x00200020:
                /* 11101110 1010...0 ....1011 .0110000 */
                /* ../git/target/arm/tcg/mve.decode:394 */
                u.f_vdup.size = 1;
                if (trans_VDUP(ctx, &u.f_vdup)) return true;
                break;
            case 0x00600000:
                /* 11101110 1110...0 ....1011 .0010000 */
                /* ../git/target/arm/tcg/mve.decode:393 */
                u.f_vdup.size = 0;
                if (trans_VDUP(ctx, &u.f_vdup)) return true;
                break;
            }
            break;
        case 0x00800e00:
            /* 111.1110 1....... ....1110 .0.0.... */
            switch (insn & 0x10000001) {
            case 0x00000000:
                /* 11101110 1....... ....1110 .0.0...0 */
                if ((insn & 0x00700000) == 0x00700000) {
                    /* 11101110 1111.... ....1110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:443 */
                    disas_mve_extract_vmladav(ctx, &u.f_vmladav, insn);
                    if (trans_VMLADAV_S(ctx, &u.f_vmladav)) return true;
                }
                /* ../git/target/arm/tcg/mve.decode:444 */
                disas_mve_extract_vmlaldav(ctx, &u.f_vmlaldav, insn);
                if (trans_VMLALDAV_S(ctx, &u.f_vmlaldav)) return true;
                break;
            case 0x00000001:
                /* 11101110 1....... ....1110 .0.0...1 */
                if ((insn & 0x00700000) == 0x00700000) {
                    /* 11101110 1111.... ....1110 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:452 */
                    disas_mve_extract_vmladav(ctx, &u.f_vmladav, insn);
                    if (trans_VMLSDAV(ctx, &u.f_vmladav)) return true;
                }
                /* ../git/target/arm/tcg/mve.decode:453 */
                disas_mve_extract_vmlaldav(ctx, &u.f_vmlaldav, insn);
                if (trans_VMLSLDAV(ctx, &u.f_vmlaldav)) return true;
                break;
            case 0x10000000:
                /* 11111110 1....... ....1110 .0.0...0 */
                if ((insn & 0x00700000) == 0x00700000) {
                    /* 11111110 1111.... ....1110 .0.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:447 */
                    disas_mve_extract_vmladav(ctx, &u.f_vmladav, insn);
                    if (trans_VMLADAV_U(ctx, &u.f_vmladav)) return true;
                }
                /* ../git/target/arm/tcg/mve.decode:448 */
                disas_mve_extract_vmlaldav(ctx, &u.f_vmlaldav, insn);
                if (trans_VMLALDAV_U(ctx, &u.f_vmlaldav)) return true;
                break;
            case 0x10000001:
                /* 11111110 1....... ....1110 .0.0...1 */
                switch ((insn >> 16) & 0x1) {
                case 0x0:
                    /* 11111110 1......0 ....1110 .0.0...1 */
                    if ((insn & 0x00700000) == 0x00700000) {
                        /* 11111110 1111...0 ....1110 .0.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:457 */
                        disas_mve_extract_vmladav_nosz(ctx, &u.f_vmladav, insn);
                        if (trans_VMLSDAV(ctx, &u.f_vmladav)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:458 */
                    disas_mve_extract_vmlaldav_nosz(ctx, &u.f_vmlaldav, insn);
                    if (trans_VRMLSLDAVH(ctx, &u.f_vmlaldav)) return true;
                    break;
                }
                break;
            }
            break;
        case 0x00800f00:
            /* 111.1110 1....... ....1111 .0.0.... */
            switch (insn & 0x00010001) {
            case 0x00000000:
                /* 111.1110 1......0 ....1111 .0.0...0 */
                switch ((insn >> 28) & 0x1) {
                case 0x0:
                    /* 11101110 1......0 ....1111 .0.0...0 */
                    if ((insn & 0x007c0000) == 0x006c0000) {
                        /* 11101110 111011.0 ....1111 .0.0...0 */
                        disas_mve_extract_vmaxnmv(ctx, &u.f_vmaxv, insn);
                        switch (insn & 0x00020080) {
                        case 0x00000000:
                            /* 11101110 11101100 ....1111 00.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:466 */
                            u.f_vmaxv.size = 2;
                            if (trans_VMAXNMAV(ctx, &u.f_vmaxv)) return true;
                            break;
                        case 0x00000080:
                            /* 11101110 11101100 ....1111 10.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:467 */
                            u.f_vmaxv.size = 2;
                            if (trans_VMINNMAV(ctx, &u.f_vmaxv)) return true;
                            break;
                        case 0x00020000:
                            /* 11101110 11101110 ....1111 00.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:468 */
                            u.f_vmaxv.size = 2;
                            if (trans_VMAXNMV(ctx, &u.f_vmaxv)) return true;
                            break;
                        case 0x00020080:
                            /* 11101110 11101110 ....1111 10.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:469 */
                            u.f_vmaxv.size = 2;
                            if (trans_VMINNMV(ctx, &u.f_vmaxv)) return true;
                            break;
                        }
                    }
                    if ((insn & 0x00700000) == 0x00600000) {
                        /* 11101110 1110...0 ....1111 .0.0...0 */
                        disas_mve_extract_vmaxv(ctx, &u.f_vmaxv, insn);
                        switch (insn & 0x00020080) {
                        case 0x00000000:
                            /* 11101110 1110..00 ....1111 00.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:474 */
                            if (trans_VMAXAV(ctx, &u.f_vmaxv)) return true;
                            break;
                        case 0x00000080:
                            /* 11101110 1110..00 ....1111 10.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:475 */
                            if (trans_VMINAV(ctx, &u.f_vmaxv)) return true;
                            break;
                        case 0x00020000:
                            /* 11101110 1110..10 ....1111 00.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:472 */
                            if (trans_VMAXV_S(ctx, &u.f_vmaxv)) return true;
                            break;
                        case 0x00020080:
                            /* 11101110 1110..10 ....1111 10.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:473 */
                            if (trans_VMINV_S(ctx, &u.f_vmaxv)) return true;
                            break;
                        }
                    }
                    if ((insn & 0x00700000) == 0x00700000) {
                        /* 11101110 1111...0 ....1111 .0.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:477 */
                        disas_mve_extract_vmladav_nosz(ctx, &u.f_vmladav, insn);
                        if (trans_VMLADAV_S(ctx, &u.f_vmladav)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:478 */
                    disas_mve_extract_vmlaldav_nosz(ctx, &u.f_vmlaldav, insn);
                    if (trans_VRMLALDAVH_S(ctx, &u.f_vmlaldav)) return true;
                    break;
                case 0x1:
                    /* 11111110 1......0 ....1111 .0.0...0 */
                    if ((insn & 0x007c0000) == 0x006c0000) {
                        /* 11111110 111011.0 ....1111 .0.0...0 */
                        disas_mve_extract_vmaxnmv(ctx, &u.f_vmaxv, insn);
                        switch (insn & 0x00020080) {
                        case 0x00000000:
                            /* 11111110 11101100 ....1111 00.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:483 */
                            u.f_vmaxv.size = 1;
                            if (trans_VMAXNMAV(ctx, &u.f_vmaxv)) return true;
                            break;
                        case 0x00000080:
                            /* 11111110 11101100 ....1111 10.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:484 */
                            u.f_vmaxv.size = 1;
                            if (trans_VMINNMAV(ctx, &u.f_vmaxv)) return true;
                            break;
                        case 0x00020000:
                            /* 11111110 11101110 ....1111 00.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:485 */
                            u.f_vmaxv.size = 1;
                            if (trans_VMAXNMV(ctx, &u.f_vmaxv)) return true;
                            break;
                        case 0x00020080:
                            /* 11111110 11101110 ....1111 10.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:486 */
                            u.f_vmaxv.size = 1;
                            if (trans_VMINNMV(ctx, &u.f_vmaxv)) return true;
                            break;
                        }
                    }
                    if ((insn & 0x00720000) == 0x00620000) {
                        /* 11111110 1110..10 ....1111 .0.0...0 */
                        disas_mve_extract_vmaxv(ctx, &u.f_vmaxv, insn);
                        switch ((insn >> 7) & 0x1) {
                        case 0x0:
                            /* 11111110 1110..10 ....1111 00.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:489 */
                            if (trans_VMAXV_U(ctx, &u.f_vmaxv)) return true;
                            break;
                        case 0x1:
                            /* 11111110 1110..10 ....1111 10.0...0 */
                            /* ../git/target/arm/tcg/mve.decode:490 */
                            if (trans_VMINV_U(ctx, &u.f_vmaxv)) return true;
                            break;
                        }
                    }
                    if ((insn & 0x00700000) == 0x00700000) {
                        /* 11111110 1111...0 ....1111 .0.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:492 */
                        disas_mve_extract_vmladav_nosz(ctx, &u.f_vmladav, insn);
                        if (trans_VMLADAV_U(ctx, &u.f_vmladav)) return true;
                    }
                    /* ../git/target/arm/tcg/mve.decode:493 */
                    disas_mve_extract_vmlaldav_nosz(ctx, &u.f_vmlaldav, insn);
                    if (trans_VRMLALDAVH_U(ctx, &u.f_vmlaldav)) return true;
                    break;
                }
                break;
            case 0x00000001:
                /* 111.1110 1......0 ....1111 .0.0...1 */
                switch (insn & 0x10400000) {
                case 0x00000000:
                    /* 11101110 10.....0 ....1111 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:584 */
                    disas_mve_extract_vabav(ctx, &u.f_vabav, insn);
                    if (trans_VABAV_S(ctx, &u.f_vabav)) return true;
                    break;
                case 0x00400000:
                    /* 11101110 11.....0 ....1111 .0.0...1 */
                    disas_mve_extract_vmladav_nosz(ctx, &u.f_vmladav, insn);
                    switch ((insn >> 20) & 0x3) {
                    case 0x3:
                        /* 11101110 1111...0 ....1111 .0.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:461 */
                        if (trans_VMLADAV_S(ctx, &u.f_vmladav)) return true;
                        break;
                    }
                    break;
                case 0x10000000:
                    /* 11111110 10.....0 ....1111 .0.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:585 */
                    disas_mve_extract_vabav(ctx, &u.f_vabav, insn);
                    if (trans_VABAV_U(ctx, &u.f_vabav)) return true;
                    break;
                case 0x10400000:
                    /* 11111110 11.....0 ....1111 .0.0...1 */
                    disas_mve_extract_vmladav_nosz(ctx, &u.f_vmladav, insn);
                    switch ((insn >> 20) & 0x3) {
                    case 0x3:
                        /* 11111110 1111...0 ....1111 .0.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:462 */
                        if (trans_VMLADAV_U(ctx, &u.f_vmladav)) return true;
                        break;
                    }
                    break;
                }
                break;
            case 0x00010000:
                /* 111.1110 1......1 ....1111 .0.0...0 */
                switch (insn & 0x00021080) {
                case 0x00000000:
                    /* 111.1110 1.....01 ...01111 00.0...0 */
                    if ((insn & 0x00700000) == 0x00700000) {
                        /* 111.1110 1111..01 ...01111 00.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:577 */
                        disas_mve_extract_disas_mve_Fmt_43(ctx, &u.f_disas_mve20, insn);
                        if (trans_VADDV(ctx, &u.f_disas_mve20)) return true;
                    }
                    if ((insn & 0x000c0000) == 0x00080000) {
                        /* 111.1110 1...1001 ...01111 00.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:578 */
                        disas_mve_extract_disas_mve_Fmt_44(ctx, &u.f_disas_mve21, insn);
                        if (trans_VADDLV(ctx, &u.f_disas_mve21)) return true;
                    }
                    break;
                }
                break;
            }
            break;
        case 0x00800f40:
            /* 111.1110 1....... ....1111 .1.0.... */
            switch (insn & 0x10201080) {
            case 0x00000000:
                /* 11101110 1.0..... ...01111 01.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11101110 1.00.... ...01111 01.0...0 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11101110 1.001... ...01111 01.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:668 */
                        if (trans_VQSHRNB_S(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00000001:
                    /* 11101110 1.00.... ...01111 01.0...1 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11101110 1.001... ...01111 01.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:682 */
                        if (trans_VQRSHRNB_S(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11101110 1.01.... ...01111 01.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:669 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQSHRNB_S(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00100001:
                    /* 11101110 1.01.... ...01111 01.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:683 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQRSHRNB_S(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x00000080:
                /* 11101110 1.0..... ...01111 11.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11101110 1.00.... ...01111 11.0...0 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11101110 1.001... ...01111 11.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:677 */
                        if (trans_VQSHRUNB(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00000001:
                    /* 11101110 1.00.... ...01111 11.0...1 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11101110 1.001... ...01111 11.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:658 */
                        if (trans_VSHRNB(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11101110 1.01.... ...01111 11.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:678 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQSHRUNB(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00100001:
                    /* 11101110 1.01.... ...01111 11.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:659 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VSHRNB(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x00001000:
                /* 11101110 1.0..... ...11111 01.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11101110 1.00.... ...11111 01.0...0 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11101110 1.001... ...11111 01.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:670 */
                        if (trans_VQSHRNT_S(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00000001:
                    /* 11101110 1.00.... ...11111 01.0...1 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11101110 1.001... ...11111 01.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:684 */
                        if (trans_VQRSHRNT_S(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11101110 1.01.... ...11111 01.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:671 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQSHRNT_S(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00100001:
                    /* 11101110 1.01.... ...11111 01.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:685 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQRSHRNT_S(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x00001080:
                /* 11101110 1.0..... ...11111 11.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11101110 1.00.... ...11111 11.0...0 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11101110 1.001... ...11111 11.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:679 */
                        if (trans_VQSHRUNT(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00000001:
                    /* 11101110 1.00.... ...11111 11.0...1 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11101110 1.001... ...11111 11.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:660 */
                        if (trans_VSHRNT(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11101110 1.01.... ...11111 11.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:680 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQSHRUNT(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00100001:
                    /* 11101110 1.01.... ...11111 11.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:661 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VSHRNT(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x00200000:
                /* 11101110 1.1..... ...01111 01.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11101110 1.10.... ...01111 01.0...0 */
                    disas_mve_extract_2_shll_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11101110 1.101... ...01111 01.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:636 */
                        if (trans_VSHLL_BS(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11101110 1.11.... ...01111 01.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:637 */
                    disas_mve_extract_2_shll_h(ctx, &u.f_2shift, insn);
                    if (trans_VSHLL_BS(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x00200080:
                /* 11101110 1.1..... ...01111 11.0.... */
                disas_mve_extract_disas_mve_Fmt_46(ctx, &u.f_disas_mve22, insn);
                switch ((insn >> 5) & 0x1) {
                case 0x0:
                    /* 11101110 1.1..... ...01111 1100.... */
                    /* ../git/target/arm/tcg/mve.decode:696 */
                    if (trans_VSHLC(ctx, &u.f_disas_mve22)) return true;
                    break;
                }
                break;
            case 0x00201000:
                /* 11101110 1.1..... ...11111 01.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11101110 1.10.... ...11111 01.0...0 */
                    disas_mve_extract_2_shll_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11101110 1.101... ...11111 01.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:642 */
                        if (trans_VSHLL_TS(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11101110 1.11.... ...11111 01.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:643 */
                    disas_mve_extract_2_shll_h(ctx, &u.f_2shift, insn);
                    if (trans_VSHLL_TS(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x10000000:
                /* 11111110 1.0..... ...01111 01.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11111110 1.00.... ...01111 01.0...0 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11111110 1.001... ...01111 01.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:672 */
                        if (trans_VQSHRNB_U(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00000001:
                    /* 11111110 1.00.... ...01111 01.0...1 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11111110 1.001... ...01111 01.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:686 */
                        if (trans_VQRSHRNB_U(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11111110 1.01.... ...01111 01.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:673 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQSHRNB_U(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00100001:
                    /* 11111110 1.01.... ...01111 01.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:687 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQRSHRNB_U(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x10000080:
                /* 11111110 1.0..... ...01111 11.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11111110 1.00.... ...01111 11.0...0 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11111110 1.001... ...01111 11.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:691 */
                        if (trans_VQRSHRUNB(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00000001:
                    /* 11111110 1.00.... ...01111 11.0...1 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11111110 1.001... ...01111 11.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:663 */
                        if (trans_VRSHRNB(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11111110 1.01.... ...01111 11.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:692 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQRSHRUNB(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00100001:
                    /* 11111110 1.01.... ...01111 11.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:664 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VRSHRNB(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x10001000:
                /* 11111110 1.0..... ...11111 01.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11111110 1.00.... ...11111 01.0...0 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11111110 1.001... ...11111 01.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:674 */
                        if (trans_VQSHRNT_U(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00000001:
                    /* 11111110 1.00.... ...11111 01.0...1 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11111110 1.001... ...11111 01.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:688 */
                        if (trans_VQRSHRNT_U(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11111110 1.01.... ...11111 01.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:675 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQSHRNT_U(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00100001:
                    /* 11111110 1.01.... ...11111 01.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:689 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQRSHRNT_U(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x10001080:
                /* 11111110 1.0..... ...11111 11.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11111110 1.00.... ...11111 11.0...0 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11111110 1.001... ...11111 11.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:693 */
                        if (trans_VQRSHRUNT(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00000001:
                    /* 11111110 1.00.... ...11111 11.0...1 */
                    disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11111110 1.001... ...11111 11.0...1 */
                        /* ../git/target/arm/tcg/mve.decode:665 */
                        if (trans_VRSHRNT(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11111110 1.01.... ...11111 11.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:694 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VQRSHRUNT(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00100001:
                    /* 11111110 1.01.... ...11111 11.0...1 */
                    /* ../git/target/arm/tcg/mve.decode:666 */
                    disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                    if (trans_VRSHRNT(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x10200000:
                /* 11111110 1.1..... ...01111 01.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11111110 1.10.... ...01111 01.0...0 */
                    disas_mve_extract_2_shll_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11111110 1.101... ...01111 01.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:639 */
                        if (trans_VSHLL_BU(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11111110 1.11.... ...01111 01.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:640 */
                    disas_mve_extract_2_shll_h(ctx, &u.f_2shift, insn);
                    if (trans_VSHLL_BU(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            case 0x10201000:
                /* 11111110 1.1..... ...11111 01.0.... */
                switch (insn & 0x00100001) {
                case 0x00000000:
                    /* 11111110 1.10.... ...11111 01.0...0 */
                    disas_mve_extract_2_shll_b(ctx, &u.f_2shift, insn);
                    switch ((insn >> 19) & 0x1) {
                    case 0x1:
                        /* 11111110 1.101... ...11111 01.0...0 */
                        /* ../git/target/arm/tcg/mve.decode:645 */
                        if (trans_VSHLL_TU(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00100000:
                    /* 11111110 1.11.... ...11111 01.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:646 */
                    disas_mve_extract_2_shll_h(ctx, &u.f_2shift, insn);
                    if (trans_VSHLL_TU(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            }
            break;
        }
        break;
    case 0xef000000u:
        /* 111.1111 ........ ........ ........ */
        switch (insn & 0x00801050) {
        case 0x00000040:
            /* 111.1111 0....... ...0.... .1.0.... */
            switch (insn & 0x10010f01) {
            case 0x00000000:
                /* 11101111 0......0 ...00000 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:289 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VHADD_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000100:
                /* 11101111 0......0 ...00001 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:352 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VRHADD_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000200:
                /* 11101111 0......0 ...00010 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:291 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VHSUB_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000400:
                /* 11101111 0......0 ...00100 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:313 */
                disas_mve_extract_2op_rev(ctx, &u.f_2op, insn);
                if (trans_VSHL_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000500:
                /* 11101111 0......0 ...00101 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:316 */
                disas_mve_extract_2op_rev(ctx, &u.f_2op, insn);
                if (trans_VRSHL_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000600:
                /* 11101111 0......0 ...00110 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:281 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VMAX_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000700:
                /* 11101111 0......0 ...00111 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:286 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VABD_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000800:
                /* 11101111 0......0 ...01000 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:217 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VADD(ctx, &u.f_2op)) return true;
                break;
            case 0x00000b00:
                /* 11101111 0......0 ...01011 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:305 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VQDMULH(ctx, &u.f_2op)) return true;
                break;
            case 0x00000d00:
                /* 11101111 0......0 ...01101 .1.0...0 */
                disas_mve_extract_2op_fp(ctx, &u.f_2op, insn);
                switch ((insn >> 21) & 0x1) {
                case 0x0:
                    /* 11101111 0.0....0 ...01101 .1.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:772 */
                    if (trans_VADD_fp(ctx, &u.f_2op)) return true;
                    break;
                case 0x1:
                    /* 11101111 0.1....0 ...01101 .1.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:773 */
                    if (trans_VSUB_fp(ctx, &u.f_2op)) return true;
                    break;
                }
                break;
            case 0x10000000:
                /* 11111111 0......0 ...00000 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:290 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VHADD_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000100:
                /* 11111111 0......0 ...00001 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:353 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VRHADD_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000200:
                /* 11111111 0......0 ...00010 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:292 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VHSUB_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000400:
                /* 11111111 0......0 ...00100 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:314 */
                disas_mve_extract_2op_rev(ctx, &u.f_2op, insn);
                if (trans_VSHL_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000500:
                /* 11111111 0......0 ...00101 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:317 */
                disas_mve_extract_2op_rev(ctx, &u.f_2op, insn);
                if (trans_VRSHL_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000600:
                /* 11111111 0......0 ...00110 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:282 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VMAX_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000700:
                /* 11111111 0......0 ...00111 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:287 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VABD_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000800:
                /* 11111111 0......0 ...01000 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:218 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VSUB(ctx, &u.f_2op)) return true;
                break;
            case 0x10000b00:
                /* 11111111 0......0 ...01011 .1.0...0 */
                /* ../git/target/arm/tcg/mve.decode:306 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VQRDMULH(ctx, &u.f_2op)) return true;
                break;
            case 0x10000d00:
                /* 11111111 0......0 ...01101 .1.0...0 */
                disas_mve_extract_2op_fp(ctx, &u.f_2op, insn);
                switch ((insn >> 21) & 0x1) {
                case 0x1:
                    /* 11111111 0.1....0 ...01101 .1.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:775 */
                    if (trans_VABD_fp(ctx, &u.f_2op)) return true;
                    break;
                }
                break;
            }
            break;
        case 0x00000050:
            /* 111.1111 0....... ...0.... .1.1.... */
            switch (insn & 0x10010f01) {
            case 0x00000000:
                /* 11101111 0......0 ...00000 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:308 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VQADD_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000100:
                /* 11101111 0......0 ...00001 .1.1...0 */
                disas_mve_extract_2op_nosz(ctx, &u.f_2op, insn);
                switch ((insn >> 20) & 0x3) {
                case 0x0:
                    /* 11101111 0.00...0 ...00001 .1.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:211 */
                    if (trans_VAND(ctx, &u.f_2op)) return true;
                    break;
                case 0x1:
                    /* 11101111 0.01...0 ...00001 .1.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:212 */
                    if (trans_VBIC(ctx, &u.f_2op)) return true;
                    break;
                case 0x2:
                    /* 11101111 0.10...0 ...00001 .1.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:213 */
                    if (trans_VORR(ctx, &u.f_2op)) return true;
                    break;
                case 0x3:
                    /* 11101111 0.11...0 ...00001 .1.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:214 */
                    if (trans_VORN(ctx, &u.f_2op)) return true;
                    break;
                }
                break;
            case 0x00000200:
                /* 11101111 0......0 ...00010 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:310 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VQSUB_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000400:
                /* 11101111 0......0 ...00100 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:319 */
                disas_mve_extract_2op_rev(ctx, &u.f_2op, insn);
                if (trans_VQSHL_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000500:
                /* 11101111 0......0 ...00101 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:322 */
                disas_mve_extract_2op_rev(ctx, &u.f_2op, insn);
                if (trans_VQRSHL_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000600:
                /* 11101111 0......0 ...00110 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:283 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VMIN_S(ctx, &u.f_2op)) return true;
                break;
            case 0x00000900:
                /* 11101111 0......0 ...01001 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:219 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VMUL(ctx, &u.f_2op)) return true;
                break;
            case 0x00000c00:
                /* 11101111 0......0 ...01100 .1.1...0 */
                disas_mve_extract_2op_fp(ctx, &u.f_2op, insn);
                switch ((insn >> 21) & 0x1) {
                case 0x0:
                    /* 11101111 0.0....0 ...01100 .1.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:783 */
                    if (trans_VFMA(ctx, &u.f_2op)) return true;
                    break;
                case 0x1:
                    /* 11101111 0.1....0 ...01100 .1.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:784 */
                    if (trans_VFMS(ctx, &u.f_2op)) return true;
                    break;
                }
                break;
            case 0x10000000:
                /* 11111111 0......0 ...00000 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:309 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VQADD_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000100:
                /* 11111111 0......0 ...00001 .1.1...0 */
                disas_mve_extract_2op_nosz(ctx, &u.f_2op, insn);
                switch ((insn >> 20) & 0x3) {
                case 0x0:
                    /* 11111111 0.00...0 ...00001 .1.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:215 */
                    if (trans_VEOR(ctx, &u.f_2op)) return true;
                    break;
                }
                break;
            case 0x10000200:
                /* 11111111 0......0 ...00010 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:311 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VQSUB_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000400:
                /* 11111111 0......0 ...00100 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:320 */
                disas_mve_extract_2op_rev(ctx, &u.f_2op, insn);
                if (trans_VQSHL_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000500:
                /* 11111111 0......0 ...00101 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:323 */
                disas_mve_extract_2op_rev(ctx, &u.f_2op, insn);
                if (trans_VQRSHL_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000600:
                /* 11111111 0......0 ...00110 .1.1...0 */
                /* ../git/target/arm/tcg/mve.decode:284 */
                disas_mve_extract_2op(ctx, &u.f_2op, insn);
                if (trans_VMIN_U(ctx, &u.f_2op)) return true;
                break;
            case 0x10000d00:
                /* 11111111 0......0 ...01101 .1.1...0 */
                disas_mve_extract_2op_fp(ctx, &u.f_2op, insn);
                switch ((insn >> 21) & 0x1) {
                case 0x0:
                    /* 11111111 0.0....0 ...01101 .1.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:774 */
                    if (trans_VMUL_fp(ctx, &u.f_2op)) return true;
                    break;
                }
                break;
            case 0x10000f00:
                /* 11111111 0......0 ...01111 .1.1...0 */
                disas_mve_extract_2op_fp(ctx, &u.f_2op, insn);
                switch ((insn >> 21) & 0x1) {
                case 0x0:
                    /* 11111111 0.0....0 ...01111 .1.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:777 */
                    if (trans_VMAXNM(ctx, &u.f_2op)) return true;
                    break;
                case 0x1:
                    /* 11111111 0.1....0 ...01111 .1.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:778 */
                    if (trans_VMINNM(ctx, &u.f_2op)) return true;
                    break;
                }
                break;
            }
            break;
        case 0x00800040:
            /* 111.1111 1....... ...0.... .1.0.... */
            switch (insn & 0x10330f81) {
            case 0x10300000:
                /* 11111111 1.11..00 ...00000 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:376 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VREV64(ctx, &u.f_1op)) return true;
                break;
            case 0x10300080:
                /* 11111111 1.11..00 ...00000 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:375 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VREV32(ctx, &u.f_1op)) return true;
                break;
            case 0x10300100:
                /* 11111111 1.11..00 ...00001 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:374 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VREV16(ctx, &u.f_1op)) return true;
                break;
            case 0x10300400:
                /* 11111111 1.11..00 ...00100 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:371 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCLS(ctx, &u.f_1op)) return true;
                break;
            case 0x10300480:
                /* 11111111 1.11..00 ...00100 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:372 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCLZ(ctx, &u.f_1op)) return true;
                break;
            case 0x10300580:
                /* 11111111 1.11..00 ...00101 11.0...0 */
                disas_mve_extract_1op_nosz(ctx, &u.f_1op, insn);
                switch ((insn >> 18) & 0x3) {
                case 0x0:
                    /* 11111111 1.110000 ...00101 11.0...0 */
                    /* ../git/target/arm/tcg/mve.decode:378 */
                    if (trans_VMVN(ctx, &u.f_1op)) return true;
                    break;
                }
                break;
            case 0x10300700:
                /* 11111111 1.11..00 ...00111 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:385 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VQABS(ctx, &u.f_1op)) return true;
                break;
            case 0x10300780:
                /* 11111111 1.11..00 ...00111 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:386 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VQNEG(ctx, &u.f_1op)) return true;
                break;
            case 0x10310300:
                /* 11111111 1.11..01 ...00011 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:380 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VABS(ctx, &u.f_1op)) return true;
                break;
            case 0x10310380:
                /* 11111111 1.11..01 ...00011 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:382 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VNEG(ctx, &u.f_1op)) return true;
                break;
            case 0x10310700:
                /* 11111111 1.11..01 ...00111 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:381 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VABS_fp(ctx, &u.f_1op)) return true;
                break;
            case 0x10310780:
                /* 11111111 1.11..01 ...00111 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:383 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VNEG_fp(ctx, &u.f_1op)) return true;
                break;
            case 0x10320400:
                /* 11111111 1.11..10 ...00100 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:827 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VRINTN(ctx, &u.f_1op)) return true;
                break;
            case 0x10320480:
                /* 11111111 1.11..10 ...00100 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:828 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VRINTX(ctx, &u.f_1op)) return true;
                break;
            case 0x10320500:
                /* 11111111 1.11..10 ...00101 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:829 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VRINTA(ctx, &u.f_1op)) return true;
                break;
            case 0x10320580:
                /* 11111111 1.11..10 ...00101 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:830 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VRINTZ(ctx, &u.f_1op)) return true;
                break;
            case 0x10320680:
                /* 11111111 1.11..10 ...00110 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:831 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VRINTM(ctx, &u.f_1op)) return true;
                break;
            case 0x10320780:
                /* 11111111 1.11..10 ...00111 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:832 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VRINTP(ctx, &u.f_1op)) return true;
                break;
            case 0x10330000:
                /* 11111111 1.11..11 ...00000 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:818 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVTAS(ctx, &u.f_1op)) return true;
                break;
            case 0x10330080:
                /* 11111111 1.11..11 ...00000 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:819 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVTAU(ctx, &u.f_1op)) return true;
                break;
            case 0x10330100:
                /* 11111111 1.11..11 ...00001 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:820 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVTNS(ctx, &u.f_1op)) return true;
                break;
            case 0x10330180:
                /* 11111111 1.11..11 ...00001 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:821 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVTNU(ctx, &u.f_1op)) return true;
                break;
            case 0x10330200:
                /* 11111111 1.11..11 ...00010 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:822 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVTPS(ctx, &u.f_1op)) return true;
                break;
            case 0x10330280:
                /* 11111111 1.11..11 ...00010 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:823 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVTPU(ctx, &u.f_1op)) return true;
                break;
            case 0x10330300:
                /* 11111111 1.11..11 ...00011 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:824 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVTMS(ctx, &u.f_1op)) return true;
                break;
            case 0x10330380:
                /* 11111111 1.11..11 ...00011 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:825 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVTMU(ctx, &u.f_1op)) return true;
                break;
            case 0x10330600:
                /* 11111111 1.11..11 ...00110 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:812 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVT_SF(ctx, &u.f_1op)) return true;
                break;
            case 0x10330680:
                /* 11111111 1.11..11 ...00110 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:813 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVT_UF(ctx, &u.f_1op)) return true;
                break;
            case 0x10330700:
                /* 11111111 1.11..11 ...00111 01.0...0 */
                /* ../git/target/arm/tcg/mve.decode:814 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVT_FS(ctx, &u.f_1op)) return true;
                break;
            case 0x10330780:
                /* 11111111 1.11..11 ...00111 11.0...0 */
                /* ../git/target/arm/tcg/mve.decode:815 */
                disas_mve_extract_1op(ctx, &u.f_1op, insn);
                if (trans_VCVT_FU(ctx, &u.f_1op)) return true;
                break;
            }
            break;
        case 0x00800050:
            /* 111.1111 1....... ...0.... .1.1.... */
            switch (insn & 0x00200080) {
            case 0x00000000:
                /* 111.1111 1.0..... ...0.... 01.1.... */
                switch ((insn >> 20) & 0x1) {
                case 0x0:
                    /* 111.1111 1.00.... ...0.... 01.1.... */
                    switch ((insn >> 19) & 0x1) {
                    case 0x0:
                        /* 111.1111 1.000... ...0.... 01.1.... */
                        /* ../git/target/arm/tcg/mve.decode:597 */
                        disas_mve_extract_1imm(ctx, &u.f_1imm, insn);
                        if (trans_Vimm_1r(ctx, &u.f_1imm)) return true;
                        break;
                    case 0x1:
                        /* 111.1111 1.001... ...0.... 01.1.... */
                        switch (insn & 0x10000f01) {
                        case 0x00000000:
                            /* 11101111 1.001... ...00000 01.1...0 */
                            /* ../git/target/arm/tcg/mve.decode:617 */
                            disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                            if (trans_VSHRI_S(ctx, &u.f_2shift)) return true;
                            break;
                        case 0x00000200:
                            /* 11101111 1.001... ...00010 01.1...0 */
                            /* ../git/target/arm/tcg/mve.decode:625 */
                            disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                            if (trans_VRSHRI_S(ctx, &u.f_2shift)) return true;
                            break;
                        case 0x00000500:
                            /* 11101111 1.001... ...00101 01.1...0 */
                            /* ../git/target/arm/tcg/mve.decode:601 */
                            disas_mve_extract_2_shl_b(ctx, &u.f_2shift, insn);
                            if (trans_VSHLI(ctx, &u.f_2shift)) return true;
                            break;
                        case 0x00000700:
                            /* 11101111 1.001... ...00111 01.1...0 */
                            /* ../git/target/arm/tcg/mve.decode:605 */
                            disas_mve_extract_2_shl_b(ctx, &u.f_2shift, insn);
                            if (trans_VQSHLI_S(ctx, &u.f_2shift)) return true;
                            break;
                        case 0x10000000:
                            /* 11111111 1.001... ...00000 01.1...0 */
                            /* ../git/target/arm/tcg/mve.decode:621 */
                            disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                            if (trans_VSHRI_U(ctx, &u.f_2shift)) return true;
                            break;
                        case 0x10000200:
                            /* 11111111 1.001... ...00010 01.1...0 */
                            /* ../git/target/arm/tcg/mve.decode:629 */
                            disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                            if (trans_VRSHRI_U(ctx, &u.f_2shift)) return true;
                            break;
                        case 0x10000400:
                            /* 11111111 1.001... ...00100 01.1...0 */
                            /* ../git/target/arm/tcg/mve.decode:649 */
                            disas_mve_extract_2_shr_b(ctx, &u.f_2shift, insn);
                            if (trans_VSRI(ctx, &u.f_2shift)) return true;
                            break;
                        case 0x10000500:
                            /* 11111111 1.001... ...00101 01.1...0 */
                            /* ../git/target/arm/tcg/mve.decode:653 */
                            disas_mve_extract_2_shl_b(ctx, &u.f_2shift, insn);
                            if (trans_VSLI(ctx, &u.f_2shift)) return true;
                            break;
                        case 0x10000600:
                            /* 11111111 1.001... ...00110 01.1...0 */
                            /* ../git/target/arm/tcg/mve.decode:613 */
                            disas_mve_extract_2_shl_b(ctx, &u.f_2shift, insn);
                            if (trans_VQSHLUI(ctx, &u.f_2shift)) return true;
                            break;
                        case 0x10000700:
                            /* 11111111 1.001... ...00111 01.1...0 */
                            /* ../git/target/arm/tcg/mve.decode:609 */
                            disas_mve_extract_2_shl_b(ctx, &u.f_2shift, insn);
                            if (trans_VQSHLI_U(ctx, &u.f_2shift)) return true;
                            break;
                        }
                        break;
                    }
                    break;
                case 0x1:
                    /* 111.1111 1.01.... ...0.... 01.1.... */
                    switch (insn & 0x10000f01) {
                    case 0x00000000:
                        /* 11101111 1.01.... ...00000 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:618 */
                        disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                        if (trans_VSHRI_S(ctx, &u.f_2shift)) return true;
                        break;
                    case 0x00000200:
                        /* 11101111 1.01.... ...00010 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:626 */
                        disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                        if (trans_VRSHRI_S(ctx, &u.f_2shift)) return true;
                        break;
                    case 0x00000500:
                        /* 11101111 1.01.... ...00101 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:602 */
                        disas_mve_extract_2_shl_h(ctx, &u.f_2shift, insn);
                        if (trans_VSHLI(ctx, &u.f_2shift)) return true;
                        break;
                    case 0x00000700:
                        /* 11101111 1.01.... ...00111 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:606 */
                        disas_mve_extract_2_shl_h(ctx, &u.f_2shift, insn);
                        if (trans_VQSHLI_S(ctx, &u.f_2shift)) return true;
                        break;
                    case 0x10000000:
                        /* 11111111 1.01.... ...00000 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:622 */
                        disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                        if (trans_VSHRI_U(ctx, &u.f_2shift)) return true;
                        break;
                    case 0x10000200:
                        /* 11111111 1.01.... ...00010 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:630 */
                        disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                        if (trans_VRSHRI_U(ctx, &u.f_2shift)) return true;
                        break;
                    case 0x10000400:
                        /* 11111111 1.01.... ...00100 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:650 */
                        disas_mve_extract_2_shr_h(ctx, &u.f_2shift, insn);
                        if (trans_VSRI(ctx, &u.f_2shift)) return true;
                        break;
                    case 0x10000500:
                        /* 11111111 1.01.... ...00101 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:654 */
                        disas_mve_extract_2_shl_h(ctx, &u.f_2shift, insn);
                        if (trans_VSLI(ctx, &u.f_2shift)) return true;
                        break;
                    case 0x10000600:
                        /* 11111111 1.01.... ...00110 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:614 */
                        disas_mve_extract_2_shl_h(ctx, &u.f_2shift, insn);
                        if (trans_VQSHLUI(ctx, &u.f_2shift)) return true;
                        break;
                    case 0x10000700:
                        /* 11111111 1.01.... ...00111 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:610 */
                        disas_mve_extract_2_shl_h(ctx, &u.f_2shift, insn);
                        if (trans_VQSHLI_U(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                }
                break;
            case 0x00200000:
                /* 111.1111 1.1..... ...0.... 01.1.... */
                switch (insn & 0x10000f01) {
                case 0x00000000:
                    /* 11101111 1.1..... ...00000 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:619 */
                    disas_mve_extract_2_shr_w(ctx, &u.f_2shift, insn);
                    if (trans_VSHRI_S(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00000200:
                    /* 11101111 1.1..... ...00010 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:627 */
                    disas_mve_extract_2_shr_w(ctx, &u.f_2shift, insn);
                    if (trans_VRSHRI_S(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00000500:
                    /* 11101111 1.1..... ...00101 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:603 */
                    disas_mve_extract_2_shl_w(ctx, &u.f_2shift, insn);
                    if (trans_VSHLI(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00000700:
                    /* 11101111 1.1..... ...00111 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:607 */
                    disas_mve_extract_2_shl_w(ctx, &u.f_2shift, insn);
                    if (trans_VQSHLI_S(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00000c00:
                    /* 11101111 1.1..... ...01100 01.1...0 */
                    disas_mve_extract_vcvt_f16(ctx, &u.f_2shift, insn);
                    switch ((insn >> 20) & 0x1) {
                    case 0x1:
                        /* 11101111 1.11.... ...01100 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:798 */
                        if (trans_VCVT_SH_fixed(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00000d00:
                    /* 11101111 1.1..... ...01101 01.1...0 */
                    disas_mve_extract_vcvt_f16(ctx, &u.f_2shift, insn);
                    switch ((insn >> 20) & 0x1) {
                    case 0x1:
                        /* 11101111 1.11.... ...01101 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:801 */
                        if (trans_VCVT_HS_fixed(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x00000e00:
                    /* 11101111 1.1..... ...01110 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:804 */
                    disas_mve_extract_vcvt(ctx, &u.f_2shift, insn);
                    if (trans_VCVT_SF_fixed(ctx, &u.f_2shift)) return true;
                    break;
                case 0x00000f00:
                    /* 11101111 1.1..... ...01111 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:807 */
                    disas_mve_extract_vcvt(ctx, &u.f_2shift, insn);
                    if (trans_VCVT_FS_fixed(ctx, &u.f_2shift)) return true;
                    break;
                case 0x10000000:
                    /* 11111111 1.1..... ...00000 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:623 */
                    disas_mve_extract_2_shr_w(ctx, &u.f_2shift, insn);
                    if (trans_VSHRI_U(ctx, &u.f_2shift)) return true;
                    break;
                case 0x10000200:
                    /* 11111111 1.1..... ...00010 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:631 */
                    disas_mve_extract_2_shr_w(ctx, &u.f_2shift, insn);
                    if (trans_VRSHRI_U(ctx, &u.f_2shift)) return true;
                    break;
                case 0x10000400:
                    /* 11111111 1.1..... ...00100 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:651 */
                    disas_mve_extract_2_shr_w(ctx, &u.f_2shift, insn);
                    if (trans_VSRI(ctx, &u.f_2shift)) return true;
                    break;
                case 0x10000500:
                    /* 11111111 1.1..... ...00101 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:655 */
                    disas_mve_extract_2_shl_w(ctx, &u.f_2shift, insn);
                    if (trans_VSLI(ctx, &u.f_2shift)) return true;
                    break;
                case 0x10000600:
                    /* 11111111 1.1..... ...00110 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:615 */
                    disas_mve_extract_2_shl_w(ctx, &u.f_2shift, insn);
                    if (trans_VQSHLUI(ctx, &u.f_2shift)) return true;
                    break;
                case 0x10000700:
                    /* 11111111 1.1..... ...00111 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:611 */
                    disas_mve_extract_2_shl_w(ctx, &u.f_2shift, insn);
                    if (trans_VQSHLI_U(ctx, &u.f_2shift)) return true;
                    break;
                case 0x10000c00:
                    /* 11111111 1.1..... ...01100 01.1...0 */
                    disas_mve_extract_vcvt_f16(ctx, &u.f_2shift, insn);
                    switch ((insn >> 20) & 0x1) {
                    case 0x1:
                        /* 11111111 1.11.... ...01100 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:799 */
                        if (trans_VCVT_UH_fixed(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x10000d00:
                    /* 11111111 1.1..... ...01101 01.1...0 */
                    disas_mve_extract_vcvt_f16(ctx, &u.f_2shift, insn);
                    switch ((insn >> 20) & 0x1) {
                    case 0x1:
                        /* 11111111 1.11.... ...01101 01.1...0 */
                        /* ../git/target/arm/tcg/mve.decode:802 */
                        if (trans_VCVT_HU_fixed(ctx, &u.f_2shift)) return true;
                        break;
                    }
                    break;
                case 0x10000e00:
                    /* 11111111 1.1..... ...01110 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:805 */
                    disas_mve_extract_vcvt(ctx, &u.f_2shift, insn);
                    if (trans_VCVT_UF_fixed(ctx, &u.f_2shift)) return true;
                    break;
                case 0x10000f00:
                    /* 11111111 1.1..... ...01111 01.1...0 */
                    /* ../git/target/arm/tcg/mve.decode:808 */
                    disas_mve_extract_vcvt(ctx, &u.f_2shift, insn);
                    if (trans_VCVT_FU_fixed(ctx, &u.f_2shift)) return true;
                    break;
                }
                break;
            }
            break;
        }
        break;
    }
    return false;
}
