mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
target/arm: Introduce gen_gvec_sve2_sqdmulh
To be used by both SVE2 and SME2. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20250704142112.1018902-30-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
committed by
Peter Maydell
parent
e129ceae82
commit
baf450ef83
@@ -369,3 +369,14 @@ void gen_gvec_usqadd_qc(unsigned vece, uint32_t rd_ofs,
|
||||
tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
|
||||
rn_ofs, rm_ofs, opr_sz, max_sz, &ops[vece]);
|
||||
}
|
||||
|
||||
void gen_gvec_sve2_sqdmulh(unsigned vece, uint32_t rd_ofs,
|
||||
uint32_t rn_ofs, uint32_t rm_ofs,
|
||||
uint32_t opr_sz, uint32_t max_sz)
|
||||
{
|
||||
static gen_helper_gvec_3 * const fns[4] = {
|
||||
gen_helper_sve2_sqdmulh_b, gen_helper_sve2_sqdmulh_h,
|
||||
gen_helper_sve2_sqdmulh_s, gen_helper_sve2_sqdmulh_d,
|
||||
};
|
||||
tcg_gen_gvec_3_ool(rd_ofs, rn_ofs, rm_ofs, opr_sz, max_sz, 0, fns[vece]);
|
||||
}
|
||||
|
||||
@@ -225,6 +225,10 @@ void gen_gvec_usqadd_qc(unsigned vece, uint32_t rd_ofs,
|
||||
uint32_t rn_ofs, uint32_t rm_ofs,
|
||||
uint32_t opr_sz, uint32_t max_sz);
|
||||
|
||||
void gen_gvec_sve2_sqdmulh(unsigned vece, uint32_t rd_ofs,
|
||||
uint32_t rn_ofs, uint32_t rm_ofs,
|
||||
uint32_t opr_sz, uint32_t max_sz);
|
||||
|
||||
void gen_sve_ldr(DisasContext *s, TCGv_ptr, int vofs,
|
||||
int len, int rn, int imm, MemOp align);
|
||||
void gen_sve_str(DisasContext *s, TCGv_ptr, int vofs,
|
||||
|
||||
@@ -5948,6 +5948,7 @@ TRANS_FEAT(MOVPRFX_z, aa64_sve, do_movz_zpz, a->rd, a->rn, a->pg, a->esz, false)
|
||||
*/
|
||||
|
||||
TRANS_FEAT(MUL_zzz, aa64_sve2, gen_gvec_fn_arg_zzz, tcg_gen_gvec_mul, a)
|
||||
TRANS_FEAT(SQDMULH_zzz, aa64_sve2, gen_gvec_fn_arg_zzz, gen_gvec_sve2_sqdmulh, a)
|
||||
|
||||
static gen_helper_gvec_3 * const smulh_zzz_fns[4] = {
|
||||
gen_helper_gvec_smulh_b, gen_helper_gvec_smulh_h,
|
||||
@@ -5966,13 +5967,6 @@ TRANS_FEAT(UMULH_zzz, aa64_sve2, gen_gvec_ool_arg_zzz,
|
||||
TRANS_FEAT(PMUL_zzz, aa64_sve2, gen_gvec_ool_arg_zzz,
|
||||
gen_helper_gvec_pmul_b, a, 0)
|
||||
|
||||
static gen_helper_gvec_3 * const sqdmulh_zzz_fns[4] = {
|
||||
gen_helper_sve2_sqdmulh_b, gen_helper_sve2_sqdmulh_h,
|
||||
gen_helper_sve2_sqdmulh_s, gen_helper_sve2_sqdmulh_d,
|
||||
};
|
||||
TRANS_FEAT(SQDMULH_zzz, aa64_sve2, gen_gvec_ool_arg_zzz,
|
||||
sqdmulh_zzz_fns[a->esz], a, 0)
|
||||
|
||||
static gen_helper_gvec_3 * const sqrdmulh_zzz_fns[4] = {
|
||||
gen_helper_sve2_sqrdmulh_b, gen_helper_sve2_sqrdmulh_h,
|
||||
gen_helper_sve2_sqrdmulh_s, gen_helper_sve2_sqrdmulh_d,
|
||||
|
||||
Reference in New Issue
Block a user