target/riscv: Use env_archcpu() in [check_]nanbox()
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 <rjones@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com> Reviewed-by: Richard W.M. Jones <rjones@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-Id: <20231009110239.66778-3-philmd@linaro.org>
This commit is contained in:
parent
b0a1333331
commit
edf67fb4c2
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user