target/arm: Add data argument to do_fp3_vector

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240625183536.1672454-11-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Richard Henderson 2024-06-25 11:35:33 -07:00 committed by Peter Maydell
parent 9676c9d9b5
commit 6515b13e87

View File

@ -5290,7 +5290,7 @@ TRANS(CMHS_s, do_cmop_d, a, TCG_COND_GEU)
TRANS(CMEQ_s, do_cmop_d, a, TCG_COND_EQ) TRANS(CMEQ_s, do_cmop_d, a, TCG_COND_EQ)
TRANS(CMTST_s, do_cmop_d, a, TCG_COND_TSTNE) TRANS(CMTST_s, do_cmop_d, a, TCG_COND_TSTNE)
static bool do_fp3_vector(DisasContext *s, arg_qrrr_e *a, static bool do_fp3_vector(DisasContext *s, arg_qrrr_e *a, int data,
gen_helper_gvec_3_ptr * const fns[3]) gen_helper_gvec_3_ptr * const fns[3])
{ {
MemOp esz = a->esz; MemOp esz = a->esz;
@ -5313,7 +5313,7 @@ static bool do_fp3_vector(DisasContext *s, arg_qrrr_e *a,
} }
if (fp_access_check(s)) { if (fp_access_check(s)) {
gen_gvec_op3_fpst(s, a->q, a->rd, a->rn, a->rm, gen_gvec_op3_fpst(s, a->q, a->rd, a->rn, a->rm,
esz == MO_16, 0, fns[esz - 1]); esz == MO_16, data, fns[esz - 1]);
} }
return true; return true;
} }
@ -5323,168 +5323,168 @@ static gen_helper_gvec_3_ptr * const f_vector_fadd[3] = {
gen_helper_gvec_fadd_s, gen_helper_gvec_fadd_s,
gen_helper_gvec_fadd_d, gen_helper_gvec_fadd_d,
}; };
TRANS(FADD_v, do_fp3_vector, a, f_vector_fadd) TRANS(FADD_v, do_fp3_vector, a, 0, f_vector_fadd)
static gen_helper_gvec_3_ptr * const f_vector_fsub[3] = { static gen_helper_gvec_3_ptr * const f_vector_fsub[3] = {
gen_helper_gvec_fsub_h, gen_helper_gvec_fsub_h,
gen_helper_gvec_fsub_s, gen_helper_gvec_fsub_s,
gen_helper_gvec_fsub_d, gen_helper_gvec_fsub_d,
}; };
TRANS(FSUB_v, do_fp3_vector, a, f_vector_fsub) TRANS(FSUB_v, do_fp3_vector, a, 0, f_vector_fsub)
static gen_helper_gvec_3_ptr * const f_vector_fdiv[3] = { static gen_helper_gvec_3_ptr * const f_vector_fdiv[3] = {
gen_helper_gvec_fdiv_h, gen_helper_gvec_fdiv_h,
gen_helper_gvec_fdiv_s, gen_helper_gvec_fdiv_s,
gen_helper_gvec_fdiv_d, gen_helper_gvec_fdiv_d,
}; };
TRANS(FDIV_v, do_fp3_vector, a, f_vector_fdiv) TRANS(FDIV_v, do_fp3_vector, a, 0, f_vector_fdiv)
static gen_helper_gvec_3_ptr * const f_vector_fmul[3] = { static gen_helper_gvec_3_ptr * const f_vector_fmul[3] = {
gen_helper_gvec_fmul_h, gen_helper_gvec_fmul_h,
gen_helper_gvec_fmul_s, gen_helper_gvec_fmul_s,
gen_helper_gvec_fmul_d, gen_helper_gvec_fmul_d,
}; };
TRANS(FMUL_v, do_fp3_vector, a, f_vector_fmul) TRANS(FMUL_v, do_fp3_vector, a, 0, f_vector_fmul)
static gen_helper_gvec_3_ptr * const f_vector_fmax[3] = { static gen_helper_gvec_3_ptr * const f_vector_fmax[3] = {
gen_helper_gvec_fmax_h, gen_helper_gvec_fmax_h,
gen_helper_gvec_fmax_s, gen_helper_gvec_fmax_s,
gen_helper_gvec_fmax_d, gen_helper_gvec_fmax_d,
}; };
TRANS(FMAX_v, do_fp3_vector, a, f_vector_fmax) TRANS(FMAX_v, do_fp3_vector, a, 0, f_vector_fmax)
static gen_helper_gvec_3_ptr * const f_vector_fmin[3] = { static gen_helper_gvec_3_ptr * const f_vector_fmin[3] = {
gen_helper_gvec_fmin_h, gen_helper_gvec_fmin_h,
gen_helper_gvec_fmin_s, gen_helper_gvec_fmin_s,
gen_helper_gvec_fmin_d, gen_helper_gvec_fmin_d,
}; };
TRANS(FMIN_v, do_fp3_vector, a, f_vector_fmin) TRANS(FMIN_v, do_fp3_vector, a, 0, f_vector_fmin)
static gen_helper_gvec_3_ptr * const f_vector_fmaxnm[3] = { static gen_helper_gvec_3_ptr * const f_vector_fmaxnm[3] = {
gen_helper_gvec_fmaxnum_h, gen_helper_gvec_fmaxnum_h,
gen_helper_gvec_fmaxnum_s, gen_helper_gvec_fmaxnum_s,
gen_helper_gvec_fmaxnum_d, gen_helper_gvec_fmaxnum_d,
}; };
TRANS(FMAXNM_v, do_fp3_vector, a, f_vector_fmaxnm) TRANS(FMAXNM_v, do_fp3_vector, a, 0, f_vector_fmaxnm)
static gen_helper_gvec_3_ptr * const f_vector_fminnm[3] = { static gen_helper_gvec_3_ptr * const f_vector_fminnm[3] = {
gen_helper_gvec_fminnum_h, gen_helper_gvec_fminnum_h,
gen_helper_gvec_fminnum_s, gen_helper_gvec_fminnum_s,
gen_helper_gvec_fminnum_d, gen_helper_gvec_fminnum_d,
}; };
TRANS(FMINNM_v, do_fp3_vector, a, f_vector_fminnm) TRANS(FMINNM_v, do_fp3_vector, a, 0, f_vector_fminnm)
static gen_helper_gvec_3_ptr * const f_vector_fmulx[3] = { static gen_helper_gvec_3_ptr * const f_vector_fmulx[3] = {
gen_helper_gvec_fmulx_h, gen_helper_gvec_fmulx_h,
gen_helper_gvec_fmulx_s, gen_helper_gvec_fmulx_s,
gen_helper_gvec_fmulx_d, gen_helper_gvec_fmulx_d,
}; };
TRANS(FMULX_v, do_fp3_vector, a, f_vector_fmulx) TRANS(FMULX_v, do_fp3_vector, a, 0, f_vector_fmulx)
static gen_helper_gvec_3_ptr * const f_vector_fmla[3] = { static gen_helper_gvec_3_ptr * const f_vector_fmla[3] = {
gen_helper_gvec_vfma_h, gen_helper_gvec_vfma_h,
gen_helper_gvec_vfma_s, gen_helper_gvec_vfma_s,
gen_helper_gvec_vfma_d, gen_helper_gvec_vfma_d,
}; };
TRANS(FMLA_v, do_fp3_vector, a, f_vector_fmla) TRANS(FMLA_v, do_fp3_vector, a, 0, f_vector_fmla)
static gen_helper_gvec_3_ptr * const f_vector_fmls[3] = { static gen_helper_gvec_3_ptr * const f_vector_fmls[3] = {
gen_helper_gvec_vfms_h, gen_helper_gvec_vfms_h,
gen_helper_gvec_vfms_s, gen_helper_gvec_vfms_s,
gen_helper_gvec_vfms_d, gen_helper_gvec_vfms_d,
}; };
TRANS(FMLS_v, do_fp3_vector, a, f_vector_fmls) TRANS(FMLS_v, do_fp3_vector, a, 0, f_vector_fmls)
static gen_helper_gvec_3_ptr * const f_vector_fcmeq[3] = { static gen_helper_gvec_3_ptr * const f_vector_fcmeq[3] = {
gen_helper_gvec_fceq_h, gen_helper_gvec_fceq_h,
gen_helper_gvec_fceq_s, gen_helper_gvec_fceq_s,
gen_helper_gvec_fceq_d, gen_helper_gvec_fceq_d,
}; };
TRANS(FCMEQ_v, do_fp3_vector, a, f_vector_fcmeq) TRANS(FCMEQ_v, do_fp3_vector, a, 0, f_vector_fcmeq)
static gen_helper_gvec_3_ptr * const f_vector_fcmge[3] = { static gen_helper_gvec_3_ptr * const f_vector_fcmge[3] = {
gen_helper_gvec_fcge_h, gen_helper_gvec_fcge_h,
gen_helper_gvec_fcge_s, gen_helper_gvec_fcge_s,
gen_helper_gvec_fcge_d, gen_helper_gvec_fcge_d,
}; };
TRANS(FCMGE_v, do_fp3_vector, a, f_vector_fcmge) TRANS(FCMGE_v, do_fp3_vector, a, 0, f_vector_fcmge)
static gen_helper_gvec_3_ptr * const f_vector_fcmgt[3] = { static gen_helper_gvec_3_ptr * const f_vector_fcmgt[3] = {
gen_helper_gvec_fcgt_h, gen_helper_gvec_fcgt_h,
gen_helper_gvec_fcgt_s, gen_helper_gvec_fcgt_s,
gen_helper_gvec_fcgt_d, gen_helper_gvec_fcgt_d,
}; };
TRANS(FCMGT_v, do_fp3_vector, a, f_vector_fcmgt) TRANS(FCMGT_v, do_fp3_vector, a, 0, f_vector_fcmgt)
static gen_helper_gvec_3_ptr * const f_vector_facge[3] = { static gen_helper_gvec_3_ptr * const f_vector_facge[3] = {
gen_helper_gvec_facge_h, gen_helper_gvec_facge_h,
gen_helper_gvec_facge_s, gen_helper_gvec_facge_s,
gen_helper_gvec_facge_d, gen_helper_gvec_facge_d,
}; };
TRANS(FACGE_v, do_fp3_vector, a, f_vector_facge) TRANS(FACGE_v, do_fp3_vector, a, 0, f_vector_facge)
static gen_helper_gvec_3_ptr * const f_vector_facgt[3] = { static gen_helper_gvec_3_ptr * const f_vector_facgt[3] = {
gen_helper_gvec_facgt_h, gen_helper_gvec_facgt_h,
gen_helper_gvec_facgt_s, gen_helper_gvec_facgt_s,
gen_helper_gvec_facgt_d, gen_helper_gvec_facgt_d,
}; };
TRANS(FACGT_v, do_fp3_vector, a, f_vector_facgt) TRANS(FACGT_v, do_fp3_vector, a, 0, f_vector_facgt)
static gen_helper_gvec_3_ptr * const f_vector_fabd[3] = { static gen_helper_gvec_3_ptr * const f_vector_fabd[3] = {
gen_helper_gvec_fabd_h, gen_helper_gvec_fabd_h,
gen_helper_gvec_fabd_s, gen_helper_gvec_fabd_s,
gen_helper_gvec_fabd_d, gen_helper_gvec_fabd_d,
}; };
TRANS(FABD_v, do_fp3_vector, a, f_vector_fabd) TRANS(FABD_v, do_fp3_vector, a, 0, f_vector_fabd)
static gen_helper_gvec_3_ptr * const f_vector_frecps[3] = { static gen_helper_gvec_3_ptr * const f_vector_frecps[3] = {
gen_helper_gvec_recps_h, gen_helper_gvec_recps_h,
gen_helper_gvec_recps_s, gen_helper_gvec_recps_s,
gen_helper_gvec_recps_d, gen_helper_gvec_recps_d,
}; };
TRANS(FRECPS_v, do_fp3_vector, a, f_vector_frecps) TRANS(FRECPS_v, do_fp3_vector, a, 0, f_vector_frecps)
static gen_helper_gvec_3_ptr * const f_vector_frsqrts[3] = { static gen_helper_gvec_3_ptr * const f_vector_frsqrts[3] = {
gen_helper_gvec_rsqrts_h, gen_helper_gvec_rsqrts_h,
gen_helper_gvec_rsqrts_s, gen_helper_gvec_rsqrts_s,
gen_helper_gvec_rsqrts_d, gen_helper_gvec_rsqrts_d,
}; };
TRANS(FRSQRTS_v, do_fp3_vector, a, f_vector_frsqrts) TRANS(FRSQRTS_v, do_fp3_vector, a, 0, f_vector_frsqrts)
static gen_helper_gvec_3_ptr * const f_vector_faddp[3] = { static gen_helper_gvec_3_ptr * const f_vector_faddp[3] = {
gen_helper_gvec_faddp_h, gen_helper_gvec_faddp_h,
gen_helper_gvec_faddp_s, gen_helper_gvec_faddp_s,
gen_helper_gvec_faddp_d, gen_helper_gvec_faddp_d,
}; };
TRANS(FADDP_v, do_fp3_vector, a, f_vector_faddp) TRANS(FADDP_v, do_fp3_vector, a, 0, f_vector_faddp)
static gen_helper_gvec_3_ptr * const f_vector_fmaxp[3] = { static gen_helper_gvec_3_ptr * const f_vector_fmaxp[3] = {
gen_helper_gvec_fmaxp_h, gen_helper_gvec_fmaxp_h,
gen_helper_gvec_fmaxp_s, gen_helper_gvec_fmaxp_s,
gen_helper_gvec_fmaxp_d, gen_helper_gvec_fmaxp_d,
}; };
TRANS(FMAXP_v, do_fp3_vector, a, f_vector_fmaxp) TRANS(FMAXP_v, do_fp3_vector, a, 0, f_vector_fmaxp)
static gen_helper_gvec_3_ptr * const f_vector_fminp[3] = { static gen_helper_gvec_3_ptr * const f_vector_fminp[3] = {
gen_helper_gvec_fminp_h, gen_helper_gvec_fminp_h,
gen_helper_gvec_fminp_s, gen_helper_gvec_fminp_s,
gen_helper_gvec_fminp_d, gen_helper_gvec_fminp_d,
}; };
TRANS(FMINP_v, do_fp3_vector, a, f_vector_fminp) TRANS(FMINP_v, do_fp3_vector, a, 0, f_vector_fminp)
static gen_helper_gvec_3_ptr * const f_vector_fmaxnmp[3] = { static gen_helper_gvec_3_ptr * const f_vector_fmaxnmp[3] = {
gen_helper_gvec_fmaxnump_h, gen_helper_gvec_fmaxnump_h,
gen_helper_gvec_fmaxnump_s, gen_helper_gvec_fmaxnump_s,
gen_helper_gvec_fmaxnump_d, gen_helper_gvec_fmaxnump_d,
}; };
TRANS(FMAXNMP_v, do_fp3_vector, a, f_vector_fmaxnmp) TRANS(FMAXNMP_v, do_fp3_vector, a, 0, f_vector_fmaxnmp)
static gen_helper_gvec_3_ptr * const f_vector_fminnmp[3] = { static gen_helper_gvec_3_ptr * const f_vector_fminnmp[3] = {
gen_helper_gvec_fminnump_h, gen_helper_gvec_fminnump_h,
gen_helper_gvec_fminnump_s, gen_helper_gvec_fminnump_s,
gen_helper_gvec_fminnump_d, gen_helper_gvec_fminnump_d,
}; };
TRANS(FMINNMP_v, do_fp3_vector, a, f_vector_fminnmp) TRANS(FMINNMP_v, do_fp3_vector, a, 0, f_vector_fminnmp)
static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2)
{ {