Replace the same vill reset flow by reset_ill_vtype function.
Signed-off-by: Max Chou <[email protected]>
---
target/riscv/vector_helper.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c
index 525a47bf66..c7b9d6b467 100644
--- a/target/riscv/vector_helper.c
+++ b/target/riscv/vector_helper.c
@@ -49,6 +49,15 @@ static target_ulong vtype_reserved(CPURISCVState *env,
target_ulong vtype)
return reserved;
}
+static inline void reset_ill_vtype(CPURISCVState *env)
+{
+ /* only set vill bit. */
+ env->vill = 1;
+ env->vtype = 0;
+ env->vl = 0;
+ env->vstart = 0;
+}
+
target_ulong HELPER(vsetvl)(CPURISCVState *env, target_ulong s1,
target_ulong s2, target_ulong x0)
{
@@ -83,11 +92,7 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_ulong
s1,
}
if ((sew > cpu->cfg.elen) || vill || (vtype_reserved(env, s2) != 0)) {
- /* only set vill bit. */
- env->vill = 1;
- env->vtype = 0;
- env->vl = 0;
- env->vstart = 0;
+ reset_ill_vtype(env);
return 0;
}
@@ -103,11 +108,7 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env,
target_ulong s1,
}
if (cpu->cfg.rvv_vsetvl_x0_vill && x0 && (env->vl != vl)) {
- /* only set vill bit. */
- env->vill = 1;
- env->vtype = 0;
- env->vl = 0;
- env->vstart = 0;
+ reset_ill_vtype(env);
return 0;
}
--
2.43.7