5081 lines
239 KiB
C
5081 lines
239 KiB
C
/* This file is autogenerated by scripts/decodetree.py. */
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int imm1;
|
|
int imm2;
|
|
int rd;
|
|
} arg_disas_sve25;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int imm;
|
|
int rd;
|
|
int rm;
|
|
} arg_disas_sve26;
|
|
|
|
typedef struct {
|
|
int imm;
|
|
int rd;
|
|
} arg_disas_sve27;
|
|
|
|
typedef struct {
|
|
int rd;
|
|
int rn;
|
|
} arg_disas_sve28;
|
|
|
|
typedef struct {
|
|
int dbm;
|
|
int rd;
|
|
} arg_disas_sve29;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int h;
|
|
int rd;
|
|
int rn;
|
|
int u;
|
|
} arg_disas_sve30;
|
|
|
|
typedef struct {
|
|
int pg;
|
|
int rn;
|
|
} arg_disas_sve31;
|
|
|
|
typedef struct {
|
|
#ifdef _MSC_VER
|
|
int dummy;
|
|
#endif
|
|
} arg_disas_sve32;
|
|
|
|
typedef struct {
|
|
int rd;
|
|
} arg_disas_sve33;
|
|
|
|
typedef struct {
|
|
int pg;
|
|
int rd;
|
|
int s;
|
|
} arg_disas_sve34;
|
|
|
|
typedef struct {
|
|
int rn;
|
|
} arg_disas_sve35;
|
|
|
|
typedef struct {
|
|
int ne;
|
|
int rm;
|
|
int rn;
|
|
int sf;
|
|
} arg_disas_sve36;
|
|
|
|
typedef struct {
|
|
int eq;
|
|
int esz;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
int sf;
|
|
int u;
|
|
} arg_disas_sve37;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int imm;
|
|
int rd;
|
|
} arg_disas_sve38;
|
|
|
|
typedef struct {
|
|
int ra;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
int sz;
|
|
int u;
|
|
} arg_disas_sve39;
|
|
|
|
typedef struct {
|
|
int index;
|
|
int ra;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
int sz;
|
|
int u;
|
|
} arg_disas_sve40;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int pg;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
int rot;
|
|
} arg_disas_sve41;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int pg;
|
|
int ra;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
int rot;
|
|
} arg_disas_sve42;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int index;
|
|
int ra;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
int rot;
|
|
} arg_disas_sve43;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int index;
|
|
int ra;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
int sub;
|
|
} arg_disas_sve44;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int index;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
} arg_disas_sve45;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int imm;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
} arg_disas_sve46;
|
|
|
|
typedef struct {
|
|
int rm;
|
|
} arg_disas_sve47;
|
|
|
|
typedef struct {
|
|
int d;
|
|
int esz;
|
|
int imm;
|
|
int pat;
|
|
int rd;
|
|
int rn;
|
|
int u;
|
|
} arg_incdec2_cnt;
|
|
|
|
typedef struct {
|
|
int d;
|
|
int esz;
|
|
int pg;
|
|
int rd;
|
|
int rn;
|
|
int u;
|
|
} arg_incdec2_pred;
|
|
|
|
typedef struct {
|
|
int d;
|
|
int esz;
|
|
int imm;
|
|
int pat;
|
|
int rd;
|
|
int u;
|
|
} arg_incdec_cnt;
|
|
|
|
typedef struct {
|
|
int d;
|
|
int esz;
|
|
int pg;
|
|
int rd;
|
|
int u;
|
|
} arg_incdec_pred;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int pat;
|
|
int rd;
|
|
int s;
|
|
} arg_ptrue;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int pg;
|
|
int rd;
|
|
int rn;
|
|
} arg_rpr_esz;
|
|
|
|
typedef struct {
|
|
int pg;
|
|
int rd;
|
|
int rn;
|
|
int s;
|
|
} arg_rpr_s;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int imm;
|
|
int pg;
|
|
int rd;
|
|
int rn;
|
|
} arg_rpri_esz;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int ff;
|
|
int imm;
|
|
int msz;
|
|
int pg;
|
|
int rd;
|
|
int rn;
|
|
int u;
|
|
} arg_rpri_gather_load;
|
|
|
|
typedef struct {
|
|
int dtype;
|
|
int imm;
|
|
int nreg;
|
|
int pg;
|
|
int rd;
|
|
int rn;
|
|
} arg_rpri_load;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int imm;
|
|
int msz;
|
|
int pg;
|
|
int rd;
|
|
int rn;
|
|
} arg_rpri_scatter_store;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int imm;
|
|
int msz;
|
|
int nreg;
|
|
int pg;
|
|
int rd;
|
|
int rn;
|
|
} arg_rpri_store;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int pg;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
} arg_rprr_esz;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int ff;
|
|
int msz;
|
|
int pg;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
int scale;
|
|
int u;
|
|
int xs;
|
|
} arg_rprr_gather_load;
|
|
|
|
typedef struct {
|
|
int dtype;
|
|
int nreg;
|
|
int pg;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
} arg_rprr_load;
|
|
|
|
typedef struct {
|
|
int pg;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
int s;
|
|
} arg_rprr_s;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int msz;
|
|
int pg;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
int scale;
|
|
int xs;
|
|
} arg_rprr_scatter_store;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int msz;
|
|
int nreg;
|
|
int pg;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
} arg_rprr_store;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int pg;
|
|
int ra;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
} arg_rprrr_esz;
|
|
|
|
typedef struct {
|
|
int dbm;
|
|
int rd;
|
|
int rn;
|
|
} arg_rr_dbm;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int rd;
|
|
int rn;
|
|
} arg_rr_esz;
|
|
|
|
typedef struct {
|
|
int imm;
|
|
int rd;
|
|
int rn;
|
|
} arg_rri;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int imm;
|
|
int rd;
|
|
int rn;
|
|
} arg_rri_esz;
|
|
|
|
typedef struct {
|
|
int esz;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
} arg_rrr_esz;
|
|
|
|
typedef struct {
|
|
int imm;
|
|
int rd;
|
|
int rm;
|
|
int rn;
|
|
} arg_rrri;
|
|
|
|
typedef arg_rprr_esz arg_ORR_zpzz;
|
|
static bool trans_ORR_zpzz(DisasContext *ctx, arg_ORR_zpzz *a);
|
|
typedef arg_rprr_esz arg_EOR_zpzz;
|
|
static bool trans_EOR_zpzz(DisasContext *ctx, arg_EOR_zpzz *a);
|
|
typedef arg_rprr_esz arg_AND_zpzz;
|
|
static bool trans_AND_zpzz(DisasContext *ctx, arg_AND_zpzz *a);
|
|
typedef arg_rprr_esz arg_BIC_zpzz;
|
|
static bool trans_BIC_zpzz(DisasContext *ctx, arg_BIC_zpzz *a);
|
|
typedef arg_rprr_esz arg_ADD_zpzz;
|
|
static bool trans_ADD_zpzz(DisasContext *ctx, arg_ADD_zpzz *a);
|
|
typedef arg_rprr_esz arg_SUB_zpzz;
|
|
static bool trans_SUB_zpzz(DisasContext *ctx, arg_SUB_zpzz *a);
|
|
typedef arg_rprr_esz arg_SMAX_zpzz;
|
|
static bool trans_SMAX_zpzz(DisasContext *ctx, arg_SMAX_zpzz *a);
|
|
typedef arg_rprr_esz arg_UMAX_zpzz;
|
|
static bool trans_UMAX_zpzz(DisasContext *ctx, arg_UMAX_zpzz *a);
|
|
typedef arg_rprr_esz arg_SMIN_zpzz;
|
|
static bool trans_SMIN_zpzz(DisasContext *ctx, arg_SMIN_zpzz *a);
|
|
typedef arg_rprr_esz arg_UMIN_zpzz;
|
|
static bool trans_UMIN_zpzz(DisasContext *ctx, arg_UMIN_zpzz *a);
|
|
typedef arg_rprr_esz arg_SABD_zpzz;
|
|
static bool trans_SABD_zpzz(DisasContext *ctx, arg_SABD_zpzz *a);
|
|
typedef arg_rprr_esz arg_UABD_zpzz;
|
|
static bool trans_UABD_zpzz(DisasContext *ctx, arg_UABD_zpzz *a);
|
|
typedef arg_rprr_esz arg_MUL_zpzz;
|
|
static bool trans_MUL_zpzz(DisasContext *ctx, arg_MUL_zpzz *a);
|
|
typedef arg_rprr_esz arg_SMULH_zpzz;
|
|
static bool trans_SMULH_zpzz(DisasContext *ctx, arg_SMULH_zpzz *a);
|
|
typedef arg_rprr_esz arg_UMULH_zpzz;
|
|
static bool trans_UMULH_zpzz(DisasContext *ctx, arg_UMULH_zpzz *a);
|
|
typedef arg_rprr_esz arg_SDIV_zpzz;
|
|
static bool trans_SDIV_zpzz(DisasContext *ctx, arg_SDIV_zpzz *a);
|
|
typedef arg_rprr_esz arg_UDIV_zpzz;
|
|
static bool trans_UDIV_zpzz(DisasContext *ctx, arg_UDIV_zpzz *a);
|
|
typedef arg_rpr_esz arg_ORV;
|
|
static bool trans_ORV(DisasContext *ctx, arg_ORV *a);
|
|
typedef arg_rpr_esz arg_EORV;
|
|
static bool trans_EORV(DisasContext *ctx, arg_EORV *a);
|
|
typedef arg_rpr_esz arg_ANDV;
|
|
static bool trans_ANDV(DisasContext *ctx, arg_ANDV *a);
|
|
typedef arg_rpr_esz arg_MOVPRFX_z;
|
|
static bool trans_MOVPRFX_z(DisasContext *ctx, arg_MOVPRFX_z *a);
|
|
typedef arg_rpr_esz arg_MOVPRFX_m;
|
|
static bool trans_MOVPRFX_m(DisasContext *ctx, arg_MOVPRFX_m *a);
|
|
typedef arg_rpr_esz arg_UADDV;
|
|
static bool trans_UADDV(DisasContext *ctx, arg_UADDV *a);
|
|
typedef arg_rpr_esz arg_SADDV;
|
|
static bool trans_SADDV(DisasContext *ctx, arg_SADDV *a);
|
|
typedef arg_rpr_esz arg_SMAXV;
|
|
static bool trans_SMAXV(DisasContext *ctx, arg_SMAXV *a);
|
|
typedef arg_rpr_esz arg_UMAXV;
|
|
static bool trans_UMAXV(DisasContext *ctx, arg_UMAXV *a);
|
|
typedef arg_rpr_esz arg_SMINV;
|
|
static bool trans_SMINV(DisasContext *ctx, arg_SMINV *a);
|
|
typedef arg_rpr_esz arg_UMINV;
|
|
static bool trans_UMINV(DisasContext *ctx, arg_UMINV *a);
|
|
typedef arg_rpri_esz arg_ASR_zpzi;
|
|
static bool trans_ASR_zpzi(DisasContext *ctx, arg_ASR_zpzi *a);
|
|
typedef arg_rpri_esz arg_LSR_zpzi;
|
|
static bool trans_LSR_zpzi(DisasContext *ctx, arg_LSR_zpzi *a);
|
|
typedef arg_rpri_esz arg_LSL_zpzi;
|
|
static bool trans_LSL_zpzi(DisasContext *ctx, arg_LSL_zpzi *a);
|
|
typedef arg_rpri_esz arg_ASRD;
|
|
static bool trans_ASRD(DisasContext *ctx, arg_ASRD *a);
|
|
typedef arg_rprr_esz arg_ASR_zpzz;
|
|
static bool trans_ASR_zpzz(DisasContext *ctx, arg_ASR_zpzz *a);
|
|
typedef arg_rprr_esz arg_LSR_zpzz;
|
|
static bool trans_LSR_zpzz(DisasContext *ctx, arg_LSR_zpzz *a);
|
|
typedef arg_rprr_esz arg_LSL_zpzz;
|
|
static bool trans_LSL_zpzz(DisasContext *ctx, arg_LSL_zpzz *a);
|
|
typedef arg_rprr_esz arg_ASR_zpzw;
|
|
static bool trans_ASR_zpzw(DisasContext *ctx, arg_ASR_zpzw *a);
|
|
typedef arg_rprr_esz arg_LSR_zpzw;
|
|
static bool trans_LSR_zpzw(DisasContext *ctx, arg_LSR_zpzw *a);
|
|
typedef arg_rprr_esz arg_LSL_zpzw;
|
|
static bool trans_LSL_zpzw(DisasContext *ctx, arg_LSL_zpzw *a);
|
|
typedef arg_rpr_esz arg_CLS;
|
|
static bool trans_CLS(DisasContext *ctx, arg_CLS *a);
|
|
typedef arg_rpr_esz arg_CLZ;
|
|
static bool trans_CLZ(DisasContext *ctx, arg_CLZ *a);
|
|
typedef arg_rpr_esz arg_CNT_zpz;
|
|
static bool trans_CNT_zpz(DisasContext *ctx, arg_CNT_zpz *a);
|
|
typedef arg_rpr_esz arg_CNOT;
|
|
static bool trans_CNOT(DisasContext *ctx, arg_CNOT *a);
|
|
typedef arg_rpr_esz arg_NOT_zpz;
|
|
static bool trans_NOT_zpz(DisasContext *ctx, arg_NOT_zpz *a);
|
|
typedef arg_rpr_esz arg_FABS;
|
|
static bool trans_FABS(DisasContext *ctx, arg_FABS *a);
|
|
typedef arg_rpr_esz arg_FNEG;
|
|
static bool trans_FNEG(DisasContext *ctx, arg_FNEG *a);
|
|
typedef arg_rpr_esz arg_ABS;
|
|
static bool trans_ABS(DisasContext *ctx, arg_ABS *a);
|
|
typedef arg_rpr_esz arg_NEG;
|
|
static bool trans_NEG(DisasContext *ctx, arg_NEG *a);
|
|
typedef arg_rpr_esz arg_SXTB;
|
|
static bool trans_SXTB(DisasContext *ctx, arg_SXTB *a);
|
|
typedef arg_rpr_esz arg_UXTB;
|
|
static bool trans_UXTB(DisasContext *ctx, arg_UXTB *a);
|
|
typedef arg_rpr_esz arg_SXTH;
|
|
static bool trans_SXTH(DisasContext *ctx, arg_SXTH *a);
|
|
typedef arg_rpr_esz arg_UXTH;
|
|
static bool trans_UXTH(DisasContext *ctx, arg_UXTH *a);
|
|
typedef arg_rpr_esz arg_SXTW;
|
|
static bool trans_SXTW(DisasContext *ctx, arg_SXTW *a);
|
|
typedef arg_rpr_esz arg_UXTW;
|
|
static bool trans_UXTW(DisasContext *ctx, arg_UXTW *a);
|
|
typedef arg_rprr_esz arg_FCMGE_ppzz;
|
|
static bool trans_FCMGE_ppzz(DisasContext *ctx, arg_FCMGE_ppzz *a);
|
|
typedef arg_rprr_esz arg_FCMGT_ppzz;
|
|
static bool trans_FCMGT_ppzz(DisasContext *ctx, arg_FCMGT_ppzz *a);
|
|
typedef arg_rprr_esz arg_FCMEQ_ppzz;
|
|
static bool trans_FCMEQ_ppzz(DisasContext *ctx, arg_FCMEQ_ppzz *a);
|
|
typedef arg_rprr_esz arg_FCMNE_ppzz;
|
|
static bool trans_FCMNE_ppzz(DisasContext *ctx, arg_FCMNE_ppzz *a);
|
|
typedef arg_rprr_esz arg_FCMUO_ppzz;
|
|
static bool trans_FCMUO_ppzz(DisasContext *ctx, arg_FCMUO_ppzz *a);
|
|
typedef arg_rprr_esz arg_FACGE_ppzz;
|
|
static bool trans_FACGE_ppzz(DisasContext *ctx, arg_FACGE_ppzz *a);
|
|
typedef arg_rprr_esz arg_FACGT_ppzz;
|
|
static bool trans_FACGT_ppzz(DisasContext *ctx, arg_FACGT_ppzz *a);
|
|
typedef arg_rprrr_esz arg_MLA;
|
|
static bool trans_MLA(DisasContext *ctx, arg_MLA *a);
|
|
typedef arg_rprrr_esz arg_MLS;
|
|
static bool trans_MLS(DisasContext *ctx, arg_MLS *a);
|
|
typedef arg_rrr_esz arg_ADD_zzz;
|
|
static bool trans_ADD_zzz(DisasContext *ctx, arg_ADD_zzz *a);
|
|
typedef arg_rrr_esz arg_SUB_zzz;
|
|
static bool trans_SUB_zzz(DisasContext *ctx, arg_SUB_zzz *a);
|
|
typedef arg_rrr_esz arg_SQADD_zzz;
|
|
static bool trans_SQADD_zzz(DisasContext *ctx, arg_SQADD_zzz *a);
|
|
typedef arg_rrr_esz arg_UQADD_zzz;
|
|
static bool trans_UQADD_zzz(DisasContext *ctx, arg_UQADD_zzz *a);
|
|
typedef arg_rrr_esz arg_SQSUB_zzz;
|
|
static bool trans_SQSUB_zzz(DisasContext *ctx, arg_SQSUB_zzz *a);
|
|
typedef arg_rrr_esz arg_UQSUB_zzz;
|
|
static bool trans_UQSUB_zzz(DisasContext *ctx, arg_UQSUB_zzz *a);
|
|
typedef arg_rrr_esz arg_AND_zzz;
|
|
static bool trans_AND_zzz(DisasContext *ctx, arg_AND_zzz *a);
|
|
typedef arg_rrr_esz arg_ORR_zzz;
|
|
static bool trans_ORR_zzz(DisasContext *ctx, arg_ORR_zzz *a);
|
|
typedef arg_rrr_esz arg_EOR_zzz;
|
|
static bool trans_EOR_zzz(DisasContext *ctx, arg_EOR_zzz *a);
|
|
typedef arg_rrr_esz arg_BIC_zzz;
|
|
static bool trans_BIC_zzz(DisasContext *ctx, arg_BIC_zzz *a);
|
|
typedef arg_disas_sve25 arg_INDEX_ii;
|
|
static bool trans_INDEX_ii(DisasContext *ctx, arg_INDEX_ii *a);
|
|
typedef arg_disas_sve26 arg_INDEX_ir;
|
|
static bool trans_INDEX_ir(DisasContext *ctx, arg_INDEX_ir *a);
|
|
typedef arg_rri_esz arg_INDEX_ri;
|
|
static bool trans_INDEX_ri(DisasContext *ctx, arg_INDEX_ri *a);
|
|
typedef arg_rrr_esz arg_INDEX_rr;
|
|
static bool trans_INDEX_rr(DisasContext *ctx, arg_INDEX_rr *a);
|
|
typedef arg_rri arg_ADDVL;
|
|
static bool trans_ADDVL(DisasContext *ctx, arg_ADDVL *a);
|
|
typedef arg_rri arg_ADDPL;
|
|
static bool trans_ADDPL(DisasContext *ctx, arg_ADDPL *a);
|
|
typedef arg_disas_sve27 arg_RDVL;
|
|
static bool trans_RDVL(DisasContext *ctx, arg_RDVL *a);
|
|
typedef arg_rri_esz arg_ASR_zzi;
|
|
static bool trans_ASR_zzi(DisasContext *ctx, arg_ASR_zzi *a);
|
|
typedef arg_rri_esz arg_LSR_zzi;
|
|
static bool trans_LSR_zzi(DisasContext *ctx, arg_LSR_zzi *a);
|
|
typedef arg_rri_esz arg_LSL_zzi;
|
|
static bool trans_LSL_zzi(DisasContext *ctx, arg_LSL_zzi *a);
|
|
typedef arg_rrr_esz arg_ASR_zzw;
|
|
static bool trans_ASR_zzw(DisasContext *ctx, arg_ASR_zzw *a);
|
|
typedef arg_rrr_esz arg_LSR_zzw;
|
|
static bool trans_LSR_zzw(DisasContext *ctx, arg_LSR_zzw *a);
|
|
typedef arg_rrr_esz arg_LSL_zzw;
|
|
static bool trans_LSL_zzw(DisasContext *ctx, arg_LSL_zzw *a);
|
|
typedef arg_rrri arg_ADR_s32;
|
|
static bool trans_ADR_s32(DisasContext *ctx, arg_ADR_s32 *a);
|
|
typedef arg_rrri arg_ADR_u32;
|
|
static bool trans_ADR_u32(DisasContext *ctx, arg_ADR_u32 *a);
|
|
typedef arg_rrri arg_ADR_p32;
|
|
static bool trans_ADR_p32(DisasContext *ctx, arg_ADR_p32 *a);
|
|
typedef arg_rrri arg_ADR_p64;
|
|
static bool trans_ADR_p64(DisasContext *ctx, arg_ADR_p64 *a);
|
|
typedef arg_disas_sve28 arg_MOVPRFX;
|
|
static bool trans_MOVPRFX(DisasContext *ctx, arg_MOVPRFX *a);
|
|
typedef arg_rr_esz arg_FEXPA;
|
|
static bool trans_FEXPA(DisasContext *ctx, arg_FEXPA *a);
|
|
typedef arg_rrr_esz arg_FTSSEL;
|
|
static bool trans_FTSSEL(DisasContext *ctx, arg_FTSSEL *a);
|
|
typedef arg_incdec_cnt arg_CNT_r;
|
|
static bool trans_CNT_r(DisasContext *ctx, arg_CNT_r *a);
|
|
typedef arg_incdec_cnt arg_INCDEC_r;
|
|
static bool trans_INCDEC_r(DisasContext *ctx, arg_INCDEC_r *a);
|
|
typedef arg_incdec_cnt arg_SINCDEC_r_32;
|
|
static bool trans_SINCDEC_r_32(DisasContext *ctx, arg_SINCDEC_r_32 *a);
|
|
typedef arg_incdec_cnt arg_SINCDEC_r_64;
|
|
static bool trans_SINCDEC_r_64(DisasContext *ctx, arg_SINCDEC_r_64 *a);
|
|
typedef arg_incdec2_cnt arg_INCDEC_v;
|
|
static bool trans_INCDEC_v(DisasContext *ctx, arg_INCDEC_v *a);
|
|
typedef arg_incdec2_cnt arg_SINCDEC_v;
|
|
static bool trans_SINCDEC_v(DisasContext *ctx, arg_SINCDEC_v *a);
|
|
typedef arg_rr_dbm arg_ORR_zzi;
|
|
static bool trans_ORR_zzi(DisasContext *ctx, arg_ORR_zzi *a);
|
|
typedef arg_rr_dbm arg_EOR_zzi;
|
|
static bool trans_EOR_zzi(DisasContext *ctx, arg_EOR_zzi *a);
|
|
typedef arg_rr_dbm arg_AND_zzi;
|
|
static bool trans_AND_zzi(DisasContext *ctx, arg_AND_zzi *a);
|
|
typedef arg_disas_sve29 arg_DUPM;
|
|
static bool trans_DUPM(DisasContext *ctx, arg_DUPM *a);
|
|
typedef arg_rpri_esz arg_FCPY;
|
|
static bool trans_FCPY(DisasContext *ctx, arg_FCPY *a);
|
|
typedef arg_rpri_esz arg_CPY_m_i;
|
|
static bool trans_CPY_m_i(DisasContext *ctx, arg_CPY_m_i *a);
|
|
typedef arg_rpri_esz arg_CPY_z_i;
|
|
static bool trans_CPY_z_i(DisasContext *ctx, arg_CPY_z_i *a);
|
|
typedef arg_rrri arg_EXT;
|
|
static bool trans_EXT(DisasContext *ctx, arg_EXT *a);
|
|
typedef arg_rr_esz arg_DUP_s;
|
|
static bool trans_DUP_s(DisasContext *ctx, arg_DUP_s *a);
|
|
typedef arg_rri arg_DUP_x;
|
|
static bool trans_DUP_x(DisasContext *ctx, arg_DUP_x *a);
|
|
typedef arg_rrr_esz arg_INSR_f;
|
|
static bool trans_INSR_f(DisasContext *ctx, arg_INSR_f *a);
|
|
typedef arg_rrr_esz arg_INSR_r;
|
|
static bool trans_INSR_r(DisasContext *ctx, arg_INSR_r *a);
|
|
typedef arg_rr_esz arg_REV_v;
|
|
static bool trans_REV_v(DisasContext *ctx, arg_REV_v *a);
|
|
typedef arg_rrr_esz arg_TBL;
|
|
static bool trans_TBL(DisasContext *ctx, arg_TBL *a);
|
|
typedef arg_disas_sve30 arg_UNPK;
|
|
static bool trans_UNPK(DisasContext *ctx, arg_UNPK *a);
|
|
typedef arg_rrr_esz arg_ZIP1_p;
|
|
static bool trans_ZIP1_p(DisasContext *ctx, arg_ZIP1_p *a);
|
|
typedef arg_rrr_esz arg_ZIP2_p;
|
|
static bool trans_ZIP2_p(DisasContext *ctx, arg_ZIP2_p *a);
|
|
typedef arg_rrr_esz arg_UZP1_p;
|
|
static bool trans_UZP1_p(DisasContext *ctx, arg_UZP1_p *a);
|
|
typedef arg_rrr_esz arg_UZP2_p;
|
|
static bool trans_UZP2_p(DisasContext *ctx, arg_UZP2_p *a);
|
|
typedef arg_rrr_esz arg_TRN1_p;
|
|
static bool trans_TRN1_p(DisasContext *ctx, arg_TRN1_p *a);
|
|
typedef arg_rrr_esz arg_TRN2_p;
|
|
static bool trans_TRN2_p(DisasContext *ctx, arg_TRN2_p *a);
|
|
typedef arg_rr_esz arg_REV_p;
|
|
static bool trans_REV_p(DisasContext *ctx, arg_REV_p *a);
|
|
typedef arg_rr_esz arg_PUNPKLO;
|
|
static bool trans_PUNPKLO(DisasContext *ctx, arg_PUNPKLO *a);
|
|
typedef arg_rr_esz arg_PUNPKHI;
|
|
static bool trans_PUNPKHI(DisasContext *ctx, arg_PUNPKHI *a);
|
|
typedef arg_rrr_esz arg_ZIP1_z;
|
|
static bool trans_ZIP1_z(DisasContext *ctx, arg_ZIP1_z *a);
|
|
typedef arg_rrr_esz arg_ZIP2_z;
|
|
static bool trans_ZIP2_z(DisasContext *ctx, arg_ZIP2_z *a);
|
|
typedef arg_rrr_esz arg_UZP1_z;
|
|
static bool trans_UZP1_z(DisasContext *ctx, arg_UZP1_z *a);
|
|
typedef arg_rrr_esz arg_UZP2_z;
|
|
static bool trans_UZP2_z(DisasContext *ctx, arg_UZP2_z *a);
|
|
typedef arg_rrr_esz arg_TRN1_z;
|
|
static bool trans_TRN1_z(DisasContext *ctx, arg_TRN1_z *a);
|
|
typedef arg_rrr_esz arg_TRN2_z;
|
|
static bool trans_TRN2_z(DisasContext *ctx, arg_TRN2_z *a);
|
|
typedef arg_rpr_esz arg_COMPACT;
|
|
static bool trans_COMPACT(DisasContext *ctx, arg_COMPACT *a);
|
|
typedef arg_rprr_esz arg_CLASTA_z;
|
|
static bool trans_CLASTA_z(DisasContext *ctx, arg_CLASTA_z *a);
|
|
typedef arg_rprr_esz arg_CLASTB_z;
|
|
static bool trans_CLASTB_z(DisasContext *ctx, arg_CLASTB_z *a);
|
|
typedef arg_rpr_esz arg_CLASTA_v;
|
|
static bool trans_CLASTA_v(DisasContext *ctx, arg_CLASTA_v *a);
|
|
typedef arg_rpr_esz arg_CLASTB_v;
|
|
static bool trans_CLASTB_v(DisasContext *ctx, arg_CLASTB_v *a);
|
|
typedef arg_rpr_esz arg_CLASTA_r;
|
|
static bool trans_CLASTA_r(DisasContext *ctx, arg_CLASTA_r *a);
|
|
typedef arg_rpr_esz arg_CLASTB_r;
|
|
static bool trans_CLASTB_r(DisasContext *ctx, arg_CLASTB_r *a);
|
|
typedef arg_rpr_esz arg_LASTA_v;
|
|
static bool trans_LASTA_v(DisasContext *ctx, arg_LASTA_v *a);
|
|
typedef arg_rpr_esz arg_LASTB_v;
|
|
static bool trans_LASTB_v(DisasContext *ctx, arg_LASTB_v *a);
|
|
typedef arg_rpr_esz arg_LASTA_r;
|
|
static bool trans_LASTA_r(DisasContext *ctx, arg_LASTA_r *a);
|
|
typedef arg_rpr_esz arg_LASTB_r;
|
|
static bool trans_LASTB_r(DisasContext *ctx, arg_LASTB_r *a);
|
|
typedef arg_rpr_esz arg_CPY_m_v;
|
|
static bool trans_CPY_m_v(DisasContext *ctx, arg_CPY_m_v *a);
|
|
typedef arg_rpr_esz arg_CPY_m_r;
|
|
static bool trans_CPY_m_r(DisasContext *ctx, arg_CPY_m_r *a);
|
|
typedef arg_rpr_esz arg_REVB;
|
|
static bool trans_REVB(DisasContext *ctx, arg_REVB *a);
|
|
typedef arg_rpr_esz arg_REVH;
|
|
static bool trans_REVH(DisasContext *ctx, arg_REVH *a);
|
|
typedef arg_rpr_esz arg_REVW;
|
|
static bool trans_REVW(DisasContext *ctx, arg_REVW *a);
|
|
typedef arg_rpr_esz arg_RBIT;
|
|
static bool trans_RBIT(DisasContext *ctx, arg_RBIT *a);
|
|
typedef arg_rprr_esz arg_SPLICE;
|
|
static bool trans_SPLICE(DisasContext *ctx, arg_SPLICE *a);
|
|
typedef arg_rprr_esz arg_SEL_zpzz;
|
|
static bool trans_SEL_zpzz(DisasContext *ctx, arg_SEL_zpzz *a);
|
|
typedef arg_rprr_esz arg_CMPHS_ppzz;
|
|
static bool trans_CMPHS_ppzz(DisasContext *ctx, arg_CMPHS_ppzz *a);
|
|
typedef arg_rprr_esz arg_CMPHI_ppzz;
|
|
static bool trans_CMPHI_ppzz(DisasContext *ctx, arg_CMPHI_ppzz *a);
|
|
typedef arg_rprr_esz arg_CMPGE_ppzz;
|
|
static bool trans_CMPGE_ppzz(DisasContext *ctx, arg_CMPGE_ppzz *a);
|
|
typedef arg_rprr_esz arg_CMPGT_ppzz;
|
|
static bool trans_CMPGT_ppzz(DisasContext *ctx, arg_CMPGT_ppzz *a);
|
|
typedef arg_rprr_esz arg_CMPEQ_ppzz;
|
|
static bool trans_CMPEQ_ppzz(DisasContext *ctx, arg_CMPEQ_ppzz *a);
|
|
typedef arg_rprr_esz arg_CMPNE_ppzz;
|
|
static bool trans_CMPNE_ppzz(DisasContext *ctx, arg_CMPNE_ppzz *a);
|
|
typedef arg_rprr_esz arg_CMPEQ_ppzw;
|
|
static bool trans_CMPEQ_ppzw(DisasContext *ctx, arg_CMPEQ_ppzw *a);
|
|
typedef arg_rprr_esz arg_CMPNE_ppzw;
|
|
static bool trans_CMPNE_ppzw(DisasContext *ctx, arg_CMPNE_ppzw *a);
|
|
typedef arg_rprr_esz arg_CMPGE_ppzw;
|
|
static bool trans_CMPGE_ppzw(DisasContext *ctx, arg_CMPGE_ppzw *a);
|
|
typedef arg_rprr_esz arg_CMPGT_ppzw;
|
|
static bool trans_CMPGT_ppzw(DisasContext *ctx, arg_CMPGT_ppzw *a);
|
|
typedef arg_rprr_esz arg_CMPLT_ppzw;
|
|
static bool trans_CMPLT_ppzw(DisasContext *ctx, arg_CMPLT_ppzw *a);
|
|
typedef arg_rprr_esz arg_CMPLE_ppzw;
|
|
static bool trans_CMPLE_ppzw(DisasContext *ctx, arg_CMPLE_ppzw *a);
|
|
typedef arg_rprr_esz arg_CMPHS_ppzw;
|
|
static bool trans_CMPHS_ppzw(DisasContext *ctx, arg_CMPHS_ppzw *a);
|
|
typedef arg_rprr_esz arg_CMPHI_ppzw;
|
|
static bool trans_CMPHI_ppzw(DisasContext *ctx, arg_CMPHI_ppzw *a);
|
|
typedef arg_rprr_esz arg_CMPLO_ppzw;
|
|
static bool trans_CMPLO_ppzw(DisasContext *ctx, arg_CMPLO_ppzw *a);
|
|
typedef arg_rprr_esz arg_CMPLS_ppzw;
|
|
static bool trans_CMPLS_ppzw(DisasContext *ctx, arg_CMPLS_ppzw *a);
|
|
typedef arg_rpri_esz arg_CMPHS_ppzi;
|
|
static bool trans_CMPHS_ppzi(DisasContext *ctx, arg_CMPHS_ppzi *a);
|
|
typedef arg_rpri_esz arg_CMPHI_ppzi;
|
|
static bool trans_CMPHI_ppzi(DisasContext *ctx, arg_CMPHI_ppzi *a);
|
|
typedef arg_rpri_esz arg_CMPLO_ppzi;
|
|
static bool trans_CMPLO_ppzi(DisasContext *ctx, arg_CMPLO_ppzi *a);
|
|
typedef arg_rpri_esz arg_CMPLS_ppzi;
|
|
static bool trans_CMPLS_ppzi(DisasContext *ctx, arg_CMPLS_ppzi *a);
|
|
typedef arg_rpri_esz arg_CMPGE_ppzi;
|
|
static bool trans_CMPGE_ppzi(DisasContext *ctx, arg_CMPGE_ppzi *a);
|
|
typedef arg_rpri_esz arg_CMPGT_ppzi;
|
|
static bool trans_CMPGT_ppzi(DisasContext *ctx, arg_CMPGT_ppzi *a);
|
|
typedef arg_rpri_esz arg_CMPLT_ppzi;
|
|
static bool trans_CMPLT_ppzi(DisasContext *ctx, arg_CMPLT_ppzi *a);
|
|
typedef arg_rpri_esz arg_CMPLE_ppzi;
|
|
static bool trans_CMPLE_ppzi(DisasContext *ctx, arg_CMPLE_ppzi *a);
|
|
typedef arg_rpri_esz arg_CMPEQ_ppzi;
|
|
static bool trans_CMPEQ_ppzi(DisasContext *ctx, arg_CMPEQ_ppzi *a);
|
|
typedef arg_rpri_esz arg_CMPNE_ppzi;
|
|
static bool trans_CMPNE_ppzi(DisasContext *ctx, arg_CMPNE_ppzi *a);
|
|
typedef arg_rprr_s arg_AND_pppp;
|
|
static bool trans_AND_pppp(DisasContext *ctx, arg_AND_pppp *a);
|
|
typedef arg_rprr_s arg_BIC_pppp;
|
|
static bool trans_BIC_pppp(DisasContext *ctx, arg_BIC_pppp *a);
|
|
typedef arg_rprr_s arg_EOR_pppp;
|
|
static bool trans_EOR_pppp(DisasContext *ctx, arg_EOR_pppp *a);
|
|
typedef arg_rprr_s arg_SEL_pppp;
|
|
static bool trans_SEL_pppp(DisasContext *ctx, arg_SEL_pppp *a);
|
|
typedef arg_rprr_s arg_ORR_pppp;
|
|
static bool trans_ORR_pppp(DisasContext *ctx, arg_ORR_pppp *a);
|
|
typedef arg_rprr_s arg_ORN_pppp;
|
|
static bool trans_ORN_pppp(DisasContext *ctx, arg_ORN_pppp *a);
|
|
typedef arg_rprr_s arg_NOR_pppp;
|
|
static bool trans_NOR_pppp(DisasContext *ctx, arg_NOR_pppp *a);
|
|
typedef arg_rprr_s arg_NAND_pppp;
|
|
static bool trans_NAND_pppp(DisasContext *ctx, arg_NAND_pppp *a);
|
|
typedef arg_disas_sve31 arg_PTEST;
|
|
static bool trans_PTEST(DisasContext *ctx, arg_PTEST *a);
|
|
typedef arg_ptrue arg_PTRUE;
|
|
static bool trans_PTRUE(DisasContext *ctx, arg_PTRUE *a);
|
|
typedef arg_disas_sve32 arg_SETFFR;
|
|
static bool trans_SETFFR(DisasContext *ctx, arg_SETFFR *a);
|
|
typedef arg_disas_sve33 arg_PFALSE;
|
|
static bool trans_PFALSE(DisasContext *ctx, arg_PFALSE *a);
|
|
typedef arg_disas_sve34 arg_RDFFR_p;
|
|
static bool trans_RDFFR_p(DisasContext *ctx, arg_RDFFR_p *a);
|
|
typedef arg_disas_sve33 arg_RDFFR;
|
|
static bool trans_RDFFR(DisasContext *ctx, arg_RDFFR *a);
|
|
typedef arg_disas_sve35 arg_WRFFR;
|
|
static bool trans_WRFFR(DisasContext *ctx, arg_WRFFR *a);
|
|
typedef arg_rr_esz arg_PFIRST;
|
|
static bool trans_PFIRST(DisasContext *ctx, arg_PFIRST *a);
|
|
typedef arg_rr_esz arg_PNEXT;
|
|
static bool trans_PNEXT(DisasContext *ctx, arg_PNEXT *a);
|
|
typedef arg_rprr_s arg_BRKPA;
|
|
static bool trans_BRKPA(DisasContext *ctx, arg_BRKPA *a);
|
|
typedef arg_rprr_s arg_BRKPB;
|
|
static bool trans_BRKPB(DisasContext *ctx, arg_BRKPB *a);
|
|
typedef arg_rpr_s arg_BRKA_z;
|
|
static bool trans_BRKA_z(DisasContext *ctx, arg_BRKA_z *a);
|
|
typedef arg_rpr_s arg_BRKB_z;
|
|
static bool trans_BRKB_z(DisasContext *ctx, arg_BRKB_z *a);
|
|
typedef arg_rpr_s arg_BRKA_m;
|
|
static bool trans_BRKA_m(DisasContext *ctx, arg_BRKA_m *a);
|
|
typedef arg_rpr_s arg_BRKB_m;
|
|
static bool trans_BRKB_m(DisasContext *ctx, arg_BRKB_m *a);
|
|
typedef arg_rpr_s arg_BRKN;
|
|
static bool trans_BRKN(DisasContext *ctx, arg_BRKN *a);
|
|
typedef arg_rpr_esz arg_CNTP;
|
|
static bool trans_CNTP(DisasContext *ctx, arg_CNTP *a);
|
|
typedef arg_incdec_pred arg_INCDECP_r;
|
|
static bool trans_INCDECP_r(DisasContext *ctx, arg_INCDECP_r *a);
|
|
typedef arg_incdec2_pred arg_INCDECP_z;
|
|
static bool trans_INCDECP_z(DisasContext *ctx, arg_INCDECP_z *a);
|
|
typedef arg_incdec_pred arg_SINCDECP_r_32;
|
|
static bool trans_SINCDECP_r_32(DisasContext *ctx, arg_SINCDECP_r_32 *a);
|
|
typedef arg_incdec_pred arg_SINCDECP_r_64;
|
|
static bool trans_SINCDECP_r_64(DisasContext *ctx, arg_SINCDECP_r_64 *a);
|
|
typedef arg_incdec2_pred arg_SINCDECP_z;
|
|
static bool trans_SINCDECP_z(DisasContext *ctx, arg_SINCDECP_z *a);
|
|
typedef arg_disas_sve36 arg_CTERM;
|
|
static bool trans_CTERM(DisasContext *ctx, arg_CTERM *a);
|
|
typedef arg_disas_sve37 arg_WHILE;
|
|
static bool trans_WHILE(DisasContext *ctx, arg_WHILE *a);
|
|
typedef arg_disas_sve38 arg_FDUP;
|
|
static bool trans_FDUP(DisasContext *ctx, arg_FDUP *a);
|
|
typedef arg_disas_sve38 arg_DUP_i;
|
|
static bool trans_DUP_i(DisasContext *ctx, arg_DUP_i *a);
|
|
typedef arg_rri_esz arg_ADD_zzi;
|
|
static bool trans_ADD_zzi(DisasContext *ctx, arg_ADD_zzi *a);
|
|
typedef arg_rri_esz arg_SUB_zzi;
|
|
static bool trans_SUB_zzi(DisasContext *ctx, arg_SUB_zzi *a);
|
|
typedef arg_rri_esz arg_SUBR_zzi;
|
|
static bool trans_SUBR_zzi(DisasContext *ctx, arg_SUBR_zzi *a);
|
|
typedef arg_rri_esz arg_SQADD_zzi;
|
|
static bool trans_SQADD_zzi(DisasContext *ctx, arg_SQADD_zzi *a);
|
|
typedef arg_rri_esz arg_UQADD_zzi;
|
|
static bool trans_UQADD_zzi(DisasContext *ctx, arg_UQADD_zzi *a);
|
|
typedef arg_rri_esz arg_SQSUB_zzi;
|
|
static bool trans_SQSUB_zzi(DisasContext *ctx, arg_SQSUB_zzi *a);
|
|
typedef arg_rri_esz arg_UQSUB_zzi;
|
|
static bool trans_UQSUB_zzi(DisasContext *ctx, arg_UQSUB_zzi *a);
|
|
typedef arg_rri_esz arg_SMAX_zzi;
|
|
static bool trans_SMAX_zzi(DisasContext *ctx, arg_SMAX_zzi *a);
|
|
typedef arg_rri_esz arg_UMAX_zzi;
|
|
static bool trans_UMAX_zzi(DisasContext *ctx, arg_UMAX_zzi *a);
|
|
typedef arg_rri_esz arg_SMIN_zzi;
|
|
static bool trans_SMIN_zzi(DisasContext *ctx, arg_SMIN_zzi *a);
|
|
typedef arg_rri_esz arg_UMIN_zzi;
|
|
static bool trans_UMIN_zzi(DisasContext *ctx, arg_UMIN_zzi *a);
|
|
typedef arg_rri_esz arg_MUL_zzi;
|
|
static bool trans_MUL_zzi(DisasContext *ctx, arg_MUL_zzi *a);
|
|
typedef arg_disas_sve39 arg_DOT_zzz;
|
|
static bool trans_DOT_zzz(DisasContext *ctx, arg_DOT_zzz *a);
|
|
typedef arg_disas_sve40 arg_DOT_zzx;
|
|
static bool trans_DOT_zzx(DisasContext *ctx, arg_DOT_zzx *a);
|
|
typedef arg_disas_sve41 arg_FCADD;
|
|
static bool trans_FCADD(DisasContext *ctx, arg_FCADD *a);
|
|
typedef arg_disas_sve42 arg_FCMLA_zpzzz;
|
|
static bool trans_FCMLA_zpzzz(DisasContext *ctx, arg_FCMLA_zpzzz *a);
|
|
typedef arg_disas_sve43 arg_FCMLA_zzxz;
|
|
static bool trans_FCMLA_zzxz(DisasContext *ctx, arg_FCMLA_zzxz *a);
|
|
typedef arg_disas_sve44 arg_FMLA_zzxz;
|
|
static bool trans_FMLA_zzxz(DisasContext *ctx, arg_FMLA_zzxz *a);
|
|
typedef arg_disas_sve45 arg_FMUL_zzx;
|
|
static bool trans_FMUL_zzx(DisasContext *ctx, arg_FMUL_zzx *a);
|
|
typedef arg_rpr_esz arg_FADDV;
|
|
static bool trans_FADDV(DisasContext *ctx, arg_FADDV *a);
|
|
typedef arg_rpr_esz arg_FMAXNMV;
|
|
static bool trans_FMAXNMV(DisasContext *ctx, arg_FMAXNMV *a);
|
|
typedef arg_rpr_esz arg_FMINNMV;
|
|
static bool trans_FMINNMV(DisasContext *ctx, arg_FMINNMV *a);
|
|
typedef arg_rpr_esz arg_FMAXV;
|
|
static bool trans_FMAXV(DisasContext *ctx, arg_FMAXV *a);
|
|
typedef arg_rpr_esz arg_FMINV;
|
|
static bool trans_FMINV(DisasContext *ctx, arg_FMINV *a);
|
|
typedef arg_rr_esz arg_FRECPE;
|
|
static bool trans_FRECPE(DisasContext *ctx, arg_FRECPE *a);
|
|
typedef arg_rr_esz arg_FRSQRTE;
|
|
static bool trans_FRSQRTE(DisasContext *ctx, arg_FRSQRTE *a);
|
|
typedef arg_rpr_esz arg_FCMGE_ppz0;
|
|
static bool trans_FCMGE_ppz0(DisasContext *ctx, arg_FCMGE_ppz0 *a);
|
|
typedef arg_rpr_esz arg_FCMGT_ppz0;
|
|
static bool trans_FCMGT_ppz0(DisasContext *ctx, arg_FCMGT_ppz0 *a);
|
|
typedef arg_rpr_esz arg_FCMLT_ppz0;
|
|
static bool trans_FCMLT_ppz0(DisasContext *ctx, arg_FCMLT_ppz0 *a);
|
|
typedef arg_rpr_esz arg_FCMLE_ppz0;
|
|
static bool trans_FCMLE_ppz0(DisasContext *ctx, arg_FCMLE_ppz0 *a);
|
|
typedef arg_rpr_esz arg_FCMEQ_ppz0;
|
|
static bool trans_FCMEQ_ppz0(DisasContext *ctx, arg_FCMEQ_ppz0 *a);
|
|
typedef arg_rpr_esz arg_FCMNE_ppz0;
|
|
static bool trans_FCMNE_ppz0(DisasContext *ctx, arg_FCMNE_ppz0 *a);
|
|
typedef arg_rprr_esz arg_FADDA;
|
|
static bool trans_FADDA(DisasContext *ctx, arg_FADDA *a);
|
|
typedef arg_rrr_esz arg_FADD_zzz;
|
|
static bool trans_FADD_zzz(DisasContext *ctx, arg_FADD_zzz *a);
|
|
typedef arg_rrr_esz arg_FSUB_zzz;
|
|
static bool trans_FSUB_zzz(DisasContext *ctx, arg_FSUB_zzz *a);
|
|
typedef arg_rrr_esz arg_FMUL_zzz;
|
|
static bool trans_FMUL_zzz(DisasContext *ctx, arg_FMUL_zzz *a);
|
|
typedef arg_rrr_esz arg_FTSMUL;
|
|
static bool trans_FTSMUL(DisasContext *ctx, arg_FTSMUL *a);
|
|
typedef arg_rrr_esz arg_FRECPS;
|
|
static bool trans_FRECPS(DisasContext *ctx, arg_FRECPS *a);
|
|
typedef arg_rrr_esz arg_FRSQRTS;
|
|
static bool trans_FRSQRTS(DisasContext *ctx, arg_FRSQRTS *a);
|
|
typedef arg_rprr_esz arg_FADD_zpzz;
|
|
static bool trans_FADD_zpzz(DisasContext *ctx, arg_FADD_zpzz *a);
|
|
typedef arg_rprr_esz arg_FSUB_zpzz;
|
|
static bool trans_FSUB_zpzz(DisasContext *ctx, arg_FSUB_zpzz *a);
|
|
typedef arg_rprr_esz arg_FMUL_zpzz;
|
|
static bool trans_FMUL_zpzz(DisasContext *ctx, arg_FMUL_zpzz *a);
|
|
typedef arg_rprr_esz arg_FMAXNM_zpzz;
|
|
static bool trans_FMAXNM_zpzz(DisasContext *ctx, arg_FMAXNM_zpzz *a);
|
|
typedef arg_rprr_esz arg_FMINNM_zpzz;
|
|
static bool trans_FMINNM_zpzz(DisasContext *ctx, arg_FMINNM_zpzz *a);
|
|
typedef arg_rprr_esz arg_FMAX_zpzz;
|
|
static bool trans_FMAX_zpzz(DisasContext *ctx, arg_FMAX_zpzz *a);
|
|
typedef arg_rprr_esz arg_FMIN_zpzz;
|
|
static bool trans_FMIN_zpzz(DisasContext *ctx, arg_FMIN_zpzz *a);
|
|
typedef arg_rprr_esz arg_FABD;
|
|
static bool trans_FABD(DisasContext *ctx, arg_FABD *a);
|
|
typedef arg_rprr_esz arg_FSCALE;
|
|
static bool trans_FSCALE(DisasContext *ctx, arg_FSCALE *a);
|
|
typedef arg_rprr_esz arg_FMULX;
|
|
static bool trans_FMULX(DisasContext *ctx, arg_FMULX *a);
|
|
typedef arg_rprr_esz arg_FDIV;
|
|
static bool trans_FDIV(DisasContext *ctx, arg_FDIV *a);
|
|
typedef arg_rpri_esz arg_FADD_zpzi;
|
|
static bool trans_FADD_zpzi(DisasContext *ctx, arg_FADD_zpzi *a);
|
|
typedef arg_rpri_esz arg_FSUB_zpzi;
|
|
static bool trans_FSUB_zpzi(DisasContext *ctx, arg_FSUB_zpzi *a);
|
|
typedef arg_rpri_esz arg_FMUL_zpzi;
|
|
static bool trans_FMUL_zpzi(DisasContext *ctx, arg_FMUL_zpzi *a);
|
|
typedef arg_rpri_esz arg_FSUBR_zpzi;
|
|
static bool trans_FSUBR_zpzi(DisasContext *ctx, arg_FSUBR_zpzi *a);
|
|
typedef arg_rpri_esz arg_FMAXNM_zpzi;
|
|
static bool trans_FMAXNM_zpzi(DisasContext *ctx, arg_FMAXNM_zpzi *a);
|
|
typedef arg_rpri_esz arg_FMINNM_zpzi;
|
|
static bool trans_FMINNM_zpzi(DisasContext *ctx, arg_FMINNM_zpzi *a);
|
|
typedef arg_rpri_esz arg_FMAX_zpzi;
|
|
static bool trans_FMAX_zpzi(DisasContext *ctx, arg_FMAX_zpzi *a);
|
|
typedef arg_rpri_esz arg_FMIN_zpzi;
|
|
static bool trans_FMIN_zpzi(DisasContext *ctx, arg_FMIN_zpzi *a);
|
|
typedef arg_disas_sve46 arg_FTMAD;
|
|
static bool trans_FTMAD(DisasContext *ctx, arg_FTMAD *a);
|
|
typedef arg_rprrr_esz arg_FMLA_zpzzz;
|
|
static bool trans_FMLA_zpzzz(DisasContext *ctx, arg_FMLA_zpzzz *a);
|
|
typedef arg_rprrr_esz arg_FMLS_zpzzz;
|
|
static bool trans_FMLS_zpzzz(DisasContext *ctx, arg_FMLS_zpzzz *a);
|
|
typedef arg_rprrr_esz arg_FNMLA_zpzzz;
|
|
static bool trans_FNMLA_zpzzz(DisasContext *ctx, arg_FNMLA_zpzzz *a);
|
|
typedef arg_rprrr_esz arg_FNMLS_zpzzz;
|
|
static bool trans_FNMLS_zpzzz(DisasContext *ctx, arg_FNMLS_zpzzz *a);
|
|
typedef arg_rpr_esz arg_FCVT_sh;
|
|
static bool trans_FCVT_sh(DisasContext *ctx, arg_FCVT_sh *a);
|
|
typedef arg_rpr_esz arg_FCVT_hs;
|
|
static bool trans_FCVT_hs(DisasContext *ctx, arg_FCVT_hs *a);
|
|
typedef arg_rpr_esz arg_FCVT_dh;
|
|
static bool trans_FCVT_dh(DisasContext *ctx, arg_FCVT_dh *a);
|
|
typedef arg_rpr_esz arg_FCVT_hd;
|
|
static bool trans_FCVT_hd(DisasContext *ctx, arg_FCVT_hd *a);
|
|
typedef arg_rpr_esz arg_FCVT_ds;
|
|
static bool trans_FCVT_ds(DisasContext *ctx, arg_FCVT_ds *a);
|
|
typedef arg_rpr_esz arg_FCVT_sd;
|
|
static bool trans_FCVT_sd(DisasContext *ctx, arg_FCVT_sd *a);
|
|
typedef arg_rpr_esz arg_FCVTZS_hh;
|
|
static bool trans_FCVTZS_hh(DisasContext *ctx, arg_FCVTZS_hh *a);
|
|
typedef arg_rpr_esz arg_FCVTZU_hh;
|
|
static bool trans_FCVTZU_hh(DisasContext *ctx, arg_FCVTZU_hh *a);
|
|
typedef arg_rpr_esz arg_FCVTZS_hs;
|
|
static bool trans_FCVTZS_hs(DisasContext *ctx, arg_FCVTZS_hs *a);
|
|
typedef arg_rpr_esz arg_FCVTZU_hs;
|
|
static bool trans_FCVTZU_hs(DisasContext *ctx, arg_FCVTZU_hs *a);
|
|
typedef arg_rpr_esz arg_FCVTZS_hd;
|
|
static bool trans_FCVTZS_hd(DisasContext *ctx, arg_FCVTZS_hd *a);
|
|
typedef arg_rpr_esz arg_FCVTZU_hd;
|
|
static bool trans_FCVTZU_hd(DisasContext *ctx, arg_FCVTZU_hd *a);
|
|
typedef arg_rpr_esz arg_FCVTZS_ss;
|
|
static bool trans_FCVTZS_ss(DisasContext *ctx, arg_FCVTZS_ss *a);
|
|
typedef arg_rpr_esz arg_FCVTZU_ss;
|
|
static bool trans_FCVTZU_ss(DisasContext *ctx, arg_FCVTZU_ss *a);
|
|
typedef arg_rpr_esz arg_FCVTZS_ds;
|
|
static bool trans_FCVTZS_ds(DisasContext *ctx, arg_FCVTZS_ds *a);
|
|
typedef arg_rpr_esz arg_FCVTZU_ds;
|
|
static bool trans_FCVTZU_ds(DisasContext *ctx, arg_FCVTZU_ds *a);
|
|
typedef arg_rpr_esz arg_FCVTZS_sd;
|
|
static bool trans_FCVTZS_sd(DisasContext *ctx, arg_FCVTZS_sd *a);
|
|
typedef arg_rpr_esz arg_FCVTZU_sd;
|
|
static bool trans_FCVTZU_sd(DisasContext *ctx, arg_FCVTZU_sd *a);
|
|
typedef arg_rpr_esz arg_FCVTZS_dd;
|
|
static bool trans_FCVTZS_dd(DisasContext *ctx, arg_FCVTZS_dd *a);
|
|
typedef arg_rpr_esz arg_FCVTZU_dd;
|
|
static bool trans_FCVTZU_dd(DisasContext *ctx, arg_FCVTZU_dd *a);
|
|
typedef arg_rpr_esz arg_FRINTN;
|
|
static bool trans_FRINTN(DisasContext *ctx, arg_FRINTN *a);
|
|
typedef arg_rpr_esz arg_FRINTP;
|
|
static bool trans_FRINTP(DisasContext *ctx, arg_FRINTP *a);
|
|
typedef arg_rpr_esz arg_FRINTM;
|
|
static bool trans_FRINTM(DisasContext *ctx, arg_FRINTM *a);
|
|
typedef arg_rpr_esz arg_FRINTZ;
|
|
static bool trans_FRINTZ(DisasContext *ctx, arg_FRINTZ *a);
|
|
typedef arg_rpr_esz arg_FRINTA;
|
|
static bool trans_FRINTA(DisasContext *ctx, arg_FRINTA *a);
|
|
typedef arg_rpr_esz arg_FRINTX;
|
|
static bool trans_FRINTX(DisasContext *ctx, arg_FRINTX *a);
|
|
typedef arg_rpr_esz arg_FRINTI;
|
|
static bool trans_FRINTI(DisasContext *ctx, arg_FRINTI *a);
|
|
typedef arg_rpr_esz arg_FRECPX;
|
|
static bool trans_FRECPX(DisasContext *ctx, arg_FRECPX *a);
|
|
typedef arg_rpr_esz arg_FSQRT;
|
|
static bool trans_FSQRT(DisasContext *ctx, arg_FSQRT *a);
|
|
typedef arg_rpr_esz arg_SCVTF_hh;
|
|
static bool trans_SCVTF_hh(DisasContext *ctx, arg_SCVTF_hh *a);
|
|
typedef arg_rpr_esz arg_SCVTF_sh;
|
|
static bool trans_SCVTF_sh(DisasContext *ctx, arg_SCVTF_sh *a);
|
|
typedef arg_rpr_esz arg_SCVTF_dh;
|
|
static bool trans_SCVTF_dh(DisasContext *ctx, arg_SCVTF_dh *a);
|
|
typedef arg_rpr_esz arg_SCVTF_ss;
|
|
static bool trans_SCVTF_ss(DisasContext *ctx, arg_SCVTF_ss *a);
|
|
typedef arg_rpr_esz arg_SCVTF_sd;
|
|
static bool trans_SCVTF_sd(DisasContext *ctx, arg_SCVTF_sd *a);
|
|
typedef arg_rpr_esz arg_SCVTF_ds;
|
|
static bool trans_SCVTF_ds(DisasContext *ctx, arg_SCVTF_ds *a);
|
|
typedef arg_rpr_esz arg_SCVTF_dd;
|
|
static bool trans_SCVTF_dd(DisasContext *ctx, arg_SCVTF_dd *a);
|
|
typedef arg_rpr_esz arg_UCVTF_hh;
|
|
static bool trans_UCVTF_hh(DisasContext *ctx, arg_UCVTF_hh *a);
|
|
typedef arg_rpr_esz arg_UCVTF_sh;
|
|
static bool trans_UCVTF_sh(DisasContext *ctx, arg_UCVTF_sh *a);
|
|
typedef arg_rpr_esz arg_UCVTF_dh;
|
|
static bool trans_UCVTF_dh(DisasContext *ctx, arg_UCVTF_dh *a);
|
|
typedef arg_rpr_esz arg_UCVTF_ss;
|
|
static bool trans_UCVTF_ss(DisasContext *ctx, arg_UCVTF_ss *a);
|
|
typedef arg_rpr_esz arg_UCVTF_sd;
|
|
static bool trans_UCVTF_sd(DisasContext *ctx, arg_UCVTF_sd *a);
|
|
typedef arg_rpr_esz arg_UCVTF_ds;
|
|
static bool trans_UCVTF_ds(DisasContext *ctx, arg_UCVTF_ds *a);
|
|
typedef arg_rpr_esz arg_UCVTF_dd;
|
|
static bool trans_UCVTF_dd(DisasContext *ctx, arg_UCVTF_dd *a);
|
|
typedef arg_rri arg_LDR_pri;
|
|
static bool trans_LDR_pri(DisasContext *ctx, arg_LDR_pri *a);
|
|
typedef arg_rri arg_LDR_zri;
|
|
static bool trans_LDR_zri(DisasContext *ctx, arg_LDR_zri *a);
|
|
typedef arg_rpri_load arg_LD1R_zpri;
|
|
static bool trans_LD1R_zpri(DisasContext *ctx, arg_LD1R_zpri *a);
|
|
typedef arg_rprr_gather_load arg_LD1_zprz;
|
|
static bool trans_LD1_zprz(DisasContext *ctx, arg_LD1_zprz *a);
|
|
typedef arg_rpri_gather_load arg_LD1_zpiz;
|
|
static bool trans_LD1_zpiz(DisasContext *ctx, arg_LD1_zpiz *a);
|
|
typedef arg_rprr_load arg_LD_zprr;
|
|
static bool trans_LD_zprr(DisasContext *ctx, arg_LD_zprr *a);
|
|
typedef arg_rprr_load arg_LDFF1_zprr;
|
|
static bool trans_LDFF1_zprr(DisasContext *ctx, arg_LDFF1_zprr *a);
|
|
typedef arg_rpri_load arg_LD_zpri;
|
|
static bool trans_LD_zpri(DisasContext *ctx, arg_LD_zpri *a);
|
|
typedef arg_rpri_load arg_LDNF1_zpri;
|
|
static bool trans_LDNF1_zpri(DisasContext *ctx, arg_LDNF1_zpri *a);
|
|
typedef arg_rprr_load arg_LD1RQ_zprr;
|
|
static bool trans_LD1RQ_zprr(DisasContext *ctx, arg_LD1RQ_zprr *a);
|
|
typedef arg_rpri_load arg_LD1RQ_zpri;
|
|
static bool trans_LD1RQ_zpri(DisasContext *ctx, arg_LD1RQ_zpri *a);
|
|
typedef arg_disas_sve32 arg_PRF;
|
|
static bool trans_PRF(DisasContext *ctx, arg_PRF *a);
|
|
typedef arg_disas_sve47 arg_PRF_rr;
|
|
static bool trans_PRF_rr(DisasContext *ctx, arg_PRF_rr *a);
|
|
typedef arg_rri arg_STR_pri;
|
|
static bool trans_STR_pri(DisasContext *ctx, arg_STR_pri *a);
|
|
typedef arg_rri arg_STR_zri;
|
|
static bool trans_STR_zri(DisasContext *ctx, arg_STR_zri *a);
|
|
typedef arg_rpri_store arg_ST_zpri;
|
|
static bool trans_ST_zpri(DisasContext *ctx, arg_ST_zpri *a);
|
|
typedef arg_rprr_store arg_ST_zprr;
|
|
static bool trans_ST_zprr(DisasContext *ctx, arg_ST_zprr *a);
|
|
typedef arg_rprr_scatter_store arg_ST1_zprz;
|
|
static bool trans_ST1_zprz(DisasContext *ctx, arg_ST1_zprz *a);
|
|
typedef arg_rpri_scatter_store arg_ST1_zpiz;
|
|
static bool trans_ST1_zpiz(DisasContext *ctx, arg_ST1_zpiz *a);
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_55(DisasContext *ctx, arg_disas_sve25 *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->imm2 = sextract32(insn, 16, 5);
|
|
a->imm1 = sextract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_56(DisasContext *ctx, arg_disas_sve26 *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->imm = sextract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_57(DisasContext *ctx, arg_rri_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->imm = sextract32(insn, 16, 5);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_58(DisasContext *ctx, arg_disas_sve27 *a, uint32_t insn)
|
|
{
|
|
a->imm = sextract32(insn, 5, 6);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_59(DisasContext *ctx, arg_disas_sve28 *a, uint32_t insn)
|
|
{
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_60(DisasContext *ctx, arg_disas_sve29 *a, uint32_t insn)
|
|
{
|
|
a->dbm = extract32(insn, 5, 13);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_61(DisasContext *ctx, arg_rrri *a, uint32_t insn)
|
|
{
|
|
a->rm = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
a->imm = deposit32(extract32(insn, 10, 3), 3, 29, extract32(insn, 16, 5));
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_62(DisasContext *ctx, arg_rri *a, uint32_t insn)
|
|
{
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->imm = deposit32(extract32(insn, 16, 5), 5, 27, extract32(insn, 22, 2));
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_63(DisasContext *ctx, arg_disas_sve30 *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->u = extract32(insn, 17, 1);
|
|
a->h = extract32(insn, 16, 1);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_64(DisasContext *ctx, arg_disas_sve31 *a, uint32_t insn)
|
|
{
|
|
a->pg = extract32(insn, 10, 4);
|
|
a->rn = extract32(insn, 5, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_65(DisasContext *ctx, arg_ptrue *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->s = extract32(insn, 16, 1);
|
|
a->pat = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_66(DisasContext *ctx, arg_disas_sve32 *a, uint32_t insn)
|
|
{
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_67(DisasContext *ctx, arg_disas_sve33 *a, uint32_t insn)
|
|
{
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_68(DisasContext *ctx, arg_disas_sve34 *a, uint32_t insn)
|
|
{
|
|
a->s = extract32(insn, 22, 1);
|
|
a->pg = extract32(insn, 5, 4);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_69(DisasContext *ctx, arg_disas_sve35 *a, uint32_t insn)
|
|
{
|
|
a->rn = extract32(insn, 5, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_70(DisasContext *ctx, arg_disas_sve36 *a, uint32_t insn)
|
|
{
|
|
a->sf = extract32(insn, 22, 1);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->ne = extract32(insn, 4, 1);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_71(DisasContext *ctx, arg_disas_sve37 *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->sf = extract32(insn, 12, 1);
|
|
a->u = extract32(insn, 11, 1);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->eq = extract32(insn, 4, 1);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_72(DisasContext *ctx, arg_disas_sve38 *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->imm = extract32(insn, 5, 8);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_73(DisasContext *ctx, arg_disas_sve38 *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->imm = expand_imm_sh8s(ctx, extract32(insn, 5, 9));
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_74(DisasContext *ctx, arg_disas_sve39 *a, uint32_t insn)
|
|
{
|
|
a->sz = extract32(insn, 22, 1);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->u = extract32(insn, 10, 1);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->ra = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_75(DisasContext *ctx, arg_disas_sve40 *a, uint32_t insn)
|
|
{
|
|
a->index = extract32(insn, 19, 2);
|
|
a->rm = extract32(insn, 16, 3);
|
|
a->u = extract32(insn, 10, 1);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->sz = 0;
|
|
a->ra = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_76(DisasContext *ctx, arg_disas_sve40 *a, uint32_t insn)
|
|
{
|
|
a->index = extract32(insn, 20, 1);
|
|
a->rm = extract32(insn, 16, 4);
|
|
a->u = extract32(insn, 10, 1);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->sz = 1;
|
|
a->ra = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_77(DisasContext *ctx, arg_disas_sve41 *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rot = extract32(insn, 16, 1);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rm = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_78(DisasContext *ctx, arg_disas_sve42 *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->rot = extract32(insn, 13, 2);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->ra = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_79(DisasContext *ctx, arg_disas_sve43 *a, uint32_t insn)
|
|
{
|
|
a->index = extract32(insn, 19, 2);
|
|
a->rm = extract32(insn, 16, 3);
|
|
a->rot = extract32(insn, 10, 2);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->ra = extract32(insn, 0, 5);
|
|
a->esz = 1;
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_80(DisasContext *ctx, arg_disas_sve43 *a, uint32_t insn)
|
|
{
|
|
a->index = extract32(insn, 20, 1);
|
|
a->rm = extract32(insn, 16, 4);
|
|
a->rot = extract32(insn, 10, 2);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->ra = extract32(insn, 0, 5);
|
|
a->esz = 2;
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_81(DisasContext *ctx, arg_disas_sve44 *a, uint32_t insn)
|
|
{
|
|
a->rm = extract32(insn, 16, 3);
|
|
a->sub = extract32(insn, 10, 1);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->ra = extract32(insn, 0, 5);
|
|
a->index = deposit32(extract32(insn, 19, 2), 2, 30, extract32(insn, 22, 1));
|
|
a->esz = 1;
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_82(DisasContext *ctx, arg_disas_sve44 *a, uint32_t insn)
|
|
{
|
|
a->index = extract32(insn, 19, 2);
|
|
a->rm = extract32(insn, 16, 3);
|
|
a->sub = extract32(insn, 10, 1);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->ra = extract32(insn, 0, 5);
|
|
a->esz = 2;
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_83(DisasContext *ctx, arg_disas_sve44 *a, uint32_t insn)
|
|
{
|
|
a->index = extract32(insn, 20, 1);
|
|
a->rm = extract32(insn, 16, 4);
|
|
a->sub = extract32(insn, 10, 1);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->ra = extract32(insn, 0, 5);
|
|
a->esz = 3;
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_84(DisasContext *ctx, arg_disas_sve45 *a, uint32_t insn)
|
|
{
|
|
a->rm = extract32(insn, 16, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->index = deposit32(extract32(insn, 19, 2), 2, 30, extract32(insn, 22, 1));
|
|
a->esz = 1;
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_85(DisasContext *ctx, arg_disas_sve45 *a, uint32_t insn)
|
|
{
|
|
a->index = extract32(insn, 19, 2);
|
|
a->rm = extract32(insn, 16, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->esz = 2;
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_86(DisasContext *ctx, arg_disas_sve45 *a, uint32_t insn)
|
|
{
|
|
a->index = extract32(insn, 20, 1);
|
|
a->rm = extract32(insn, 16, 4);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->esz = 3;
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_87(DisasContext *ctx, arg_disas_sve46 *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->imm = extract32(insn, 16, 3);
|
|
a->rm = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_88(DisasContext *ctx, arg_rpri_load *a, uint32_t insn)
|
|
{
|
|
a->imm = extract32(insn, 16, 6);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->dtype = deposit32(extract32(insn, 13, 2), 2, 30, extract32(insn, 23, 2));
|
|
a->nreg = 0;
|
|
}
|
|
|
|
static void disas_sve_extract_disas_sve_Fmt_89(DisasContext *ctx, arg_disas_sve47 *a, uint32_t insn)
|
|
{
|
|
a->rm = extract32(insn, 16, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_incdec2_cnt(DisasContext *ctx, arg_incdec2_cnt *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pat = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->imm = plus1(ctx, extract32(insn, 16, 4));
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_incdec2_pred(DisasContext *ctx, arg_incdec2_pred *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pg = extract32(insn, 5, 4);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_incdec_cnt(DisasContext *ctx, arg_incdec_cnt *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pat = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->imm = plus1(ctx, extract32(insn, 16, 4));
|
|
}
|
|
|
|
static void disas_sve_extract_incdec_pred(DisasContext *ctx, arg_incdec_pred *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pg = extract32(insn, 5, 4);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_pd_pg_pn_pm_s(DisasContext *ctx, arg_rprr_s *a, uint32_t insn)
|
|
{
|
|
a->s = extract32(insn, 22, 1);
|
|
a->rm = extract32(insn, 16, 4);
|
|
a->pg = extract32(insn, 10, 4);
|
|
a->rn = extract32(insn, 5, 4);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_pd_pg_pn_s(DisasContext *ctx, arg_rpr_s *a, uint32_t insn)
|
|
{
|
|
a->s = extract32(insn, 22, 1);
|
|
a->pg = extract32(insn, 10, 4);
|
|
a->rn = extract32(insn, 5, 4);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_pd_pg_pn_s0(DisasContext *ctx, arg_rpr_s *a, uint32_t insn)
|
|
{
|
|
a->pg = extract32(insn, 10, 4);
|
|
a->rn = extract32(insn, 5, 4);
|
|
a->rd = extract32(insn, 0, 4);
|
|
a->s = 0;
|
|
}
|
|
|
|
static void disas_sve_extract_pd_pg_rn(DisasContext *ctx, arg_rpr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_pd_pg_rn_i5(DisasContext *ctx, arg_rpri_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->imm = sextract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_pd_pg_rn_i7(DisasContext *ctx, arg_rpri_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->imm = extract32(insn, 14, 7);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_pd_pg_rn_rm(DisasContext *ctx, arg_rprr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_pd_pn(DisasContext *ctx, arg_rr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rn = extract32(insn, 5, 4);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_pd_pn_e0(DisasContext *ctx, arg_rr_esz *a, uint32_t insn)
|
|
{
|
|
a->rn = extract32(insn, 5, 4);
|
|
a->rd = extract32(insn, 0, 4);
|
|
a->esz = 0;
|
|
}
|
|
|
|
static void disas_sve_extract_pd_pn_pm(DisasContext *ctx, arg_rrr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rm = extract32(insn, 16, 4);
|
|
a->rn = extract32(insn, 5, 4);
|
|
a->rd = extract32(insn, 0, 4);
|
|
}
|
|
|
|
static void disas_sve_extract_pd_rn_i9(DisasContext *ctx, arg_rri *a, uint32_t insn)
|
|
{
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 4);
|
|
a->imm = deposit32(extract32(insn, 10, 3), 3, 29, sextract32(insn, 16, 6));
|
|
}
|
|
|
|
static void disas_sve_extract_rd_pg4_pn(DisasContext *ctx, arg_rpr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pg = extract32(insn, 10, 4);
|
|
a->rn = extract32(insn, 5, 4);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rd_pg4_rn_rm(DisasContext *ctx, arg_rprr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 4);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rd_pg_rn(DisasContext *ctx, arg_rpr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rd_pg_rn_e0(DisasContext *ctx, arg_rpr_esz *a, uint32_t insn)
|
|
{
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->esz = 0;
|
|
}
|
|
|
|
static void disas_sve_extract_rd_rn(DisasContext *ctx, arg_rr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rd_rn_i6(DisasContext *ctx, arg_rri *a, uint32_t insn)
|
|
{
|
|
a->rn = extract32(insn, 16, 5);
|
|
a->imm = sextract32(insn, 5, 6);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rd_rn_i9(DisasContext *ctx, arg_rri *a, uint32_t insn)
|
|
{
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->imm = deposit32(extract32(insn, 10, 3), 3, 29, sextract32(insn, 16, 6));
|
|
}
|
|
|
|
static void disas_sve_extract_rd_rn_msz_rm(DisasContext *ctx, arg_rrri *a, uint32_t insn)
|
|
{
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->imm = extract32(insn, 10, 2);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rd_rn_rm(DisasContext *ctx, arg_rrr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rd_rn_rm_e0(DisasContext *ctx, arg_rrr_esz *a, uint32_t insn)
|
|
{
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->esz = 0;
|
|
}
|
|
|
|
static void disas_sve_extract_rd_rn_tszimm(DisasContext *ctx, arg_rri_esz *a, uint32_t insn)
|
|
{
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->esz = tszimm_esz(ctx, deposit32(extract32(insn, 16, 5), 5, 27, extract32(insn, 22, 2)));
|
|
}
|
|
|
|
static void disas_sve_extract_rda_pg_rn_rm(DisasContext *ctx, arg_rprrr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->ra = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdm_pg_rn(DisasContext *ctx, arg_rprr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rm = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_dbm(DisasContext *ctx, arg_rr_dbm *a, uint32_t insn)
|
|
{
|
|
a->dbm = extract32(insn, 5, 13);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_i1(DisasContext *ctx, arg_rpri_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->imm = extract32(insn, 5, 1);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_i8s(DisasContext *ctx, arg_rri_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->imm = sextract32(insn, 5, 8);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_i8u(DisasContext *ctx, arg_rri_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->imm = extract32(insn, 5, 8);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_pg4(DisasContext *ctx, arg_rpri_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pg = extract32(insn, 16, 4);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_pg_ra_rm(DisasContext *ctx, arg_rprrr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->ra = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_pg_rm(DisasContext *ctx, arg_rprr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rm = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_pg_rm_ra(DisasContext *ctx, arg_rprrr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->ra = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rm = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_pg_tszimm(DisasContext *ctx, arg_rpri_esz *a, uint32_t insn)
|
|
{
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
a->esz = tszimm_esz(ctx, deposit32(extract32(insn, 5, 5), 5, 27, extract32(insn, 22, 2)));
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_rm(DisasContext *ctx, arg_rrr_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rm = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rdn_sh_i8u(DisasContext *ctx, arg_rri_esz *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 22, 2);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->rn = extract32(insn, 0, 5);
|
|
a->imm = expand_imm_sh8u(ctx, extract32(insn, 5, 9));
|
|
}
|
|
|
|
static void disas_sve_extract_rpri_g_load(DisasContext *ctx, arg_rpri_gather_load *a, uint32_t insn)
|
|
{
|
|
a->msz = extract32(insn, 23, 2);
|
|
a->imm = extract32(insn, 16, 5);
|
|
a->u = extract32(insn, 14, 1);
|
|
a->ff = extract32(insn, 13, 1);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rpri_load_dt(DisasContext *ctx, arg_rpri_load *a, uint32_t insn)
|
|
{
|
|
a->dtype = extract32(insn, 21, 4);
|
|
a->imm = sextract32(insn, 16, 4);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rpri_load_msz(DisasContext *ctx, arg_rpri_load *a, uint32_t insn)
|
|
{
|
|
a->imm = sextract32(insn, 16, 4);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->dtype = msz_dtype(ctx, extract32(insn, 23, 2));
|
|
}
|
|
|
|
static void disas_sve_extract_rpri_scatter_store(DisasContext *ctx, arg_rpri_scatter_store *a, uint32_t insn)
|
|
{
|
|
a->msz = extract32(insn, 23, 2);
|
|
a->imm = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rpri_store_msz(DisasContext *ctx, arg_rpri_store *a, uint32_t insn)
|
|
{
|
|
a->msz = extract32(insn, 23, 2);
|
|
a->imm = sextract32(insn, 16, 4);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_g_load_sc(DisasContext *ctx, arg_rprr_gather_load *a, uint32_t insn)
|
|
{
|
|
a->scale = extract32(insn, 21, 1);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->ff = extract32(insn, 13, 1);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->xs = 2;
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_g_load_u(DisasContext *ctx, arg_rprr_gather_load *a, uint32_t insn)
|
|
{
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->u = extract32(insn, 14, 1);
|
|
a->ff = extract32(insn, 13, 1);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->xs = 2;
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_g_load_u_sc(DisasContext *ctx, arg_rprr_gather_load *a, uint32_t insn)
|
|
{
|
|
a->scale = extract32(insn, 21, 1);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->u = extract32(insn, 14, 1);
|
|
a->ff = extract32(insn, 13, 1);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->xs = 2;
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_g_load_xs_sc(DisasContext *ctx, arg_rprr_gather_load *a, uint32_t insn)
|
|
{
|
|
a->xs = extract32(insn, 22, 1);
|
|
a->scale = extract32(insn, 21, 1);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->ff = extract32(insn, 13, 1);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_g_load_xs_u(DisasContext *ctx, arg_rprr_gather_load *a, uint32_t insn)
|
|
{
|
|
a->xs = extract32(insn, 22, 1);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->u = extract32(insn, 14, 1);
|
|
a->ff = extract32(insn, 13, 1);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_g_load_xs_u_sc(DisasContext *ctx, arg_rprr_gather_load *a, uint32_t insn)
|
|
{
|
|
a->xs = extract32(insn, 22, 1);
|
|
a->scale = extract32(insn, 21, 1);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->u = extract32(insn, 14, 1);
|
|
a->ff = extract32(insn, 13, 1);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_load_dt(DisasContext *ctx, arg_rprr_load *a, uint32_t insn)
|
|
{
|
|
a->dtype = extract32(insn, 21, 4);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_load_msz(DisasContext *ctx, arg_rprr_load *a, uint32_t insn)
|
|
{
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->dtype = msz_dtype(ctx, extract32(insn, 23, 2));
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_scatter_store(DisasContext *ctx, arg_rprr_scatter_store *a, uint32_t insn)
|
|
{
|
|
a->msz = extract32(insn, 23, 2);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_store(DisasContext *ctx, arg_rprr_store *a, uint32_t insn)
|
|
{
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
}
|
|
|
|
static void disas_sve_extract_rprr_store_esz_n0(DisasContext *ctx, arg_rprr_store *a, uint32_t insn)
|
|
{
|
|
a->esz = extract32(insn, 21, 2);
|
|
a->rm = extract32(insn, 16, 5);
|
|
a->pg = extract32(insn, 10, 3);
|
|
a->rn = extract32(insn, 5, 5);
|
|
a->rd = extract32(insn, 0, 5);
|
|
a->nreg = 0;
|
|
}
|
|
|
|
bool disas_sve(DisasContext *ctx, uint32_t insn)
|
|
{
|
|
union {
|
|
arg_disas_sve25 f_disas_sve25;
|
|
arg_disas_sve26 f_disas_sve26;
|
|
arg_disas_sve27 f_disas_sve27;
|
|
arg_disas_sve28 f_disas_sve28;
|
|
arg_disas_sve29 f_disas_sve29;
|
|
arg_disas_sve30 f_disas_sve30;
|
|
arg_disas_sve31 f_disas_sve31;
|
|
arg_disas_sve32 f_disas_sve32;
|
|
arg_disas_sve33 f_disas_sve33;
|
|
arg_disas_sve34 f_disas_sve34;
|
|
arg_disas_sve35 f_disas_sve35;
|
|
arg_disas_sve36 f_disas_sve36;
|
|
arg_disas_sve37 f_disas_sve37;
|
|
arg_disas_sve38 f_disas_sve38;
|
|
arg_disas_sve39 f_disas_sve39;
|
|
arg_disas_sve40 f_disas_sve40;
|
|
arg_disas_sve41 f_disas_sve41;
|
|
arg_disas_sve42 f_disas_sve42;
|
|
arg_disas_sve43 f_disas_sve43;
|
|
arg_disas_sve44 f_disas_sve44;
|
|
arg_disas_sve45 f_disas_sve45;
|
|
arg_disas_sve46 f_disas_sve46;
|
|
arg_disas_sve47 f_disas_sve47;
|
|
arg_incdec2_cnt f_incdec2_cnt;
|
|
arg_incdec2_pred f_incdec2_pred;
|
|
arg_incdec_cnt f_incdec_cnt;
|
|
arg_incdec_pred f_incdec_pred;
|
|
arg_ptrue f_ptrue;
|
|
arg_rpr_esz f_rpr_esz;
|
|
arg_rpr_s f_rpr_s;
|
|
arg_rpri_esz f_rpri_esz;
|
|
arg_rpri_gather_load f_rpri_gather_load;
|
|
arg_rpri_load f_rpri_load;
|
|
arg_rpri_scatter_store f_rpri_scatter_store;
|
|
arg_rpri_store f_rpri_store;
|
|
arg_rprr_esz f_rprr_esz;
|
|
arg_rprr_gather_load f_rprr_gather_load;
|
|
arg_rprr_load f_rprr_load;
|
|
arg_rprr_s f_rprr_s;
|
|
arg_rprr_scatter_store f_rprr_scatter_store;
|
|
arg_rprr_store f_rprr_store;
|
|
arg_rprrr_esz f_rprrr_esz;
|
|
arg_rr_dbm f_rr_dbm;
|
|
arg_rr_esz f_rr_esz;
|
|
arg_rri f_rri;
|
|
arg_rri_esz f_rri_esz;
|
|
arg_rrr_esz f_rrr_esz;
|
|
arg_rrri f_rrri;
|
|
} u;
|
|
|
|
switch ((insn >> 25) & 0x7f) {
|
|
case 0x2:
|
|
/* 0000010. ........ ........ ........ */
|
|
switch (insn & 0x01200000) {
|
|
case 0x00000000:
|
|
/* 00000100 ..0..... ........ ........ */
|
|
switch ((insn >> 13) & 0x7) {
|
|
case 0x0:
|
|
/* 00000100 ..0..... 000..... ........ */
|
|
switch ((insn >> 16) & 0x1f) {
|
|
case 0x0:
|
|
/* 00000100 ..000000 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:245 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_ADD_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..000001 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:246 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_SUB_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00000100 ..000011 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:247 */
|
|
disas_sve_extract_rdm_pg_rn(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_SUB_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x8:
|
|
/* 00000100 ..001000 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:250 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_SMAX_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x9:
|
|
/* 00000100 ..001001 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:251 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_UMAX_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0xa:
|
|
/* 00000100 ..001010 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:252 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_SMIN_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0xb:
|
|
/* 00000100 ..001011 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:253 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_UMIN_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0xc:
|
|
/* 00000100 ..001100 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:254 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_SABD_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0xd:
|
|
/* 00000100 ..001101 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:255 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_UABD_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x10:
|
|
/* 00000100 ..010000 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:258 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_MUL_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x12:
|
|
/* 00000100 ..010010 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:259 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_SMULH_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x13:
|
|
/* 00000100 ..010011 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:260 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_UMULH_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x14:
|
|
/* 00000100 ..010100 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:262 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_SDIV_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x15:
|
|
/* 00000100 ..010101 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:263 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_UDIV_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x16:
|
|
/* 00000100 ..010110 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:264 */
|
|
disas_sve_extract_rdm_pg_rn(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_SDIV_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x17:
|
|
/* 00000100 ..010111 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:265 */
|
|
disas_sve_extract_rdm_pg_rn(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_UDIV_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x18:
|
|
/* 00000100 ..011000 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:239 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_ORR_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x19:
|
|
/* 00000100 ..011001 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:240 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_EOR_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x1a:
|
|
/* 00000100 ..011010 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:241 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_AND_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x1b:
|
|
/* 00000100 ..011011 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:242 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_BIC_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..0..... 001..... ........ */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 16) & 0x1f) {
|
|
case 0x0:
|
|
/* 00000100 ..000000 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:281 */
|
|
if (trans_SADDV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..000001 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:280 */
|
|
if (trans_UADDV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x8:
|
|
/* 00000100 ..001000 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:284 */
|
|
if (trans_SMAXV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x9:
|
|
/* 00000100 ..001001 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:285 */
|
|
if (trans_UMAXV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0xa:
|
|
/* 00000100 ..001010 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:286 */
|
|
if (trans_SMINV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0xb:
|
|
/* 00000100 ..001011 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:287 */
|
|
if (trans_UMINV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x10:
|
|
/* 00000100 ..010000 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:275 */
|
|
if (trans_MOVPRFX_z(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x11:
|
|
/* 00000100 ..010001 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:276 */
|
|
if (trans_MOVPRFX_m(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x18:
|
|
/* 00000100 ..011000 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:270 */
|
|
if (trans_ORV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x19:
|
|
/* 00000100 ..011001 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:271 */
|
|
if (trans_EORV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x1a:
|
|
/* 00000100 ..011010 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:272 */
|
|
if (trans_ANDV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x2:
|
|
/* 00000100 ..0..... 010..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:352 */
|
|
disas_sve_extract_rda_pg_rn_rm(ctx, &u.f_rprrr_esz, insn);
|
|
if (trans_MLA(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00000100 ..0..... 011..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:353 */
|
|
disas_sve_extract_rda_pg_rn_rm(ctx, &u.f_rprrr_esz, insn);
|
|
if (trans_MLS(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
case 0x4:
|
|
/* 00000100 ..0..... 100..... ........ */
|
|
switch ((insn >> 16) & 0x1f) {
|
|
case 0x0:
|
|
/* 00000100 ..000000 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:292 */
|
|
disas_sve_extract_rdn_pg_tszimm(ctx, &u.f_rpri_esz, insn);
|
|
u.f_rpri_esz.imm = tszimm_shr(ctx, deposit32(extract32(insn, 5, 5), 5, 27, extract32(insn, 22, 2)));
|
|
if (trans_ASR_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..000001 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:294 */
|
|
disas_sve_extract_rdn_pg_tszimm(ctx, &u.f_rpri_esz, insn);
|
|
u.f_rpri_esz.imm = tszimm_shr(ctx, deposit32(extract32(insn, 5, 5), 5, 27, extract32(insn, 22, 2)));
|
|
if (trans_LSR_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00000100 ..000011 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:296 */
|
|
disas_sve_extract_rdn_pg_tszimm(ctx, &u.f_rpri_esz, insn);
|
|
u.f_rpri_esz.imm = tszimm_shl(ctx, deposit32(extract32(insn, 5, 5), 5, 27, extract32(insn, 22, 2)));
|
|
if (trans_LSL_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x4:
|
|
/* 00000100 ..000100 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:298 */
|
|
disas_sve_extract_rdn_pg_tszimm(ctx, &u.f_rpri_esz, insn);
|
|
u.f_rpri_esz.imm = tszimm_shr(ctx, deposit32(extract32(insn, 5, 5), 5, 27, extract32(insn, 22, 2)));
|
|
if (trans_ASRD(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x10:
|
|
/* 00000100 ..010000 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:302 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_ASR_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x11:
|
|
/* 00000100 ..010001 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:303 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_LSR_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x13:
|
|
/* 00000100 ..010011 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:304 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_LSL_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x14:
|
|
/* 00000100 ..010100 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:305 */
|
|
disas_sve_extract_rdm_pg_rn(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_ASR_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x15:
|
|
/* 00000100 ..010101 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:306 */
|
|
disas_sve_extract_rdm_pg_rn(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_LSR_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x17:
|
|
/* 00000100 ..010111 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:307 */
|
|
disas_sve_extract_rdm_pg_rn(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_LSL_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x18:
|
|
/* 00000100 ..011000 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:311 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_ASR_zpzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x19:
|
|
/* 00000100 ..011001 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:312 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_LSR_zpzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x1b:
|
|
/* 00000100 ..011011 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:313 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_LSL_zpzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x5:
|
|
/* 00000100 ..0..... 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 16) & 0x1f) {
|
|
case 0x10:
|
|
/* 00000100 ..010000 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:331 */
|
|
if (trans_SXTB(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x11:
|
|
/* 00000100 ..010001 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:332 */
|
|
if (trans_UXTB(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x12:
|
|
/* 00000100 ..010010 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:333 */
|
|
if (trans_SXTH(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x13:
|
|
/* 00000100 ..010011 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:334 */
|
|
if (trans_UXTH(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x14:
|
|
/* 00000100 ..010100 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:335 */
|
|
if (trans_SXTW(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x15:
|
|
/* 00000100 ..010101 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:336 */
|
|
if (trans_UXTW(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x16:
|
|
/* 00000100 ..010110 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:329 */
|
|
if (trans_ABS(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x17:
|
|
/* 00000100 ..010111 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:330 */
|
|
if (trans_NEG(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x18:
|
|
/* 00000100 ..011000 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:319 */
|
|
if (trans_CLS(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x19:
|
|
/* 00000100 ..011001 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:320 */
|
|
if (trans_CLZ(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x1a:
|
|
/* 00000100 ..011010 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:321 */
|
|
if (trans_CNT_zpz(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x1b:
|
|
/* 00000100 ..011011 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:322 */
|
|
if (trans_CNOT(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x1c:
|
|
/* 00000100 ..011100 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:324 */
|
|
if (trans_FABS(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x1d:
|
|
/* 00000100 ..011101 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:325 */
|
|
if (trans_FNEG(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x1e:
|
|
/* 00000100 ..011110 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:323 */
|
|
if (trans_NOT_zpz(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x6:
|
|
/* 00000100 ..0..... 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:356 */
|
|
disas_sve_extract_rdn_pg_ra_rm(ctx, &u.f_rprrr_esz, insn);
|
|
if (trans_MLA(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
case 0x7:
|
|
/* 00000100 ..0..... 111..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:357 */
|
|
disas_sve_extract_rdn_pg_ra_rm(ctx, &u.f_rprrr_esz, insn);
|
|
if (trans_MLS(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00200000:
|
|
/* 00000100 ..1..... ........ ........ */
|
|
switch ((insn >> 12) & 0xf) {
|
|
case 0x0:
|
|
/* 00000100 ..1..... 0000.... ........ */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
switch ((insn >> 10) & 0x3) {
|
|
case 0x0:
|
|
/* 00000100 ..1..... 000000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:362 */
|
|
if (trans_ADD_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..1..... 000001.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:363 */
|
|
if (trans_SUB_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..1..... 0001.... ........ */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
switch ((insn >> 10) & 0x3) {
|
|
case 0x0:
|
|
/* 00000100 ..1..... 000100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:364 */
|
|
if (trans_SQADD_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..1..... 000101.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:365 */
|
|
if (trans_UQADD_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 00000100 ..1..... 000110.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:366 */
|
|
if (trans_SQSUB_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00000100 ..1..... 000111.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:367 */
|
|
if (trans_UQSUB_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x3:
|
|
/* 00000100 ..1..... 0011.... ........ */
|
|
disas_sve_extract_rd_rn_rm_e0(ctx, &u.f_rrr_esz, insn);
|
|
switch (insn & 0x00c00c00) {
|
|
case 0x00000000:
|
|
/* 00000100 001..... 001100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:372 */
|
|
if (trans_AND_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x00400000:
|
|
/* 00000100 011..... 001100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:373 */
|
|
if (trans_ORR_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x00800000:
|
|
/* 00000100 101..... 001100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:374 */
|
|
if (trans_EOR_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x00c00000:
|
|
/* 00000100 111..... 001100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:375 */
|
|
if (trans_BIC_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x4:
|
|
/* 00000100 ..1..... 0100.... ........ */
|
|
switch ((insn >> 10) & 0x3) {
|
|
case 0x0:
|
|
/* 00000100 ..1..... 010000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:380 */
|
|
disas_sve_extract_disas_sve_Fmt_55(ctx, &u.f_disas_sve25, insn);
|
|
if (trans_INDEX_ii(ctx, &u.f_disas_sve25)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..1..... 010001.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:386 */
|
|
disas_sve_extract_disas_sve_Fmt_57(ctx, &u.f_rri_esz, insn);
|
|
if (trans_INDEX_ri(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 00000100 ..1..... 010010.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:383 */
|
|
disas_sve_extract_disas_sve_Fmt_56(ctx, &u.f_disas_sve26, insn);
|
|
if (trans_INDEX_ir(ctx, &u.f_disas_sve26)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00000100 ..1..... 010011.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:389 */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
if (trans_INDEX_rr(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x5:
|
|
/* 00000100 ..1..... 0101.... ........ */
|
|
switch (insn & 0x00c00800) {
|
|
case 0x00000000:
|
|
/* 00000100 001..... 01010... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:394 */
|
|
disas_sve_extract_rd_rn_i6(ctx, &u.f_rri, insn);
|
|
if (trans_ADDVL(ctx, &u.f_rri)) return true;
|
|
return false;
|
|
case 0x00400000:
|
|
/* 00000100 011..... 01010... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:395 */
|
|
disas_sve_extract_rd_rn_i6(ctx, &u.f_rri, insn);
|
|
if (trans_ADDPL(ctx, &u.f_rri)) return true;
|
|
return false;
|
|
case 0x00800000:
|
|
/* 00000100 101..... 01010... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_58(ctx, &u.f_disas_sve27, insn);
|
|
switch ((insn >> 16) & 0x1f) {
|
|
case 0x1f:
|
|
/* 00000100 10111111 01010... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:398 */
|
|
if (trans_RDVL(ctx, &u.f_disas_sve27)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x8:
|
|
/* 00000100 ..1..... 1000.... ........ */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
switch ((insn >> 10) & 0x3) {
|
|
case 0x0:
|
|
/* 00000100 ..1..... 100000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:412 */
|
|
if (trans_ASR_zzw(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..1..... 100001.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:413 */
|
|
if (trans_LSR_zzw(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00000100 ..1..... 100011.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:414 */
|
|
if (trans_LSL_zzw(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x9:
|
|
/* 00000100 ..1..... 1001.... ........ */
|
|
disas_sve_extract_rd_rn_tszimm(ctx, &u.f_rri_esz, insn);
|
|
switch ((insn >> 10) & 0x3) {
|
|
case 0x0:
|
|
/* 00000100 ..1..... 100100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:403 */
|
|
u.f_rri_esz.imm = tszimm_shr(ctx, deposit32(extract32(insn, 16, 5), 5, 27, extract32(insn, 22, 2)));
|
|
if (trans_ASR_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..1..... 100101.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:405 */
|
|
u.f_rri_esz.imm = tszimm_shr(ctx, deposit32(extract32(insn, 16, 5), 5, 27, extract32(insn, 22, 2)));
|
|
if (trans_LSR_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00000100 ..1..... 100111.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:407 */
|
|
u.f_rri_esz.imm = tszimm_shl(ctx, deposit32(extract32(insn, 16, 5), 5, 27, extract32(insn, 22, 2)));
|
|
if (trans_LSL_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xa:
|
|
/* 00000100 ..1..... 1010.... ........ */
|
|
disas_sve_extract_rd_rn_msz_rm(ctx, &u.f_rrri, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x0:
|
|
/* 00000100 001..... 1010.... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:419 */
|
|
if (trans_ADR_s32(ctx, &u.f_rrri)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 011..... 1010.... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:420 */
|
|
if (trans_ADR_u32(ctx, &u.f_rrri)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 00000100 101..... 1010.... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:421 */
|
|
if (trans_ADR_p32(ctx, &u.f_rrri)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00000100 111..... 1010.... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:422 */
|
|
if (trans_ADR_p64(ctx, &u.f_rrri)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xb:
|
|
/* 00000100 ..1..... 1011.... ........ */
|
|
switch ((insn >> 10) & 0x3) {
|
|
case 0x0:
|
|
/* 00000100 ..1..... 101100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:435 */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
if (trans_FTSSEL(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 00000100 ..1..... 101110.. ........ */
|
|
disas_sve_extract_rd_rn(ctx, &u.f_rr_esz, insn);
|
|
switch ((insn >> 16) & 0x1f) {
|
|
case 0x0:
|
|
/* 00000100 ..100000 101110.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:431 */
|
|
if (trans_FEXPA(ctx, &u.f_rr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x3:
|
|
/* 00000100 ..1..... 101111.. ........ */
|
|
disas_sve_extract_disas_sve_Fmt_59(ctx, &u.f_disas_sve28, insn);
|
|
switch (insn & 0x00df0000) {
|
|
case 0x00000000:
|
|
/* 00000100 00100000 101111.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:427 */
|
|
if (trans_MOVPRFX(ctx, &u.f_disas_sve28)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xc:
|
|
/* 00000100 ..1..... 1100.... ........ */
|
|
disas_sve_extract_incdec2_cnt(ctx, &u.f_incdec2_cnt, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* 00000100 ..10.... 1100.... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:455 */
|
|
u.f_incdec2_cnt.d = extract32(insn, 11, 1);
|
|
u.f_incdec2_cnt.u = extract32(insn, 10, 1);
|
|
if (trans_SINCDEC_v(ctx, &u.f_incdec2_cnt)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..11.... 1100.... ........ */
|
|
switch ((insn >> 11) & 0x1) {
|
|
case 0x0:
|
|
/* 00000100 ..11.... 11000... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:451 */
|
|
u.f_incdec2_cnt.d = extract32(insn, 10, 1);
|
|
u.f_incdec2_cnt.u = 1;
|
|
if (trans_INCDEC_v(ctx, &u.f_incdec2_cnt)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xe:
|
|
/* 00000100 ..1..... 1110.... ........ */
|
|
disas_sve_extract_incdec_cnt(ctx, &u.f_incdec_cnt, insn);
|
|
switch (insn & 0x00100800) {
|
|
case 0x00000000:
|
|
/* 00000100 ..10.... 11100... ........ */
|
|
switch ((insn >> 10) & 0x1) {
|
|
case 0x0:
|
|
/* 00000100 ..10.... 111000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:440 */
|
|
u.f_incdec_cnt.d = 0;
|
|
u.f_incdec_cnt.u = 1;
|
|
if (trans_CNT_r(ctx, &u.f_incdec_cnt)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00100000:
|
|
/* 00000100 ..11.... 11100... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:443 */
|
|
u.f_incdec_cnt.d = extract32(insn, 10, 1);
|
|
u.f_incdec_cnt.u = 1;
|
|
if (trans_INCDEC_r(ctx, &u.f_incdec_cnt)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xf:
|
|
/* 00000100 ..1..... 1111.... ........ */
|
|
disas_sve_extract_incdec_cnt(ctx, &u.f_incdec_cnt, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* 00000100 ..10.... 1111.... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:446 */
|
|
u.f_incdec_cnt.d = extract32(insn, 11, 1);
|
|
u.f_incdec_cnt.u = extract32(insn, 10, 1);
|
|
if (trans_SINCDEC_r_32(ctx, &u.f_incdec_cnt)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000100 ..11.... 1111.... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:447 */
|
|
u.f_incdec_cnt.d = extract32(insn, 11, 1);
|
|
u.f_incdec_cnt.u = extract32(insn, 10, 1);
|
|
if (trans_SINCDEC_r_64(ctx, &u.f_incdec_cnt)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x01000000:
|
|
/* 00000101 ..0..... ........ ........ */
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* 00000101 ..00.... ........ ........ */
|
|
switch (insn & 0x00cc0000) {
|
|
case 0x00000000:
|
|
/* 00000101 000000.. ........ ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:460 */
|
|
disas_sve_extract_rdn_dbm(ctx, &u.f_rr_dbm, insn);
|
|
if (trans_ORR_zzi(ctx, &u.f_rr_dbm)) return true;
|
|
return false;
|
|
case 0x00400000:
|
|
/* 00000101 010000.. ........ ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:461 */
|
|
disas_sve_extract_rdn_dbm(ctx, &u.f_rr_dbm, insn);
|
|
if (trans_EOR_zzi(ctx, &u.f_rr_dbm)) return true;
|
|
return false;
|
|
case 0x00800000:
|
|
/* 00000101 100000.. ........ ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:462 */
|
|
disas_sve_extract_rdn_dbm(ctx, &u.f_rr_dbm, insn);
|
|
if (trans_AND_zzi(ctx, &u.f_rr_dbm)) return true;
|
|
return false;
|
|
case 0x00c00000:
|
|
/* 00000101 110000.. ........ ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:465 */
|
|
disas_sve_extract_disas_sve_Fmt_60(ctx, &u.f_disas_sve29, insn);
|
|
if (trans_DUPM(ctx, &u.f_disas_sve29)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 00000101 ..01.... ........ ........ */
|
|
disas_sve_extract_rdn_pg4(ctx, &u.f_rpri_esz, insn);
|
|
switch ((insn >> 14) & 0x3) {
|
|
case 0x0:
|
|
/* 00000101 ..01.... 00...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:474 */
|
|
u.f_rpri_esz.imm = expand_imm_sh8s(ctx, extract32(insn, 5, 9));
|
|
if (trans_CPY_z_i(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00000101 ..01.... 01...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:473 */
|
|
u.f_rpri_esz.imm = expand_imm_sh8s(ctx, extract32(insn, 5, 9));
|
|
if (trans_CPY_m_i(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00000101 ..01.... 11...... ........ */
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00000101 ..01.... 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:470 */
|
|
u.f_rpri_esz.imm = extract32(insn, 5, 8);
|
|
if (trans_FCPY(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x01200000:
|
|
/* 00000101 ..1..... ........ ........ */
|
|
switch ((insn >> 14) & 0x3) {
|
|
case 0x0:
|
|
/* 00000101 ..1..... 00...... ........ */
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00000101 ..1..... 000..... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_61(ctx, &u.f_rrri, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x0:
|
|
/* 00000101 001..... 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:479 */
|
|
if (trans_EXT(ctx, &u.f_rrri)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 00000101 ..1..... 001..... ........ */
|
|
switch ((insn >> 10) & 0x7) {
|
|
case 0x0:
|
|
/* 00000101 ..1..... 001000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:488 */
|
|
disas_sve_extract_disas_sve_Fmt_62(ctx, &u.f_rri, insn);
|
|
if (trans_DUP_x(ctx, &u.f_rri)) return true;
|
|
return false;
|
|
case 0x4:
|
|
/* 00000101 ..1..... 001100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:501 */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
if (trans_TBL(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x6:
|
|
/* 00000101 ..1..... 001110.. ........ */
|
|
switch ((insn >> 18) & 0x7) {
|
|
case 0x0:
|
|
/* 00000101 ..1000.. 001110.. ........ */
|
|
disas_sve_extract_rd_rn(ctx, &u.f_rr_esz, insn);
|
|
switch ((insn >> 16) & 0x3) {
|
|
case 0x0:
|
|
/* 00000101 ..100000 001110.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:485 */
|
|
if (trans_DUP_s(ctx, &u.f_rr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 00000101 ..1001.. 001110.. ........ */
|
|
disas_sve_extract_rdn_rm(ctx, &u.f_rrr_esz, insn);
|
|
switch ((insn >> 16) & 0x3) {
|
|
case 0x0:
|
|
/* 00000101 ..100100 001110.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:495 */
|
|
if (trans_INSR_r(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x4:
|
|
/* 00000101 ..1100.. 001110.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:504 */
|
|
disas_sve_extract_disas_sve_Fmt_63(ctx, &u.f_disas_sve30, insn);
|
|
if (trans_UNPK(ctx, &u.f_disas_sve30)) return true;
|
|
return false;
|
|
case 0x5:
|
|
/* 00000101 ..1101.. 001110.. ........ */
|
|
disas_sve_extract_rdn_rm(ctx, &u.f_rrr_esz, insn);
|
|
switch ((insn >> 16) & 0x3) {
|
|
case 0x0:
|
|
/* 00000101 ..110100 001110.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:492 */
|
|
if (trans_INSR_f(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x6:
|
|
/* 00000101 ..1110.. 001110.. ........ */
|
|
disas_sve_extract_rd_rn(ctx, &u.f_rr_esz, insn);
|
|
switch ((insn >> 16) & 0x3) {
|
|
case 0x0:
|
|
/* 00000101 ..111000 001110.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:498 */
|
|
if (trans_REV_v(ctx, &u.f_rr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 00000101 ..1..... 01...... ........ */
|
|
switch ((insn >> 10) & 0xf) {
|
|
case 0x0:
|
|
/* 00000101 ..1..... 010000.. ........ */
|
|
switch (insn & 0x00100210) {
|
|
case 0x00000000:
|
|
/* 00000101 ..10.... 0100000. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:509 */
|
|
disas_sve_extract_pd_pn_pm(ctx, &u.f_rrr_esz, insn);
|
|
if (trans_ZIP1_p(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x00100000:
|
|
/* 00000101 ..11.... 0100000. ...0.... */
|
|
switch ((insn >> 16) & 0xf) {
|
|
case 0x0:
|
|
/* 00000101 ..110000 0100000. ...0.... */
|
|
disas_sve_extract_pd_pn_e0(ctx, &u.f_rr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x0:
|
|
/* 00000101 00110000 0100000. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:520 */
|
|
if (trans_PUNPKLO(ctx, &u.f_rr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 00000101 ..110001 0100000. ...0.... */
|
|
disas_sve_extract_pd_pn_e0(ctx, &u.f_rr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x0:
|
|
/* 00000101 00110001 0100000. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:521 */
|
|
if (trans_PUNPKHI(ctx, &u.f_rr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x4:
|
|
/* 00000101 ..110100 0100000. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:517 */
|
|
disas_sve_extract_pd_pn(ctx, &u.f_rr_esz, insn);
|
|
if (trans_REV_p(ctx, &u.f_rr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 00000101 ..1..... 010001.. ........ */
|
|
disas_sve_extract_pd_pn_pm(ctx, &u.f_rrr_esz, insn);
|
|
switch (insn & 0x00100210) {
|
|
case 0x00000000:
|
|
/* 00000101 ..10.... 0100010. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:510 */
|
|
if (trans_ZIP2_p(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x2:
|
|
/* 00000101 ..1..... 010010.. ........ */
|
|
disas_sve_extract_pd_pn_pm(ctx, &u.f_rrr_esz, insn);
|
|
switch (insn & 0x00100210) {
|
|
case 0x00000000:
|
|
/* 00000101 ..10.... 0100100. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:511 */
|
|
if (trans_UZP1_p(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x3:
|
|
/* 00000101 ..1..... 010011.. ........ */
|
|
disas_sve_extract_pd_pn_pm(ctx, &u.f_rrr_esz, insn);
|
|
switch (insn & 0x00100210) {
|
|
case 0x00000000:
|
|
/* 00000101 ..10.... 0100110. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:512 */
|
|
if (trans_UZP2_p(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x4:
|
|
/* 00000101 ..1..... 010100.. ........ */
|
|
disas_sve_extract_pd_pn_pm(ctx, &u.f_rrr_esz, insn);
|
|
switch (insn & 0x00100210) {
|
|
case 0x00000000:
|
|
/* 00000101 ..10.... 0101000. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:513 */
|
|
if (trans_TRN1_p(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x5:
|
|
/* 00000101 ..1..... 010101.. ........ */
|
|
disas_sve_extract_pd_pn_pm(ctx, &u.f_rrr_esz, insn);
|
|
switch (insn & 0x00100210) {
|
|
case 0x00000000:
|
|
/* 00000101 ..10.... 0101010. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:514 */
|
|
if (trans_TRN2_p(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x8:
|
|
/* 00000101 ..1..... 011000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:526 */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
if (trans_ZIP1_z(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x9:
|
|
/* 00000101 ..1..... 011001.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:527 */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
if (trans_ZIP2_z(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0xa:
|
|
/* 00000101 ..1..... 011010.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:528 */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
if (trans_UZP1_z(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0xb:
|
|
/* 00000101 ..1..... 011011.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:529 */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
if (trans_UZP2_z(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0xc:
|
|
/* 00000101 ..1..... 011100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:530 */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
if (trans_TRN1_z(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0xd:
|
|
/* 00000101 ..1..... 011101.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:531 */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
if (trans_TRN2_z(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x2:
|
|
/* 00000101 ..1..... 10...... ........ */
|
|
switch (insn & 0x001f2000) {
|
|
case 0x00000000:
|
|
/* 00000101 ..100000 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:560 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_CPY_m_v(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00002000:
|
|
/* 00000101 ..100000 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:556 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_LASTA_r(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00010000:
|
|
/* 00000101 ..100001 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:537 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_COMPACT(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00012000:
|
|
/* 00000101 ..100001 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:557 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_LASTB_r(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00020000:
|
|
/* 00000101 ..100010 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:552 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_LASTA_v(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00030000:
|
|
/* 00000101 ..100011 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:553 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_LASTB_v(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00040000:
|
|
/* 00000101 ..100100 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:567 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_REVB(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00050000:
|
|
/* 00000101 ..100101 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:568 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_REVH(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00060000:
|
|
/* 00000101 ..100110 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:569 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_REVW(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00070000:
|
|
/* 00000101 ..100111 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:570 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_RBIT(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00080000:
|
|
/* 00000101 ..101000 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:540 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_CLASTA_z(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00082000:
|
|
/* 00000101 ..101000 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:563 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_CPY_m_r(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00090000:
|
|
/* 00000101 ..101001 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:541 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_CLASTB_z(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x000a0000:
|
|
/* 00000101 ..101010 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:544 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_CLASTA_v(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x000b0000:
|
|
/* 00000101 ..101011 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:545 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_CLASTB_v(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x000c0000:
|
|
/* 00000101 ..101100 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:573 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_SPLICE(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00102000:
|
|
/* 00000101 ..110000 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:548 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_CLASTA_r(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x00112000:
|
|
/* 00000101 ..110001 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:549 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_CLASTB_r(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x3:
|
|
/* 00000101 ..1..... 11...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:578 */
|
|
disas_sve_extract_rd_pg4_rn_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_SEL_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x12:
|
|
/* 0010010. ........ ........ ........ */
|
|
switch (insn & 0x01200000) {
|
|
case 0x00000000:
|
|
/* 00100100 ..0..... ........ ........ */
|
|
disas_sve_extract_pd_pg_rn_rm(ctx, &u.f_rprr_esz, insn);
|
|
switch (insn & 0x0000e010) {
|
|
case 0x00000000:
|
|
/* 00100100 ..0..... 000..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:583 */
|
|
if (trans_CMPHS_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00000010:
|
|
/* 00100100 ..0..... 000..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:584 */
|
|
if (trans_CMPHI_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00002000:
|
|
/* 00100100 ..0..... 001..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:592 */
|
|
if (trans_CMPEQ_ppzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00002010:
|
|
/* 00100100 ..0..... 001..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:593 */
|
|
if (trans_CMPNE_ppzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00004000:
|
|
/* 00100100 ..0..... 010..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:594 */
|
|
if (trans_CMPGE_ppzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00004010:
|
|
/* 00100100 ..0..... 010..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:595 */
|
|
if (trans_CMPGT_ppzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00006000:
|
|
/* 00100100 ..0..... 011..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:596 */
|
|
if (trans_CMPLT_ppzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00006010:
|
|
/* 00100100 ..0..... 011..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:597 */
|
|
if (trans_CMPLE_ppzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00008000:
|
|
/* 00100100 ..0..... 100..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:585 */
|
|
if (trans_CMPGE_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x00008010:
|
|
/* 00100100 ..0..... 100..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:586 */
|
|
if (trans_CMPGT_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x0000a000:
|
|
/* 00100100 ..0..... 101..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:587 */
|
|
if (trans_CMPEQ_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x0000a010:
|
|
/* 00100100 ..0..... 101..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:588 */
|
|
if (trans_CMPNE_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x0000c000:
|
|
/* 00100100 ..0..... 110..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:598 */
|
|
if (trans_CMPHS_ppzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x0000c010:
|
|
/* 00100100 ..0..... 110..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:599 */
|
|
if (trans_CMPHI_ppzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x0000e000:
|
|
/* 00100100 ..0..... 111..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:600 */
|
|
if (trans_CMPLO_ppzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x0000e010:
|
|
/* 00100100 ..0..... 111..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:601 */
|
|
if (trans_CMPLS_ppzw(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00200000:
|
|
/* 00100100 ..1..... ........ ........ */
|
|
disas_sve_extract_pd_pg_rn_i7(ctx, &u.f_rpri_esz, insn);
|
|
switch (insn & 0x00002010) {
|
|
case 0x00000000:
|
|
/* 00100100 ..1..... ..0..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:606 */
|
|
if (trans_CMPHS_ppzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x00000010:
|
|
/* 00100100 ..1..... ..0..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:607 */
|
|
if (trans_CMPHI_ppzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x00002000:
|
|
/* 00100100 ..1..... ..1..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:608 */
|
|
if (trans_CMPLO_ppzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x00002010:
|
|
/* 00100100 ..1..... ..1..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:609 */
|
|
if (trans_CMPLS_ppzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x01000000:
|
|
/* 00100101 ..0..... ........ ........ */
|
|
switch (insn & 0x0000c010) {
|
|
case 0x00000000:
|
|
/* 00100101 ..0..... 00...... ...0.... */
|
|
disas_sve_extract_pd_pg_rn_i5(ctx, &u.f_rpri_esz, insn);
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..0..... 000..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:614 */
|
|
if (trans_CMPGE_ppzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00100101 ..0..... 001..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:616 */
|
|
if (trans_CMPLT_ppzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00000010:
|
|
/* 00100101 ..0..... 00...... ...1.... */
|
|
disas_sve_extract_pd_pg_rn_i5(ctx, &u.f_rpri_esz, insn);
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..0..... 000..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:615 */
|
|
if (trans_CMPGT_ppzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00100101 ..0..... 001..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:617 */
|
|
if (trans_CMPLE_ppzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00004000:
|
|
/* 00100101 ..0..... 01...... ...0.... */
|
|
switch (insn & 0x00900200) {
|
|
case 0x00000000:
|
|
/* 00100101 0.00.... 01....0. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:624 */
|
|
disas_sve_extract_pd_pg_pn_pm_s(ctx, &u.f_rprr_s, insn);
|
|
if (trans_AND_pppp(ctx, &u.f_rprr_s)) return true;
|
|
return false;
|
|
case 0x00000200:
|
|
/* 00100101 0.00.... 01....1. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:626 */
|
|
disas_sve_extract_pd_pg_pn_pm_s(ctx, &u.f_rprr_s, insn);
|
|
if (trans_EOR_pppp(ctx, &u.f_rprr_s)) return true;
|
|
return false;
|
|
case 0x00100000:
|
|
/* 00100101 0.01.... 01....0. ...0.... */
|
|
disas_sve_extract_pd_pg_pn_s(ctx, &u.f_rpr_s, insn);
|
|
switch ((insn >> 16) & 0xf) {
|
|
case 0x0:
|
|
/* 00100101 0.010000 01....0. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:669 */
|
|
if (trans_BRKA_z(ctx, &u.f_rpr_s)) return true;
|
|
return false;
|
|
case 0x8:
|
|
/* 00100101 0.011000 01....0. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:675 */
|
|
if (trans_BRKN(ctx, &u.f_rpr_s)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00800000:
|
|
/* 00100101 1.00.... 01....0. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:628 */
|
|
disas_sve_extract_pd_pg_pn_pm_s(ctx, &u.f_rprr_s, insn);
|
|
if (trans_ORR_pppp(ctx, &u.f_rprr_s)) return true;
|
|
return false;
|
|
case 0x00800200:
|
|
/* 00100101 1.00.... 01....1. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:630 */
|
|
disas_sve_extract_pd_pg_pn_pm_s(ctx, &u.f_rprr_s, insn);
|
|
if (trans_NOR_pppp(ctx, &u.f_rprr_s)) return true;
|
|
return false;
|
|
case 0x00900000:
|
|
/* 00100101 1.01.... 01....0. ...0.... */
|
|
disas_sve_extract_pd_pg_pn_s(ctx, &u.f_rpr_s, insn);
|
|
switch ((insn >> 16) & 0xf) {
|
|
case 0x0:
|
|
/* 00100101 1.010000 01....0. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:670 */
|
|
if (trans_BRKB_z(ctx, &u.f_rpr_s)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00004010:
|
|
/* 00100101 ..0..... 01...... ...1.... */
|
|
switch (insn & 0x00900200) {
|
|
case 0x00000000:
|
|
/* 00100101 0.00.... 01....0. ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:625 */
|
|
disas_sve_extract_pd_pg_pn_pm_s(ctx, &u.f_rprr_s, insn);
|
|
if (trans_BIC_pppp(ctx, &u.f_rprr_s)) return true;
|
|
return false;
|
|
case 0x00000200:
|
|
/* 00100101 0.00.... 01....1. ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:627 */
|
|
disas_sve_extract_pd_pg_pn_pm_s(ctx, &u.f_rprr_s, insn);
|
|
if (trans_SEL_pppp(ctx, &u.f_rprr_s)) return true;
|
|
return false;
|
|
case 0x00100000:
|
|
/* 00100101 0.01.... 01....0. ...1.... */
|
|
disas_sve_extract_pd_pg_pn_s0(ctx, &u.f_rpr_s, insn);
|
|
switch (insn & 0x004f0000) {
|
|
case 0x00000000:
|
|
/* 00100101 00010000 01....0. ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:671 */
|
|
if (trans_BRKA_m(ctx, &u.f_rpr_s)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00800000:
|
|
/* 00100101 1.00.... 01....0. ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:629 */
|
|
disas_sve_extract_pd_pg_pn_pm_s(ctx, &u.f_rprr_s, insn);
|
|
if (trans_ORN_pppp(ctx, &u.f_rprr_s)) return true;
|
|
return false;
|
|
case 0x00800200:
|
|
/* 00100101 1.00.... 01....1. ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:631 */
|
|
disas_sve_extract_pd_pg_pn_pm_s(ctx, &u.f_rprr_s, insn);
|
|
if (trans_NAND_pppp(ctx, &u.f_rprr_s)) return true;
|
|
return false;
|
|
case 0x00900000:
|
|
/* 00100101 1.01.... 01....0. ...1.... */
|
|
disas_sve_extract_pd_pg_pn_s0(ctx, &u.f_rpr_s, insn);
|
|
switch (insn & 0x004f0000) {
|
|
case 0x00000000:
|
|
/* 00100101 10010000 01....0. ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:672 */
|
|
if (trans_BRKB_m(ctx, &u.f_rpr_s)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00008000:
|
|
/* 00100101 ..0..... 10...... ...0.... */
|
|
disas_sve_extract_pd_pg_rn_i5(ctx, &u.f_rpri_esz, insn);
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..0..... 100..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:618 */
|
|
if (trans_CMPEQ_ppzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00008010:
|
|
/* 00100101 ..0..... 10...... ...1.... */
|
|
disas_sve_extract_pd_pg_rn_i5(ctx, &u.f_rpri_esz, insn);
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..0..... 100..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:619 */
|
|
if (trans_CMPNE_ppzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x0000c000:
|
|
/* 00100101 ..0..... 11...... ...0.... */
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..00.... 11...... ...0.... */
|
|
disas_sve_extract_pd_pg_pn_pm_s(ctx, &u.f_rprr_s, insn);
|
|
switch (insn & 0x00800200) {
|
|
case 0x00000000:
|
|
/* 00100101 0.00.... 11....0. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:665 */
|
|
if (trans_BRKPA(ctx, &u.f_rprr_s)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 00100101 ..01.... 11...... ...0.... */
|
|
switch ((insn >> 17) & 0x7) {
|
|
case 0x0:
|
|
/* 00100101 ..01000. 11...... ...0.... */
|
|
disas_sve_extract_disas_sve_Fmt_64(ctx, &u.f_disas_sve31, insn);
|
|
switch (insn & 0x00c1020f) {
|
|
case 0x00400000:
|
|
/* 00100101 01010000 11....0. ...00000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:636 */
|
|
if (trans_PTEST(ctx, &u.f_disas_sve31)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x4:
|
|
/* 00100101 ..01100. 11...... ...0.... */
|
|
switch ((insn >> 10) & 0xf) {
|
|
case 0x0:
|
|
/* 00100101 ..01100. 110000.. ...0.... */
|
|
disas_sve_extract_pd_pn_e0(ctx, &u.f_rr_esz, insn);
|
|
switch (insn & 0x00c10200) {
|
|
case 0x00400000:
|
|
/* 00100101 01011000 1100000. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:657 */
|
|
if (trans_PFIRST(ctx, &u.f_rr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 00100101 ..01100. 110001.. ...0.... */
|
|
disas_sve_extract_pd_pn(ctx, &u.f_rr_esz, insn);
|
|
switch (insn & 0x00010200) {
|
|
case 0x00010000:
|
|
/* 00100101 ..011001 1100010. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:660 */
|
|
if (trans_PNEXT(ctx, &u.f_rr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x8:
|
|
/* 00100101 ..01100. 111000.. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:639 */
|
|
disas_sve_extract_disas_sve_Fmt_65(ctx, &u.f_ptrue, insn);
|
|
if (trans_PTRUE(ctx, &u.f_ptrue)) return true;
|
|
return false;
|
|
case 0x9:
|
|
/* 00100101 ..01100. 111001.. ...0.... */
|
|
disas_sve_extract_disas_sve_Fmt_67(ctx, &u.f_disas_sve33, insn);
|
|
switch (insn & 0x00c103e0) {
|
|
case 0x00000000:
|
|
/* 00100101 00011000 11100100 0000.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:645 */
|
|
if (trans_PFALSE(ctx, &u.f_disas_sve33)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xc:
|
|
/* 00100101 ..01100. 111100.. ...0.... */
|
|
switch (insn & 0x00810200) {
|
|
case 0x00000000:
|
|
/* 00100101 0.011000 1111000. ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:648 */
|
|
disas_sve_extract_disas_sve_Fmt_68(ctx, &u.f_disas_sve34, insn);
|
|
if (trans_RDFFR_p(ctx, &u.f_disas_sve34)) return true;
|
|
return false;
|
|
case 0x00010000:
|
|
/* 00100101 0.011001 1111000. ...0.... */
|
|
disas_sve_extract_disas_sve_Fmt_67(ctx, &u.f_disas_sve33, insn);
|
|
switch (insn & 0x004001e0) {
|
|
case 0x00000000:
|
|
/* 00100101 00011001 11110000 0000.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:651 */
|
|
if (trans_RDFFR(ctx, &u.f_disas_sve33)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x0000c010:
|
|
/* 00100101 ..0..... 11...... ...1.... */
|
|
disas_sve_extract_pd_pg_pn_pm_s(ctx, &u.f_rprr_s, insn);
|
|
switch (insn & 0x00900200) {
|
|
case 0x00000000:
|
|
/* 00100101 0.00.... 11....0. ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:666 */
|
|
if (trans_BRKPB(ctx, &u.f_rprr_s)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x01200000:
|
|
/* 00100101 ..1..... ........ ........ */
|
|
switch ((insn >> 14) & 0x3) {
|
|
case 0x0:
|
|
/* 00100101 ..1..... 00...... ........ */
|
|
switch (insn & 0x00002400) {
|
|
case 0x00000400:
|
|
/* 00100101 ..1..... 000..1.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:701 */
|
|
disas_sve_extract_disas_sve_Fmt_71(ctx, &u.f_disas_sve37, insn);
|
|
if (trans_WHILE(ctx, &u.f_disas_sve37)) return true;
|
|
return false;
|
|
case 0x00002000:
|
|
/* 00100101 ..1..... 001..0.. ........ */
|
|
disas_sve_extract_disas_sve_Fmt_70(ctx, &u.f_disas_sve36, insn);
|
|
switch (insn & 0x0080180f) {
|
|
case 0x00800000:
|
|
/* 00100101 1.1..... 001000.. ....0000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:698 */
|
|
if (trans_CTERM(ctx, &u.f_disas_sve36)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x2:
|
|
/* 00100101 ..1..... 10...... ........ */
|
|
switch (insn & 0x001c0200) {
|
|
case 0x00000000:
|
|
/* 00100101 ..1000.. 10....0. ........ */
|
|
disas_sve_extract_rd_pg4_pn(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 16) & 0x3) {
|
|
case 0x0:
|
|
/* 00100101 ..100000 10....0. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:680 */
|
|
if (trans_CNTP(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00080000:
|
|
/* 00100101 ..1010.. 10....0. ........ */
|
|
switch ((insn >> 10) & 0xf) {
|
|
case 0x0:
|
|
/* 00100101 ..1010.. 1000000. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:693 */
|
|
disas_sve_extract_incdec2_pred(ctx, &u.f_incdec2_pred, insn);
|
|
u.f_incdec2_pred.d = extract32(insn, 17, 1);
|
|
u.f_incdec2_pred.u = extract32(insn, 16, 1);
|
|
if (trans_SINCDECP_z(ctx, &u.f_incdec2_pred)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 00100101 ..1010.. 1000100. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:689 */
|
|
disas_sve_extract_incdec_pred(ctx, &u.f_incdec_pred, insn);
|
|
u.f_incdec_pred.d = extract32(insn, 17, 1);
|
|
u.f_incdec_pred.u = extract32(insn, 16, 1);
|
|
if (trans_SINCDECP_r_32(ctx, &u.f_incdec_pred)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00100101 ..1010.. 1000110. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:690 */
|
|
disas_sve_extract_incdec_pred(ctx, &u.f_incdec_pred, insn);
|
|
u.f_incdec_pred.d = extract32(insn, 17, 1);
|
|
u.f_incdec_pred.u = extract32(insn, 16, 1);
|
|
if (trans_SINCDECP_r_64(ctx, &u.f_incdec_pred)) return true;
|
|
return false;
|
|
case 0x4:
|
|
/* 00100101 ..1010.. 1001000. ........ */
|
|
disas_sve_extract_disas_sve_Fmt_69(ctx, &u.f_disas_sve35, insn);
|
|
switch (insn & 0x00c3001f) {
|
|
case 0x00000000:
|
|
/* 00100101 00101000 1001000. ...00000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:654 */
|
|
if (trans_WRFFR(ctx, &u.f_disas_sve35)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x000c0000:
|
|
/* 00100101 ..1011.. 10....0. ........ */
|
|
switch (insn & 0x00023c00) {
|
|
case 0x00000000:
|
|
/* 00100101 ..10110. 1000000. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:686 */
|
|
disas_sve_extract_incdec2_pred(ctx, &u.f_incdec2_pred, insn);
|
|
u.f_incdec2_pred.d = extract32(insn, 16, 1);
|
|
u.f_incdec2_pred.u = 1;
|
|
if (trans_INCDECP_z(ctx, &u.f_incdec2_pred)) return true;
|
|
return false;
|
|
case 0x00000800:
|
|
/* 00100101 ..10110. 1000100. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:683 */
|
|
disas_sve_extract_incdec_pred(ctx, &u.f_incdec_pred, insn);
|
|
u.f_incdec_pred.d = extract32(insn, 16, 1);
|
|
u.f_incdec_pred.u = 1;
|
|
if (trans_INCDECP_r(ctx, &u.f_incdec_pred)) return true;
|
|
return false;
|
|
case 0x00001000:
|
|
/* 00100101 ..10110. 1001000. ........ */
|
|
disas_sve_extract_disas_sve_Fmt_66(ctx, &u.f_disas_sve32, insn);
|
|
switch (insn & 0x00c101ff) {
|
|
case 0x00000000:
|
|
/* 00100101 00101100 10010000 00000000 */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:642 */
|
|
if (trans_SETFFR(ctx, &u.f_disas_sve32)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x3:
|
|
/* 00100101 ..1..... 11...... ........ */
|
|
switch ((insn >> 16) & 0x1f) {
|
|
case 0x0:
|
|
/* 00100101 ..100000 11...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:712 */
|
|
disas_sve_extract_rdn_sh_i8u(ctx, &u.f_rri_esz, insn);
|
|
if (trans_ADD_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 00100101 ..100001 11...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:713 */
|
|
disas_sve_extract_rdn_sh_i8u(ctx, &u.f_rri_esz, insn);
|
|
if (trans_SUB_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 00100101 ..100011 11...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:714 */
|
|
disas_sve_extract_rdn_sh_i8u(ctx, &u.f_rri_esz, insn);
|
|
if (trans_SUBR_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
case 0x4:
|
|
/* 00100101 ..100100 11...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:715 */
|
|
disas_sve_extract_rdn_sh_i8u(ctx, &u.f_rri_esz, insn);
|
|
if (trans_SQADD_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
case 0x5:
|
|
/* 00100101 ..100101 11...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:716 */
|
|
disas_sve_extract_rdn_sh_i8u(ctx, &u.f_rri_esz, insn);
|
|
if (trans_UQADD_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
case 0x6:
|
|
/* 00100101 ..100110 11...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:717 */
|
|
disas_sve_extract_rdn_sh_i8u(ctx, &u.f_rri_esz, insn);
|
|
if (trans_SQSUB_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
case 0x7:
|
|
/* 00100101 ..100111 11...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:718 */
|
|
disas_sve_extract_rdn_sh_i8u(ctx, &u.f_rri_esz, insn);
|
|
if (trans_UQSUB_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
case 0x8:
|
|
/* 00100101 ..101000 11...... ........ */
|
|
disas_sve_extract_rdn_i8s(ctx, &u.f_rri_esz, insn);
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..101000 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:721 */
|
|
if (trans_SMAX_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x9:
|
|
/* 00100101 ..101001 11...... ........ */
|
|
disas_sve_extract_rdn_i8u(ctx, &u.f_rri_esz, insn);
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..101001 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:722 */
|
|
if (trans_UMAX_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xa:
|
|
/* 00100101 ..101010 11...... ........ */
|
|
disas_sve_extract_rdn_i8s(ctx, &u.f_rri_esz, insn);
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..101010 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:723 */
|
|
if (trans_SMIN_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xb:
|
|
/* 00100101 ..101011 11...... ........ */
|
|
disas_sve_extract_rdn_i8u(ctx, &u.f_rri_esz, insn);
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..101011 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:724 */
|
|
if (trans_UMIN_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x10:
|
|
/* 00100101 ..110000 11...... ........ */
|
|
disas_sve_extract_rdn_i8s(ctx, &u.f_rri_esz, insn);
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..110000 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:727 */
|
|
if (trans_MUL_zzi(ctx, &u.f_rri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x18:
|
|
/* 00100101 ..111000 11...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:709 */
|
|
disas_sve_extract_disas_sve_Fmt_73(ctx, &u.f_disas_sve38, insn);
|
|
if (trans_DUP_i(ctx, &u.f_disas_sve38)) return true;
|
|
return false;
|
|
case 0x19:
|
|
/* 00100101 ..111001 11...... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_72(ctx, &u.f_disas_sve38, insn);
|
|
switch ((insn >> 13) & 0x1) {
|
|
case 0x0:
|
|
/* 00100101 ..111001 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:706 */
|
|
if (trans_FDUP(ctx, &u.f_disas_sve38)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x22:
|
|
/* 0100010. ........ ........ ........ */
|
|
switch (insn & 0x01a0f800) {
|
|
case 0x00800000:
|
|
/* 01000100 1.0..... 00000... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:730 */
|
|
disas_sve_extract_disas_sve_Fmt_74(ctx, &u.f_disas_sve39, insn);
|
|
if (trans_DOT_zzz(ctx, &u.f_disas_sve39)) return true;
|
|
return false;
|
|
case 0x00a00000:
|
|
/* 01000100 1.1..... 00000... ........ */
|
|
switch ((insn >> 22) & 0x1) {
|
|
case 0x0:
|
|
/* 01000100 101..... 00000... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:733 */
|
|
disas_sve_extract_disas_sve_Fmt_75(ctx, &u.f_disas_sve40, insn);
|
|
if (trans_DOT_zzx(ctx, &u.f_disas_sve40)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01000100 111..... 00000... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:735 */
|
|
disas_sve_extract_disas_sve_Fmt_76(ctx, &u.f_disas_sve40, insn);
|
|
if (trans_DOT_zzx(ctx, &u.f_disas_sve40)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x32:
|
|
/* 0110010. ........ ........ ........ */
|
|
switch (insn & 0x01208000) {
|
|
case 0x00000000:
|
|
/* 01100100 ..0..... 0....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:743 */
|
|
disas_sve_extract_disas_sve_Fmt_78(ctx, &u.f_disas_sve42, insn);
|
|
if (trans_FCMLA_zpzzz(ctx, &u.f_disas_sve42)) return true;
|
|
return false;
|
|
case 0x00008000:
|
|
/* 01100100 ..0..... 1....... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_77(ctx, &u.f_disas_sve41, insn);
|
|
switch (insn & 0x001e6000) {
|
|
case 0x00000000:
|
|
/* 01100100 ..00000. 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:739 */
|
|
if (trans_FCADD(ctx, &u.f_disas_sve41)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00200000:
|
|
/* 01100100 ..1..... 0....... ........ */
|
|
switch (insn & 0x00807000) {
|
|
case 0x00000000:
|
|
/* 01100100 0.1..... 0000.... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_81(ctx, &u.f_disas_sve44, insn);
|
|
switch ((insn >> 11) & 0x1) {
|
|
case 0x0:
|
|
/* 01100100 0.1..... 00000... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:755 */
|
|
if (trans_FMLA_zzxz(ctx, &u.f_disas_sve44)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00002000:
|
|
/* 01100100 0.1..... 0010.... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_84(ctx, &u.f_disas_sve45, insn);
|
|
switch ((insn >> 10) & 0x3) {
|
|
case 0x0:
|
|
/* 01100100 0.1..... 001000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:765 */
|
|
if (trans_FMUL_zzx(ctx, &u.f_disas_sve45)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00800000:
|
|
/* 01100100 1.1..... 0000.... ........ */
|
|
switch (insn & 0x00400800) {
|
|
case 0x00000000:
|
|
/* 01100100 101..... 00000... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:757 */
|
|
disas_sve_extract_disas_sve_Fmt_82(ctx, &u.f_disas_sve44, insn);
|
|
if (trans_FMLA_zzxz(ctx, &u.f_disas_sve44)) return true;
|
|
return false;
|
|
case 0x00400000:
|
|
/* 01100100 111..... 00000... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:759 */
|
|
disas_sve_extract_disas_sve_Fmt_83(ctx, &u.f_disas_sve44, insn);
|
|
if (trans_FMLA_zzxz(ctx, &u.f_disas_sve44)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00801000:
|
|
/* 01100100 1.1..... 0001.... ........ */
|
|
switch ((insn >> 22) & 0x1) {
|
|
case 0x0:
|
|
/* 01100100 101..... 0001.... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:747 */
|
|
disas_sve_extract_disas_sve_Fmt_79(ctx, &u.f_disas_sve43, insn);
|
|
if (trans_FCMLA_zzxz(ctx, &u.f_disas_sve43)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100100 111..... 0001.... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:749 */
|
|
disas_sve_extract_disas_sve_Fmt_80(ctx, &u.f_disas_sve43, insn);
|
|
if (trans_FCMLA_zzxz(ctx, &u.f_disas_sve43)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x00802000:
|
|
/* 01100100 1.1..... 0010.... ........ */
|
|
switch (insn & 0x00400c00) {
|
|
case 0x00000000:
|
|
/* 01100100 101..... 001000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:767 */
|
|
disas_sve_extract_disas_sve_Fmt_85(ctx, &u.f_disas_sve45, insn);
|
|
if (trans_FMUL_zzx(ctx, &u.f_disas_sve45)) return true;
|
|
return false;
|
|
case 0x00400000:
|
|
/* 01100100 111..... 001000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:768 */
|
|
disas_sve_extract_disas_sve_Fmt_86(ctx, &u.f_disas_sve45, insn);
|
|
if (trans_FMUL_zzx(ctx, &u.f_disas_sve45)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x01000000:
|
|
/* 01100101 ..0..... 0....... ........ */
|
|
switch ((insn >> 13) & 0x3) {
|
|
case 0x0:
|
|
/* 01100101 ..0..... 000..... ........ */
|
|
disas_sve_extract_rd_rn_rm(ctx, &u.f_rrr_esz, insn);
|
|
switch ((insn >> 10) & 0x7) {
|
|
case 0x0:
|
|
/* 01100101 ..0..... 000000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:800 */
|
|
if (trans_FADD_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..0..... 000001.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:801 */
|
|
if (trans_FSUB_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 ..0..... 000010.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:802 */
|
|
if (trans_FMUL_zzz(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 ..0..... 000011.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:803 */
|
|
if (trans_FTSMUL(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x6:
|
|
/* 01100101 ..0..... 000110.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:804 */
|
|
if (trans_FRECPS(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
case 0x7:
|
|
/* 01100101 ..0..... 000111.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:805 */
|
|
if (trans_FRSQRTS(ctx, &u.f_rrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..0..... 001..... ........ */
|
|
switch ((insn >> 16) & 0x1f) {
|
|
case 0x0:
|
|
/* 01100101 ..000000 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:772 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FADDV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x4:
|
|
/* 01100101 ..000100 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:773 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FMAXNMV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x5:
|
|
/* 01100101 ..000101 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:774 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FMINNMV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x6:
|
|
/* 01100101 ..000110 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:775 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FMAXV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x7:
|
|
/* 01100101 ..000111 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:776 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FMINV(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0xe:
|
|
/* 01100101 ..001110 001..... ........ */
|
|
disas_sve_extract_rd_rn(ctx, &u.f_rr_esz, insn);
|
|
switch ((insn >> 10) & 0x7) {
|
|
case 0x4:
|
|
/* 01100101 ..001110 001100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:780 */
|
|
if (trans_FRECPE(ctx, &u.f_rr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xf:
|
|
/* 01100101 ..001111 001..... ........ */
|
|
disas_sve_extract_rd_rn(ctx, &u.f_rr_esz, insn);
|
|
switch ((insn >> 10) & 0x7) {
|
|
case 0x4:
|
|
/* 01100101 ..001111 001100.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:781 */
|
|
if (trans_FRSQRTE(ctx, &u.f_rr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x10:
|
|
/* 01100101 ..010000 001..... ........ */
|
|
disas_sve_extract_pd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 01100101 ..010000 001..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:785 */
|
|
if (trans_FCMGE_ppz0(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..010000 001..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:786 */
|
|
if (trans_FCMGT_ppz0(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x11:
|
|
/* 01100101 ..010001 001..... ........ */
|
|
disas_sve_extract_pd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 01100101 ..010001 001..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:787 */
|
|
if (trans_FCMLT_ppz0(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..010001 001..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:788 */
|
|
if (trans_FCMLE_ppz0(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x12:
|
|
/* 01100101 ..010010 001..... ........ */
|
|
disas_sve_extract_pd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 01100101 ..010010 001..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:789 */
|
|
if (trans_FCMEQ_ppz0(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x13:
|
|
/* 01100101 ..010011 001..... ........ */
|
|
disas_sve_extract_pd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 01100101 ..010011 001..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:790 */
|
|
if (trans_FCMNE_ppz0(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x18:
|
|
/* 01100101 ..011000 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:795 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FADDA(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 ..0..... 010..... ........ */
|
|
disas_sve_extract_pd_pg_rn_rm(ctx, &u.f_rprr_esz, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 01100101 ..0..... 010..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:341 */
|
|
if (trans_FCMGE_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..0..... 010..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:342 */
|
|
if (trans_FCMGT_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 ..0..... 011..... ........ */
|
|
disas_sve_extract_pd_pg_rn_rm(ctx, &u.f_rprr_esz, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 01100101 ..0..... 011..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:343 */
|
|
if (trans_FCMEQ_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..0..... 011..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:344 */
|
|
if (trans_FCMNE_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x01008000:
|
|
/* 01100101 ..0..... 1....... ........ */
|
|
switch ((insn >> 13) & 0x3) {
|
|
case 0x0:
|
|
/* 01100101 ..0..... 100..... ........ */
|
|
switch ((insn >> 19) & 0x3) {
|
|
case 0x0:
|
|
/* 01100101 ..000... 100..... ........ */
|
|
switch ((insn >> 16) & 0x7) {
|
|
case 0x0:
|
|
/* 01100101 ..000000 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:810 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FADD_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..000001 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:811 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FSUB_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 ..000010 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:812 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FMUL_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 ..000011 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:813 */
|
|
disas_sve_extract_rdm_pg_rn(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FSUB_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x4:
|
|
/* 01100101 ..000100 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:814 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FMAXNM_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x5:
|
|
/* 01100101 ..000101 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:815 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FMINNM_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x6:
|
|
/* 01100101 ..000110 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:816 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FMAX_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x7:
|
|
/* 01100101 ..000111 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:817 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FMIN_zpzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..001... 100..... ........ */
|
|
switch ((insn >> 16) & 0x7) {
|
|
case 0x0:
|
|
/* 01100101 ..001000 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:818 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FABD(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..001001 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:819 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FSCALE(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 ..001010 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:820 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FMULX(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x4:
|
|
/* 01100101 ..001100 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:821 */
|
|
disas_sve_extract_rdm_pg_rn(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FDIV(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x5:
|
|
/* 01100101 ..001101 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:822 */
|
|
disas_sve_extract_rdn_pg_rm(ctx, &u.f_rprr_esz, insn);
|
|
if (trans_FDIV(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 ..010... 100..... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_87(ctx, &u.f_disas_sve46, insn);
|
|
switch ((insn >> 10) & 0x7) {
|
|
case 0x0:
|
|
/* 01100101 ..010... 100000.. ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:835 */
|
|
if (trans_FTMAD(ctx, &u.f_disas_sve46)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 ..011... 100..... ........ */
|
|
disas_sve_extract_rdn_i1(ctx, &u.f_rpri_esz, insn);
|
|
switch (insn & 0x000703c0) {
|
|
case 0x00000000:
|
|
/* 01100101 ..011000 100...00 00...... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:825 */
|
|
if (trans_FADD_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x00010000:
|
|
/* 01100101 ..011001 100...00 00...... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:826 */
|
|
if (trans_FSUB_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x00020000:
|
|
/* 01100101 ..011010 100...00 00...... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:827 */
|
|
if (trans_FMUL_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x00030000:
|
|
/* 01100101 ..011011 100...00 00...... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:828 */
|
|
if (trans_FSUBR_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x00040000:
|
|
/* 01100101 ..011100 100...00 00...... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:829 */
|
|
if (trans_FMAXNM_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x00050000:
|
|
/* 01100101 ..011101 100...00 00...... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:830 */
|
|
if (trans_FMINNM_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x00060000:
|
|
/* 01100101 ..011110 100...00 00...... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:831 */
|
|
if (trans_FMAX_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
case 0x00070000:
|
|
/* 01100101 ..011111 100...00 00...... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:832 */
|
|
if (trans_FMIN_zpzi(ctx, &u.f_rpri_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..0..... 101..... ........ */
|
|
switch ((insn >> 16) & 0x1f) {
|
|
case 0x0:
|
|
/* 01100101 ..000000 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:880 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FRINTN(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..000001 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:881 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FRINTP(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 ..000010 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:882 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FRINTM(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 ..000011 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:883 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FRINTZ(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x4:
|
|
/* 01100101 ..000100 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:884 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FRINTA(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x6:
|
|
/* 01100101 ..000110 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:885 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FRINTX(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x7:
|
|
/* 01100101 ..000111 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:886 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FRINTI(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x8:
|
|
/* 01100101 ..001000 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x2:
|
|
/* 01100101 10001000 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:856 */
|
|
if (trans_FCVT_sh(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 11001000 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:858 */
|
|
if (trans_FCVT_dh(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x9:
|
|
/* 01100101 ..001001 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x2:
|
|
/* 01100101 10001001 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:857 */
|
|
if (trans_FCVT_hs(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 11001001 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:859 */
|
|
if (trans_FCVT_hd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xa:
|
|
/* 01100101 ..001010 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x3:
|
|
/* 01100101 11001010 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:860 */
|
|
if (trans_FCVT_ds(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xb:
|
|
/* 01100101 ..001011 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x3:
|
|
/* 01100101 11001011 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:861 */
|
|
if (trans_FCVT_sd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0xc:
|
|
/* 01100101 ..001100 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:889 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FRECPX(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0xd:
|
|
/* 01100101 ..001101 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:890 */
|
|
disas_sve_extract_rd_pg_rn(ctx, &u.f_rpr_esz, insn);
|
|
if (trans_FSQRT(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x10:
|
|
/* 01100101 ..010000 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x3:
|
|
/* 01100101 11010000 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:897 */
|
|
if (trans_SCVTF_sd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x11:
|
|
/* 01100101 ..010001 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x3:
|
|
/* 01100101 11010001 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:905 */
|
|
if (trans_UCVTF_sd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x12:
|
|
/* 01100101 ..010010 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01010010 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:893 */
|
|
if (trans_SCVTF_hh(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x13:
|
|
/* 01100101 ..010011 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01010011 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:901 */
|
|
if (trans_UCVTF_hh(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x14:
|
|
/* 01100101 ..010100 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01010100 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:894 */
|
|
if (trans_SCVTF_sh(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 10010100 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:896 */
|
|
if (trans_SCVTF_ss(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 11010100 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:898 */
|
|
if (trans_SCVTF_ds(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x15:
|
|
/* 01100101 ..010101 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01010101 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:902 */
|
|
if (trans_UCVTF_sh(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 10010101 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:904 */
|
|
if (trans_UCVTF_ss(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 11010101 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:906 */
|
|
if (trans_UCVTF_ds(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x16:
|
|
/* 01100101 ..010110 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01010110 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:895 */
|
|
if (trans_SCVTF_dh(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 11010110 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:899 */
|
|
if (trans_SCVTF_dd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x17:
|
|
/* 01100101 ..010111 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01010111 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:903 */
|
|
if (trans_UCVTF_dh(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 11010111 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:907 */
|
|
if (trans_UCVTF_dd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x18:
|
|
/* 01100101 ..011000 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x3:
|
|
/* 01100101 11011000 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:872 */
|
|
if (trans_FCVTZS_ds(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x19:
|
|
/* 01100101 ..011001 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x3:
|
|
/* 01100101 11011001 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:873 */
|
|
if (trans_FCVTZU_ds(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1a:
|
|
/* 01100101 ..011010 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01011010 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:864 */
|
|
if (trans_FCVTZS_hh(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1b:
|
|
/* 01100101 ..011011 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01011011 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:865 */
|
|
if (trans_FCVTZU_hh(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1c:
|
|
/* 01100101 ..011100 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01011100 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:866 */
|
|
if (trans_FCVTZS_hs(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 10011100 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:870 */
|
|
if (trans_FCVTZS_ss(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 11011100 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:874 */
|
|
if (trans_FCVTZS_sd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1d:
|
|
/* 01100101 ..011101 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01011101 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:867 */
|
|
if (trans_FCVTZU_hs(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 10011101 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:871 */
|
|
if (trans_FCVTZU_ss(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 11011101 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:875 */
|
|
if (trans_FCVTZU_sd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1e:
|
|
/* 01100101 ..011110 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01011110 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:868 */
|
|
if (trans_FCVTZS_hd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 11011110 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:876 */
|
|
if (trans_FCVTZS_dd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1f:
|
|
/* 01100101 ..011111 101..... ........ */
|
|
disas_sve_extract_rd_pg_rn_e0(ctx, &u.f_rpr_esz, insn);
|
|
switch ((insn >> 22) & 0x3) {
|
|
case 0x1:
|
|
/* 01100101 01011111 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:869 */
|
|
if (trans_FCVTZU_hd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 11011111 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:877 */
|
|
if (trans_FCVTZU_dd(ctx, &u.f_rpr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 ..0..... 110..... ........ */
|
|
disas_sve_extract_pd_pg_rn_rm(ctx, &u.f_rprr_esz, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 01100101 ..0..... 110..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:345 */
|
|
if (trans_FCMUO_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..0..... 110..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:346 */
|
|
if (trans_FACGE_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 ..0..... 111..... ........ */
|
|
disas_sve_extract_pd_pg_rn_rm(ctx, &u.f_rprr_esz, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x1:
|
|
/* 01100101 ..0..... 111..... ...1.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:347 */
|
|
if (trans_FACGT_ppzz(ctx, &u.f_rprr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x01200000:
|
|
/* 01100101 ..1..... 0....... ........ */
|
|
disas_sve_extract_rda_pg_rn_rm(ctx, &u.f_rprrr_esz, insn);
|
|
switch ((insn >> 13) & 0x3) {
|
|
case 0x0:
|
|
/* 01100101 ..1..... 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:840 */
|
|
if (trans_FMLA_zpzzz(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..1..... 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:841 */
|
|
if (trans_FMLS_zpzzz(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 ..1..... 010..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:842 */
|
|
if (trans_FNMLA_zpzzz(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 ..1..... 011..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:843 */
|
|
if (trans_FNMLS_zpzzz(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x01208000:
|
|
/* 01100101 ..1..... 1....... ........ */
|
|
disas_sve_extract_rdn_pg_rm_ra(ctx, &u.f_rprrr_esz, insn);
|
|
switch ((insn >> 13) & 0x3) {
|
|
case 0x0:
|
|
/* 01100101 ..1..... 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:848 */
|
|
if (trans_FMLA_zpzzz(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 01100101 ..1..... 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:849 */
|
|
if (trans_FMLS_zpzzz(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 01100101 ..1..... 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:850 */
|
|
if (trans_FNMLA_zpzzz(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 01100101 ..1..... 111..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:851 */
|
|
if (trans_FNMLS_zpzzz(ctx, &u.f_rprrr_esz)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x42:
|
|
/* 1000010. ........ ........ ........ */
|
|
switch ((insn >> 15) & 0x1) {
|
|
case 0x0:
|
|
/* 1000010. ........ 0....... ........ */
|
|
switch ((insn >> 23) & 0x3) {
|
|
case 0x0:
|
|
/* 10000100 0....... 0....... ........ */
|
|
switch ((insn >> 21) & 0x1) {
|
|
case 0x0:
|
|
/* 10000100 0.0..... 0....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:923 */
|
|
disas_sve_extract_rprr_g_load_xs_u(ctx, &u.f_rprr_gather_load, insn);
|
|
u.f_rprr_gather_load.esz = 2;
|
|
u.f_rprr_gather_load.msz = 0;
|
|
u.f_rprr_gather_load.scale = 0;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 10000100 0.1..... 0....... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_66(ctx, &u.f_disas_sve32, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 10000100 0.1..... 0....... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:970 */
|
|
if (trans_PRF(ctx, &u.f_disas_sve32)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 10000100 1....... 0....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:925 */
|
|
disas_sve_extract_rprr_g_load_xs_u_sc(ctx, &u.f_rprr_gather_load, insn);
|
|
u.f_rprr_gather_load.esz = 2;
|
|
u.f_rprr_gather_load.msz = 1;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 10000101 0....... 0....... ........ */
|
|
disas_sve_extract_rprr_g_load_xs_sc(ctx, &u.f_rprr_gather_load, insn);
|
|
switch ((insn >> 14) & 0x1) {
|
|
case 0x1:
|
|
/* 10000101 0....... 01...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:927 */
|
|
u.f_rprr_gather_load.esz = 2;
|
|
u.f_rprr_gather_load.msz = 2;
|
|
u.f_rprr_gather_load.u = 1;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x3:
|
|
/* 10000101 1....... 0....... ........ */
|
|
switch ((insn >> 22) & 0x1) {
|
|
case 0x0:
|
|
/* 10000101 10...... 0....... ........ */
|
|
switch ((insn >> 13) & 0x3) {
|
|
case 0x0:
|
|
/* 10000101 10...... 000..... ........ */
|
|
disas_sve_extract_pd_rn_i9(ctx, &u.f_rri, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 10000101 10...... 000..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:912 */
|
|
if (trans_LDR_pri(ctx, &u.f_rri)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x2:
|
|
/* 10000101 10...... 010..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:915 */
|
|
disas_sve_extract_rd_rn_i9(ctx, &u.f_rri, insn);
|
|
if (trans_LDR_zri(ctx, &u.f_rri)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 10000101 11...... 0....... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_66(ctx, &u.f_disas_sve32, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 10000101 11...... 0....... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:976 */
|
|
if (trans_PRF(ctx, &u.f_disas_sve32)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 1000010. ........ 1....... ........ */
|
|
switch ((insn >> 22) & 0x1) {
|
|
case 0x0:
|
|
/* 1000010. .0...... 1....... ........ */
|
|
switch ((insn >> 21) & 0x1) {
|
|
case 0x0:
|
|
/* 1000010. .00..... 1....... ........ */
|
|
switch (insn & 0x00006010) {
|
|
case 0x00004000:
|
|
/* 1000010. .00..... 110..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:979 */
|
|
disas_sve_extract_disas_sve_Fmt_89(ctx, &u.f_disas_sve47, insn);
|
|
if (trans_PRF_rr(ctx, &u.f_disas_sve47)) return true;
|
|
return false;
|
|
case 0x00006000:
|
|
/* 1000010. .00..... 111..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:973 */
|
|
disas_sve_extract_disas_sve_Fmt_66(ctx, &u.f_disas_sve32, insn);
|
|
if (trans_PRF(ctx, &u.f_disas_sve32)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 1000010. .01..... 1....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:931 */
|
|
disas_sve_extract_rpri_g_load(ctx, &u.f_rpri_gather_load, insn);
|
|
u.f_rpri_gather_load.esz = 2;
|
|
if (trans_LD1_zpiz(ctx, &u.f_rpri_gather_load)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 1000010. .1...... 1....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:918 */
|
|
disas_sve_extract_disas_sve_Fmt_88(ctx, &u.f_rpri_load, insn);
|
|
if (trans_LD1R_zpri(ctx, &u.f_rpri_load)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x52:
|
|
/* 1010010. ........ ........ ........ */
|
|
switch ((insn >> 13) & 0x7) {
|
|
case 0x0:
|
|
/* 1010010. ........ 000..... ........ */
|
|
disas_sve_extract_rprr_load_msz(ctx, &u.f_rprr_load, insn);
|
|
switch ((insn >> 21) & 0x3) {
|
|
case 0x0:
|
|
/* 1010010. .00..... 000..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:961 */
|
|
u.f_rprr_load.nreg = 0;
|
|
if (trans_LD1RQ_zprr(ctx, &u.f_rprr_load)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 1010010. ........ 001..... ........ */
|
|
disas_sve_extract_rpri_load_msz(ctx, &u.f_rpri_load, insn);
|
|
switch ((insn >> 20) & 0x7) {
|
|
case 0x0:
|
|
/* 1010010. .000.... 001..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:966 */
|
|
u.f_rpri_load.nreg = 0;
|
|
if (trans_LD1RQ_zpri(ctx, &u.f_rpri_load)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x2:
|
|
/* 1010010. ........ 010..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:937 */
|
|
disas_sve_extract_rprr_load_dt(ctx, &u.f_rprr_load, insn);
|
|
u.f_rprr_load.nreg = 0;
|
|
if (trans_LD_zprr(ctx, &u.f_rprr_load)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 1010010. ........ 011..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:940 */
|
|
disas_sve_extract_rprr_load_dt(ctx, &u.f_rprr_load, insn);
|
|
u.f_rprr_load.nreg = 0;
|
|
if (trans_LDFF1_zprr(ctx, &u.f_rprr_load)) return true;
|
|
return false;
|
|
case 0x5:
|
|
/* 1010010. ........ 101..... ........ */
|
|
disas_sve_extract_rpri_load_dt(ctx, &u.f_rpri_load, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* 1010010. ...0.... 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:943 */
|
|
u.f_rpri_load.nreg = 0;
|
|
if (trans_LD_zpri(ctx, &u.f_rpri_load)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 1010010. ...1.... 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:946 */
|
|
u.f_rpri_load.nreg = 0;
|
|
if (trans_LDNF1_zpri(ctx, &u.f_rpri_load)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x6:
|
|
/* 1010010. ........ 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:952 */
|
|
disas_sve_extract_rprr_load_msz(ctx, &u.f_rprr_load, insn);
|
|
u.f_rprr_load.nreg = extract32(insn, 21, 2);
|
|
if (trans_LD_zprr(ctx, &u.f_rprr_load)) return true;
|
|
return false;
|
|
case 0x7:
|
|
/* 1010010. ........ 111..... ........ */
|
|
disas_sve_extract_rpri_load_msz(ctx, &u.f_rpri_load, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* 1010010. ...0.... 111..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:958 */
|
|
u.f_rpri_load.nreg = extract32(insn, 21, 2);
|
|
if (trans_LD_zpri(ctx, &u.f_rpri_load)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x62:
|
|
/* 1100010. ........ ........ ........ */
|
|
switch ((insn >> 15) & 0x1) {
|
|
case 0x0:
|
|
/* 1100010. ........ 0....... ........ */
|
|
switch ((insn >> 23) & 0x3) {
|
|
case 0x0:
|
|
/* 11000100 0....... 0....... ........ */
|
|
switch ((insn >> 21) & 0x1) {
|
|
case 0x0:
|
|
/* 11000100 0.0..... 0....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:985 */
|
|
disas_sve_extract_rprr_g_load_xs_u(ctx, &u.f_rprr_gather_load, insn);
|
|
u.f_rprr_gather_load.esz = 3;
|
|
u.f_rprr_gather_load.msz = 0;
|
|
u.f_rprr_gather_load.scale = 0;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 11000100 0.1..... 0....... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_66(ctx, &u.f_disas_sve32, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 11000100 0.1..... 0....... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1013 */
|
|
if (trans_PRF(ctx, &u.f_disas_sve32)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 11000100 1....... 0....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:987 */
|
|
disas_sve_extract_rprr_g_load_xs_u_sc(ctx, &u.f_rprr_gather_load, insn);
|
|
u.f_rprr_gather_load.esz = 3;
|
|
u.f_rprr_gather_load.msz = 1;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 11000101 0....... 0....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:989 */
|
|
disas_sve_extract_rprr_g_load_xs_u_sc(ctx, &u.f_rprr_gather_load, insn);
|
|
u.f_rprr_gather_load.esz = 3;
|
|
u.f_rprr_gather_load.msz = 2;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 11000101 1....... 0....... ........ */
|
|
disas_sve_extract_rprr_g_load_xs_sc(ctx, &u.f_rprr_gather_load, insn);
|
|
switch ((insn >> 14) & 0x1) {
|
|
case 0x1:
|
|
/* 11000101 1....... 01...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:991 */
|
|
u.f_rprr_gather_load.esz = 3;
|
|
u.f_rprr_gather_load.msz = 3;
|
|
u.f_rprr_gather_load.u = 1;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 1100010. ........ 1....... ........ */
|
|
switch ((insn >> 22) & 0x1) {
|
|
case 0x0:
|
|
/* 1100010. .0...... 1....... ........ */
|
|
switch ((insn >> 21) & 0x1) {
|
|
case 0x0:
|
|
/* 1100010. .00..... 1....... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_66(ctx, &u.f_disas_sve32, insn);
|
|
switch (insn & 0x00006010) {
|
|
case 0x00006000:
|
|
/* 1100010. .00..... 111..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1016 */
|
|
if (trans_PRF(ctx, &u.f_disas_sve32)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 1100010. .01..... 1....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1006 */
|
|
disas_sve_extract_rpri_g_load(ctx, &u.f_rpri_gather_load, insn);
|
|
u.f_rpri_gather_load.esz = 3;
|
|
if (trans_LD1_zpiz(ctx, &u.f_rpri_gather_load)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 1100010. .1...... 1....... ........ */
|
|
switch ((insn >> 23) & 0x3) {
|
|
case 0x0:
|
|
/* 11000100 01...... 1....... ........ */
|
|
switch ((insn >> 21) & 0x1) {
|
|
case 0x0:
|
|
/* 11000100 010..... 1....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:996 */
|
|
disas_sve_extract_rprr_g_load_u(ctx, &u.f_rprr_gather_load, insn);
|
|
u.f_rprr_gather_load.esz = 3;
|
|
u.f_rprr_gather_load.msz = 0;
|
|
u.f_rprr_gather_load.scale = 0;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 11000100 011..... 1....... ........ */
|
|
disas_sve_extract_disas_sve_Fmt_66(ctx, &u.f_disas_sve32, insn);
|
|
switch ((insn >> 4) & 0x1) {
|
|
case 0x0:
|
|
/* 11000100 011..... 1....... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1010 */
|
|
if (trans_PRF(ctx, &u.f_disas_sve32)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x1:
|
|
/* 11000100 11...... 1....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:998 */
|
|
disas_sve_extract_rprr_g_load_u_sc(ctx, &u.f_rprr_gather_load, insn);
|
|
u.f_rprr_gather_load.esz = 3;
|
|
u.f_rprr_gather_load.msz = 1;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 11000101 01...... 1....... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1000 */
|
|
disas_sve_extract_rprr_g_load_u_sc(ctx, &u.f_rprr_gather_load, insn);
|
|
u.f_rprr_gather_load.esz = 3;
|
|
u.f_rprr_gather_load.msz = 2;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 11000101 11...... 1....... ........ */
|
|
disas_sve_extract_rprr_g_load_sc(ctx, &u.f_rprr_gather_load, insn);
|
|
switch ((insn >> 14) & 0x1) {
|
|
case 0x1:
|
|
/* 11000101 11...... 11...... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1002 */
|
|
u.f_rprr_gather_load.esz = 3;
|
|
u.f_rprr_gather_load.msz = 3;
|
|
u.f_rprr_gather_load.u = 1;
|
|
if (trans_LD1_zprz(ctx, &u.f_rprr_gather_load)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x72:
|
|
/* 1110010. ........ ........ ........ */
|
|
switch ((insn >> 13) & 0x7) {
|
|
case 0x0:
|
|
/* 1110010. ........ 000..... ........ */
|
|
disas_sve_extract_pd_rn_i9(ctx, &u.f_rri, insn);
|
|
switch (insn & 0x01c00010) {
|
|
case 0x01800000:
|
|
/* 11100101 10...... 000..... ...0.... */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1021 */
|
|
if (trans_STR_pri(ctx, &u.f_rri)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x2:
|
|
/* 1110010. ........ 010..... ........ */
|
|
switch ((insn >> 23) & 0x3) {
|
|
case 0x0:
|
|
/* 11100100 0....... 010..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1034 */
|
|
disas_sve_extract_rprr_store_esz_n0(ctx, &u.f_rprr_store, insn);
|
|
u.f_rprr_store.msz = 0;
|
|
if (trans_ST_zprr(ctx, &u.f_rprr_store)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 11100100 1....... 010..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1036 */
|
|
disas_sve_extract_rprr_store_esz_n0(ctx, &u.f_rprr_store, insn);
|
|
u.f_rprr_store.msz = 1;
|
|
if (trans_ST_zprr(ctx, &u.f_rprr_store)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 11100101 0....... 010..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1038 */
|
|
disas_sve_extract_rprr_store_esz_n0(ctx, &u.f_rprr_store, insn);
|
|
u.f_rprr_store.msz = 2;
|
|
if (trans_ST_zprr(ctx, &u.f_rprr_store)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 11100101 1....... 010..... ........ */
|
|
switch ((insn >> 22) & 0x1) {
|
|
case 0x0:
|
|
/* 11100101 10...... 010..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1024 */
|
|
disas_sve_extract_rd_rn_i9(ctx, &u.f_rri, insn);
|
|
if (trans_STR_zri(ctx, &u.f_rri)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 11100101 11...... 010..... ........ */
|
|
disas_sve_extract_rprr_store(ctx, &u.f_rprr_store, insn);
|
|
switch ((insn >> 21) & 0x1) {
|
|
case 0x1:
|
|
/* 11100101 111..... 010..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1040 */
|
|
u.f_rprr_store.msz = 3;
|
|
u.f_rprr_store.esz = 3;
|
|
u.f_rprr_store.nreg = 0;
|
|
if (trans_ST_zprr(ctx, &u.f_rprr_store)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x3:
|
|
/* 1110010. ........ 011..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1050 */
|
|
disas_sve_extract_rprr_store(ctx, &u.f_rprr_store, insn);
|
|
u.f_rprr_store.msz = extract32(insn, 23, 2);
|
|
u.f_rprr_store.nreg = extract32(insn, 21, 2);
|
|
u.f_rprr_store.esz = extract32(insn, 23, 2);
|
|
if (trans_ST_zprr(ctx, &u.f_rprr_store)) return true;
|
|
return false;
|
|
case 0x4:
|
|
/* 1110010. ........ 100..... ........ */
|
|
disas_sve_extract_rprr_scatter_store(ctx, &u.f_rprr_scatter_store, insn);
|
|
switch ((insn >> 21) & 0x3) {
|
|
case 0x0:
|
|
/* 1110010. .00..... 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1092 */
|
|
u.f_rprr_scatter_store.xs = 0;
|
|
u.f_rprr_scatter_store.esz = 3;
|
|
u.f_rprr_scatter_store.scale = 0;
|
|
if (trans_ST1_zprz(ctx, &u.f_rprr_scatter_store)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 1110010. .01..... 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1086 */
|
|
u.f_rprr_scatter_store.xs = 0;
|
|
u.f_rprr_scatter_store.esz = 3;
|
|
u.f_rprr_scatter_store.scale = 1;
|
|
if (trans_ST1_zprz(ctx, &u.f_rprr_scatter_store)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 1110010. .10..... 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1062 */
|
|
u.f_rprr_scatter_store.xs = 0;
|
|
u.f_rprr_scatter_store.esz = 2;
|
|
u.f_rprr_scatter_store.scale = 0;
|
|
if (trans_ST1_zprz(ctx, &u.f_rprr_scatter_store)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 1110010. .11..... 100..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1055 */
|
|
u.f_rprr_scatter_store.xs = 0;
|
|
u.f_rprr_scatter_store.esz = 2;
|
|
u.f_rprr_scatter_store.scale = 1;
|
|
if (trans_ST1_zprz(ctx, &u.f_rprr_scatter_store)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x5:
|
|
/* 1110010. ........ 101..... ........ */
|
|
switch ((insn >> 21) & 0x3) {
|
|
case 0x0:
|
|
/* 1110010. .00..... 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1073 */
|
|
disas_sve_extract_rprr_scatter_store(ctx, &u.f_rprr_scatter_store, insn);
|
|
u.f_rprr_scatter_store.xs = 2;
|
|
u.f_rprr_scatter_store.esz = 3;
|
|
u.f_rprr_scatter_store.scale = 0;
|
|
if (trans_ST1_zprz(ctx, &u.f_rprr_scatter_store)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 1110010. .01..... 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1069 */
|
|
disas_sve_extract_rprr_scatter_store(ctx, &u.f_rprr_scatter_store, insn);
|
|
u.f_rprr_scatter_store.xs = 2;
|
|
u.f_rprr_scatter_store.esz = 3;
|
|
u.f_rprr_scatter_store.scale = 1;
|
|
if (trans_ST1_zprz(ctx, &u.f_rprr_scatter_store)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 1110010. .10..... 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1077 */
|
|
disas_sve_extract_rpri_scatter_store(ctx, &u.f_rpri_scatter_store, insn);
|
|
u.f_rpri_scatter_store.esz = 3;
|
|
if (trans_ST1_zpiz(ctx, &u.f_rpri_scatter_store)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 1110010. .11..... 101..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1081 */
|
|
disas_sve_extract_rpri_scatter_store(ctx, &u.f_rpri_scatter_store, insn);
|
|
u.f_rpri_scatter_store.esz = 2;
|
|
if (trans_ST1_zpiz(ctx, &u.f_rpri_scatter_store)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x6:
|
|
/* 1110010. ........ 110..... ........ */
|
|
disas_sve_extract_rprr_scatter_store(ctx, &u.f_rprr_scatter_store, insn);
|
|
switch ((insn >> 21) & 0x3) {
|
|
case 0x0:
|
|
/* 1110010. .00..... 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1094 */
|
|
u.f_rprr_scatter_store.xs = 1;
|
|
u.f_rprr_scatter_store.esz = 3;
|
|
u.f_rprr_scatter_store.scale = 0;
|
|
if (trans_ST1_zprz(ctx, &u.f_rprr_scatter_store)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 1110010. .01..... 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1088 */
|
|
u.f_rprr_scatter_store.xs = 1;
|
|
u.f_rprr_scatter_store.esz = 3;
|
|
u.f_rprr_scatter_store.scale = 1;
|
|
if (trans_ST1_zprz(ctx, &u.f_rprr_scatter_store)) return true;
|
|
return false;
|
|
case 0x2:
|
|
/* 1110010. .10..... 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1064 */
|
|
u.f_rprr_scatter_store.xs = 1;
|
|
u.f_rprr_scatter_store.esz = 2;
|
|
u.f_rprr_scatter_store.scale = 0;
|
|
if (trans_ST1_zprz(ctx, &u.f_rprr_scatter_store)) return true;
|
|
return false;
|
|
case 0x3:
|
|
/* 1110010. .11..... 110..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1057 */
|
|
u.f_rprr_scatter_store.xs = 1;
|
|
u.f_rprr_scatter_store.esz = 2;
|
|
u.f_rprr_scatter_store.scale = 1;
|
|
if (trans_ST1_zprz(ctx, &u.f_rprr_scatter_store)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
case 0x7:
|
|
/* 1110010. ........ 111..... ........ */
|
|
disas_sve_extract_rpri_store_msz(ctx, &u.f_rpri_store, insn);
|
|
switch ((insn >> 20) & 0x1) {
|
|
case 0x0:
|
|
/* 1110010. ...0.... 111..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1028 */
|
|
u.f_rpri_store.esz = extract32(insn, 21, 2);
|
|
u.f_rpri_store.nreg = 0;
|
|
if (trans_ST_zpri(ctx, &u.f_rpri_store)) return true;
|
|
return false;
|
|
case 0x1:
|
|
/* 1110010. ...1.... 111..... ........ */
|
|
/* /mnt/c/Users/me/Documents/projects/unicorn2/tmp/tmp/qemu-5.0.0/target/arm/sve.decode:1045 */
|
|
u.f_rpri_store.nreg = extract32(insn, 21, 2);
|
|
u.f_rpri_store.esz = extract32(insn, 23, 2);
|
|
if (trans_ST_zpri(ctx, &u.f_rpri_store)) return true;
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|