On Sun, 22 Jun 2025 at 01:00, Richard Henderson
<[email protected]> wrote:
>
> Implement the SVE2p1 consecutive register LD1/ST1,
> and the SME2 strided register LD1/ST1.
>



> +static bool gen_ldst_zcrr_c(DisasContext *s, arg_zcrr_ldst *a,
> +                            bool is_write, bool strided)
> +{
> +    TCGv_i64 addr = tcg_temp_new_i64();
> +
> +    tcg_gen_shli_i64(addr, cpu_reg(s, a->rm), a->esz);
> +    tcg_gen_add_i64(addr, addr, cpu_reg_sp(s, a->rn));
> +    return gen_ldst_c(s, addr, a->rd, a->png, a->esz, is_write,
> +                      a->nreg, strided);
> +}
> +
> +static bool gen_ldst_zcri_c(DisasContext *s, arg_zcri_ldst *a,
> +                            bool is_write, bool strided)
> +{
> +    TCGv_i64 addr = tcg_temp_new_i64();
> +
> +    tcg_gen_addi_i64(addr, cpu_reg_sp(s, a->rn),
> +                     a->imm * vec_full_reg_size(s));
> +    return gen_ldst_c(s, addr, a->rd, a->png, a->esz, is_write,
> +                      a->nreg, strided);
> +}
> +
> +TRANS_FEAT(LD1_zcrr, aa64_sme2_or_sve2p1, gen_ldst_zcrr_c, a, false, false)
> +TRANS_FEAT(LD1_zcri, aa64_sme2_or_sve2p1, gen_ldst_zcri_c, a, false, false)
> +TRANS_FEAT(ST1_zcrr, aa64_sme2_or_sve2p1, gen_ldst_zcrr_c, a, true, false)
> +TRANS_FEAT(ST1_zcri, aa64_sme2_or_sve2p1, gen_ldst_zcri_c, a, true, false)
> +
> +TRANS_FEAT(LD1_zcrr_stride, aa64_sme2, gen_ldst_zcrr_c, a, false, true)
> +TRANS_FEAT(LD1_zcri_stride, aa64_sme2, gen_ldst_zcri_c, a, false, true)
> +TRANS_FEAT(ST1_zcrr_stride, aa64_sme2, gen_ldst_zcrr_c, a, true, true)
> +TRANS_FEAT(ST1_zcri_stride, aa64_sme2, gen_ldst_zcri_c, a, true, true)

These seem to be missing the

  if IsFeatureImplemented(FEAT_SVE2p1) then CheckSVEEnabled(); else
CheckStreamingSVEEnabled();

SVE-enabled checks that the pseudocode has?

thanks
-- PMM

Reply via email to