On 2023/10/9 19:02, Philippe Mathieu-Daudé wrote:
When CPUArchState* is available (here CPURISCVState*), we
can use the fast env_archcpu() macro to get ArchCPU* (here
RISCVCPU*). The QOM cast RISCV_CPU() macro will be slower
when building with --enable-qom-cast-debug.

Inspired-by: Richard W.M. Jones <rjo...@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org>

Reviewed-by: LIU Zhiwei <zhiwei_...@linux.alibaba.com>

By the way, does the community has the plan to support heterogeneous architecture cpus in one soc?
If so, maybe we have to do this qom cast somewhere.

Zhiwei

---
  target/riscv/internals.h | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/target/riscv/internals.h b/target/riscv/internals.h
index b5f823c7ec..8239ae83cc 100644
--- a/target/riscv/internals.h
+++ b/target/riscv/internals.h
@@ -87,7 +87,7 @@ enum {
  static inline uint64_t nanbox_s(CPURISCVState *env, float32 f)
  {
      /* the value is sign-extended instead of NaN-boxing for zfinx */
-    if (RISCV_CPU(env_cpu(env))->cfg.ext_zfinx) {
+    if (env_archcpu(env)->cfg.ext_zfinx) {
          return (int32_t)f;
      } else {
          return f | MAKE_64BIT_MASK(32, 32);
@@ -97,7 +97,7 @@ static inline uint64_t nanbox_s(CPURISCVState *env, float32 f)
  static inline float32 check_nanbox_s(CPURISCVState *env, uint64_t f)
  {
      /* Disable NaN-boxing check when enable zfinx */
-    if (RISCV_CPU(env_cpu(env))->cfg.ext_zfinx) {
+    if (env_archcpu(env)->cfg.ext_zfinx) {
          return (uint32_t)f;
      }
@@ -113,7 +113,7 @@ static inline float32 check_nanbox_s(CPURISCVState *env, uint64_t f)
  static inline uint64_t nanbox_h(CPURISCVState *env, float16 f)
  {
      /* the value is sign-extended instead of NaN-boxing for zfinx */
-    if (RISCV_CPU(env_cpu(env))->cfg.ext_zfinx) {
+    if (env_archcpu(env)->cfg.ext_zfinx) {
          return (int16_t)f;
      } else {
          return f | MAKE_64BIT_MASK(16, 48);
@@ -123,7 +123,7 @@ static inline uint64_t nanbox_h(CPURISCVState *env, float16 
f)
  static inline float16 check_nanbox_h(CPURISCVState *env, uint64_t f)
  {
      /* Disable nanbox check when enable zfinx */
-    if (RISCV_CPU(env_cpu(env))->cfg.ext_zfinx) {
+    if (env_archcpu(env)->cfg.ext_zfinx) {
          return (uint16_t)f;
      }

Reply via email to