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:
parent
e129ceae82
commit
baf450ef83
3 changed files with 16 additions and 7 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue