Re: [RFC PATCH 4/8] fpu/softfloat: add pack and unpack interfaces for bfloat16

2020-07-13 Thread Richard Henderson
On 7/12/20 4:45 PM, LIU Zhiwei wrote:
> Signed-off-by: LIU Zhiwei 
> ---
>  fpu/softfloat.c | 20 
>  1 file changed, 20 insertions(+)

Similarly, all of the static inlines are unused and clang will warn.  Needs
merging with subsequent.

Otherwise the actual code looks good.


r~



[RFC PATCH 4/8] fpu/softfloat: add pack and unpack interfaces for bfloat16

2020-07-12 Thread LIU Zhiwei
Signed-off-by: LIU Zhiwei 
---
 fpu/softfloat.c | 20 
 1 file changed, 20 insertions(+)

diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 1ef07d9160..54fc889446 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -584,6 +584,11 @@ static inline FloatParts float16_unpack_raw(float16 f)
 return unpack_raw(float16_params, f);
 }
 
+static inline FloatParts bfloat16_unpack_raw(bfloat16 f)
+{
+return unpack_raw(bfloat16_params, f);
+}
+
 static inline FloatParts float32_unpack_raw(float32 f)
 {
 return unpack_raw(float32_params, f);
@@ -607,6 +612,11 @@ static inline float16 float16_pack_raw(FloatParts p)
 return make_float16(pack_raw(float16_params, p));
 }
 
+static inline bfloat16 bfloat16_pack_raw(FloatParts p)
+{
+return make_bfloat16(pack_raw(bfloat16_params, p));
+}
+
 static inline float32 float32_pack_raw(FloatParts p)
 {
 return make_float32(pack_raw(float32_params, p));
@@ -824,6 +834,11 @@ static FloatParts float16_unpack_canonical(float16 f, 
float_status *s)
 return float16a_unpack_canonical(f, s, _params);
 }
 
+static FloatParts bfloat16_unpack_canonical(bfloat16 f, float_status *s)
+{
+return sf_canonicalize(bfloat16_unpack_raw(f), _params, s);
+}
+
 static float16 float16a_round_pack_canonical(FloatParts p, float_status *s,
  const FloatFmt *params)
 {
@@ -835,6 +850,11 @@ static float16 float16_round_pack_canonical(FloatParts p, 
float_status *s)
 return float16a_round_pack_canonical(p, s, _params);
 }
 
+static bfloat16 bfloat16_round_pack_canonical(FloatParts p, float_status *s)
+{
+return float16a_round_pack_canonical(p, s, _params);
+}
+
 static FloatParts float32_unpack_canonical(float32 f, float_status *s)
 {
 return sf_canonicalize(float32_unpack_raw(f), _params, s);
-- 
2.23.0