[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 20/72] softfloat: Use pointers with pack_raw
From: |
Richard Henderson |
Subject: |
[PATCH 20/72] softfloat: Use pointers with pack_raw |
Date: |
Fri, 7 May 2021 18:47:10 -0700 |
At the same time, rename to pack_raw64.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
fpu/softfloat.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 5a736a46cf..b59b777bca 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -614,31 +614,36 @@ static inline void float64_unpack_raw(FloatParts64 *p,
float64 f)
}
/* Pack a float from parts, but do not canonicalize. */
-static inline uint64_t pack_raw(FloatFmt fmt, FloatParts64 p)
+static uint64_t pack_raw64(const FloatParts64 *p, const FloatFmt *fmt)
{
- const int sign_pos = fmt.frac_size + fmt.exp_size;
- uint64_t ret = deposit64(p.frac, fmt.frac_size, fmt.exp_size, p.exp);
- return deposit64(ret, sign_pos, 1, p.sign);
+ const int f_size = fmt->frac_size;
+ const int e_size = fmt->exp_size;
+ uint64_t ret;
+
+ ret = (uint64_t)p->sign << (f_size + e_size);
+ ret = deposit64(ret, f_size, e_size, p->exp);
+ ret = deposit64(ret, 0, f_size, p->frac);
+ return ret;
}
static inline float16 float16_pack_raw(FloatParts64 p)
{
- return make_float16(pack_raw(float16_params, p));
+ return make_float16(pack_raw64(&p, &float16_params));
}
static inline bfloat16 bfloat16_pack_raw(FloatParts64 p)
{
- return pack_raw(bfloat16_params, p);
+ return pack_raw64(&p, &bfloat16_params);
}
static inline float32 float32_pack_raw(FloatParts64 p)
{
- return make_float32(pack_raw(float32_params, p));
+ return make_float32(pack_raw64(&p, &float32_params));
}
static inline float64 float64_pack_raw(FloatParts64 p)
{
- return make_float64(pack_raw(float64_params, p));
+ return make_float64(pack_raw64(&p, &float64_params));
}
/*----------------------------------------------------------------------------
--
2.25.1
- Re: [PATCH 11/72] softfloat: Use return_nan in float_to_float, (continued)
- [PATCH 16/72] softfloat: Move type-specific pack/unpack routines, Richard Henderson, 2021/05/07
- [PATCH 13/72] target/mips: Set set_default_nan_mode with set_snan_bit_is_one, Richard Henderson, 2021/05/07
- [PATCH 21/72] softfloat: Use pointers with ftype_pack_raw, Richard Henderson, 2021/05/07
- [PATCH 20/72] softfloat: Use pointers with pack_raw,
Richard Henderson <=
- [PATCH 26/72] softfloat: Convert float128_silence_nan to parts, Richard Henderson, 2021/05/07
- [PATCH 22/72] softfloat: Use pointers with ftype_unpack_canonical, Richard Henderson, 2021/05/07
- [PATCH 23/72] softfloat: Use pointers with ftype_round_pack_canonical, Richard Henderson, 2021/05/07
- [PATCH 30/72] softfloat: Move pick_nan_muladd to softfloat-parts.c.inc, Richard Henderson, 2021/05/07