On Tue, 28 Jun 2022 at 05:28, Richard Henderson <richard.hender...@linaro.org> wrote: > > Mark these as a non-streaming instructions, which should trap > if full a64 support is not enabled in streaming mode. > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > target/arm/sme-fa64.decode | 2 -- > target/arm/translate-sve.c | 18 ++++++++++-------- > 2 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/target/arm/sme-fa64.decode b/target/arm/sme-fa64.decode > index c25bad5ee5..c75a94e0fc 100644 > --- a/target/arm/sme-fa64.decode > +++ b/target/arm/sme-fa64.decode > @@ -58,8 +58,6 @@ FAIL 1100 1110 ---- ---- ---- ---- ---- ---- # > Advanced SIMD cryptography e > # --11 1100 --1- ---- ---- ---- ---- --10 # Load/store FP register > (register offset) > # --11 1101 ---- ---- ---- ---- ---- ---- # Load/store FP register > (scaled imm) > > -FAIL 0100 0101 000- ---- 0110 1--- ---- ---- # PMULLB, PMULLT (128b > result)
This encoding pattern (as the comment says) covers only the esize = 128 case... > -TRANS_FEAT(PMULLB, aa64_sve2, do_trans_pmull, a, false) > -TRANS_FEAT(PMULLT, aa64_sve2, do_trans_pmull, a, true) > +TRANS_FEAT_NONSTREAMING(PMULLB, aa64_sve2, do_trans_pmull, a, false) > +TRANS_FEAT_NONSTREAMING(PMULLT, aa64_sve2, do_trans_pmull, a, true) ..but these trans functions cover all the esize values. In the pseudocode for PMULLB/PMULLT it explicitly does if esize < 128 then CheckSVEEnabled(); else CheckNonStreamingSVEEnabled(); so it is definitely intended to distinguish the 128 bit case from the 16 and 64 bit ones. thanks -- PMM