target/arm: Mark BDEP, BEXT, BGRP, COMPACT, FEXPA, FTSSEL as non-streaming
Mark these as a non-streaming instructions, which should trap if full a64 support is not enabled in streaming mode. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220708151540.18136-7-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
39001c6b9b
commit
ca363d233f
|
@ -59,9 +59,6 @@ FAIL 0001 1110 0111 1110 0000 00-- ---- ---- # FJCVTZS
|
|||
# --11 1100 --1- ---- ---- ---- ---- --10 # Load/store FP register (register offset)
|
||||
# --11 1101 ---- ---- ---- ---- ---- ---- # Load/store FP register (scaled imm)
|
||||
|
||||
FAIL 0000 0100 --1- ---- 1011 -0-- ---- ---- # FTSSEL, FEXPA
|
||||
FAIL 0000 0101 --10 0001 100- ---- ---- ---- # COMPACT
|
||||
FAIL 0100 0101 --0- ---- 1011 ---- ---- ---- # BDEP, BEXT, BGRP
|
||||
FAIL 0100 0101 000- ---- 0110 1--- ---- ---- # PMULLB, PMULLT (128b result)
|
||||
FAIL 0110 0100 --1- ---- 1110 01-- ---- ---- # FMMLA, BFMMLA
|
||||
FAIL 0110 0101 --0- ---- 0000 11-- ---- ---- # FTSMUL
|
||||
|
|
|
@ -1333,14 +1333,15 @@ static gen_helper_gvec_2 * const fexpa_fns[4] = {
|
|||
NULL, gen_helper_sve_fexpa_h,
|
||||
gen_helper_sve_fexpa_s, gen_helper_sve_fexpa_d,
|
||||
};
|
||||
TRANS_FEAT(FEXPA, aa64_sve, gen_gvec_ool_zz,
|
||||
fexpa_fns[a->esz], a->rd, a->rn, 0)
|
||||
TRANS_FEAT_NONSTREAMING(FEXPA, aa64_sve, gen_gvec_ool_zz,
|
||||
fexpa_fns[a->esz], a->rd, a->rn, 0)
|
||||
|
||||
static gen_helper_gvec_3 * const ftssel_fns[4] = {
|
||||
NULL, gen_helper_sve_ftssel_h,
|
||||
gen_helper_sve_ftssel_s, gen_helper_sve_ftssel_d,
|
||||
};
|
||||
TRANS_FEAT(FTSSEL, aa64_sve, gen_gvec_ool_arg_zzz, ftssel_fns[a->esz], a, 0)
|
||||
TRANS_FEAT_NONSTREAMING(FTSSEL, aa64_sve, gen_gvec_ool_arg_zzz,
|
||||
ftssel_fns[a->esz], a, 0)
|
||||
|
||||
/*
|
||||
*** SVE Predicate Logical Operations Group
|
||||
|
@ -2536,7 +2537,8 @@ TRANS_FEAT(TRN2_q, aa64_sve_f64mm, gen_gvec_ool_arg_zzz,
|
|||
static gen_helper_gvec_3 * const compact_fns[4] = {
|
||||
NULL, NULL, gen_helper_sve_compact_s, gen_helper_sve_compact_d
|
||||
};
|
||||
TRANS_FEAT(COMPACT, aa64_sve, gen_gvec_ool_arg_zpz, compact_fns[a->esz], a, 0)
|
||||
TRANS_FEAT_NONSTREAMING(COMPACT, aa64_sve, gen_gvec_ool_arg_zpz,
|
||||
compact_fns[a->esz], a, 0)
|
||||
|
||||
/* Call the helper that computes the ARM LastActiveElement pseudocode
|
||||
* function, scaled by the element size. This includes the not found
|
||||
|
@ -6374,22 +6376,22 @@ static gen_helper_gvec_3 * const bext_fns[4] = {
|
|||
gen_helper_sve2_bext_b, gen_helper_sve2_bext_h,
|
||||
gen_helper_sve2_bext_s, gen_helper_sve2_bext_d,
|
||||
};
|
||||
TRANS_FEAT(BEXT, aa64_sve2_bitperm, gen_gvec_ool_arg_zzz,
|
||||
bext_fns[a->esz], a, 0)
|
||||
TRANS_FEAT_NONSTREAMING(BEXT, aa64_sve2_bitperm, gen_gvec_ool_arg_zzz,
|
||||
bext_fns[a->esz], a, 0)
|
||||
|
||||
static gen_helper_gvec_3 * const bdep_fns[4] = {
|
||||
gen_helper_sve2_bdep_b, gen_helper_sve2_bdep_h,
|
||||
gen_helper_sve2_bdep_s, gen_helper_sve2_bdep_d,
|
||||
};
|
||||
TRANS_FEAT(BDEP, aa64_sve2_bitperm, gen_gvec_ool_arg_zzz,
|
||||
bdep_fns[a->esz], a, 0)
|
||||
TRANS_FEAT_NONSTREAMING(BDEP, aa64_sve2_bitperm, gen_gvec_ool_arg_zzz,
|
||||
bdep_fns[a->esz], a, 0)
|
||||
|
||||
static gen_helper_gvec_3 * const bgrp_fns[4] = {
|
||||
gen_helper_sve2_bgrp_b, gen_helper_sve2_bgrp_h,
|
||||
gen_helper_sve2_bgrp_s, gen_helper_sve2_bgrp_d,
|
||||
};
|
||||
TRANS_FEAT(BGRP, aa64_sve2_bitperm, gen_gvec_ool_arg_zzz,
|
||||
bgrp_fns[a->esz], a, 0)
|
||||
TRANS_FEAT_NONSTREAMING(BGRP, aa64_sve2_bitperm, gen_gvec_ool_arg_zzz,
|
||||
bgrp_fns[a->esz], a, 0)
|
||||
|
||||
static gen_helper_gvec_3 * const cadd_fns[4] = {
|
||||
gen_helper_sve2_cadd_b, gen_helper_sve2_cadd_h,
|
||||
|
|
Loading…
Reference in New Issue