target/arm: Implement SME ZERO
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220708151540.18136-19-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
0d93576034
commit
ad939afbfa
|
@ -19,3 +19,5 @@
|
|||
|
||||
DEF_HELPER_FLAGS_2(set_pstate_sm, TCG_CALL_NO_RWG, void, env, i32)
|
||||
DEF_HELPER_FLAGS_2(set_pstate_za, TCG_CALL_NO_RWG, void, env, i32)
|
||||
|
||||
DEF_HELPER_FLAGS_3(sme_zero, TCG_CALL_NO_RWG, void, env, i32, i32)
|
||||
|
|
|
@ -18,3 +18,7 @@
|
|||
#
|
||||
# This file is processed by scripts/decodetree.py
|
||||
#
|
||||
|
||||
### SME Misc
|
||||
|
||||
ZERO 11000000 00 001 00000000000 imm:8
|
||||
|
|
|
@ -59,3 +59,28 @@ void helper_set_pstate_za(CPUARMState *env, uint32_t i)
|
|||
memset(env->zarray, 0, sizeof(env->zarray));
|
||||
}
|
||||
}
|
||||
|
||||
void helper_sme_zero(CPUARMState *env, uint32_t imm, uint32_t svl)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
/*
|
||||
* Special case clearing the entire ZA space.
|
||||
* This falls into the CONSTRAINED UNPREDICTABLE zeroing of any
|
||||
* parts of the ZA storage outside of SVL.
|
||||
*/
|
||||
if (imm == 0xff) {
|
||||
memset(env->zarray, 0, sizeof(env->zarray));
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Recall that ZAnH.D[m] is spread across ZA[n+8*m],
|
||||
* so each row is discontiguous within ZA[].
|
||||
*/
|
||||
for (i = 0; i < svl; i++) {
|
||||
if (imm & (1 << (i % 8))) {
|
||||
memset(&env->zarray[i], 0, svl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,3 +33,16 @@
|
|||
*/
|
||||
|
||||
#include "decode-sme.c.inc"
|
||||
|
||||
|
||||
static bool trans_ZERO(DisasContext *s, arg_ZERO *a)
|
||||
{
|
||||
if (!dc_isar_feature(aa64_sme, s)) {
|
||||
return false;
|
||||
}
|
||||
if (sme_za_enabled_check(s)) {
|
||||
gen_helper_sme_zero(cpu_env, tcg_constant_i32(a->imm),
|
||||
tcg_constant_i32(streaming_vec_reg_size(s)));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue