qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v1 2/6] target/loongarch: Add set_vec_extctx to set LSX/LASX


From: Richard Henderson
Subject: Re: [PATCH v1 2/6] target/loongarch: Add set_vec_extctx to set LSX/LASX instructions extctx_flags
Date: Sat, 28 Oct 2023 14:40:08 -0700
User-agent: Mozilla Thunderbird

On 10/9/23 20:36, Song Gao wrote:
Signed-off-by: Song Gao <gaosong@loongson.cn>
---
  target/loongarch/insn_trans/trans_vec.c.inc | 12 ++++++++++++
  target/loongarch/internals.h                |  2 ++
  2 files changed, 14 insertions(+)

diff --git a/target/loongarch/insn_trans/trans_vec.c.inc 
b/target/loongarch/insn_trans/trans_vec.c.inc
index 98f856bb29..aef16ef44a 100644
--- a/target/loongarch/insn_trans/trans_vec.c.inc
+++ b/target/loongarch/insn_trans/trans_vec.c.inc
@@ -23,8 +23,20 @@ static bool check_vec(DisasContext *ctx, uint32_t oprsz)
#else +static void set_vec_extctx(DisasContext *ctx, uint32_t oprsz)
+{
+    if (oprsz == 16) {
+        ctx->extctx_flags |= EXTCTX_FLAGS_LSX;
+    }
+
+    if (oprsz == 32) {
+        ctx->extctx_flags |= EXTCTX_FLAGS_LASX;
+    }
+}
+
  static bool check_vec(DisasContext *ctx, uint32_t oprsz)
  {
+    set_vec_extctx(ctx, oprsz);
      return true;
  }

This doesn't do anything.  Nothing copies the changed value back to env.
Anyway, I think this is the wrong way to go about it.

If you want to track what the program is using, you should do it exactly like the real kernel: disable the execution unit, have the program trap, and the enable the execution unit when the trap occurs. At this point, CSR_EUEN enable bits contain exactly which units have been used by the program.


r~




reply via email to

[Prev in Thread] Current Thread [Next in Thread]