* Pack/unpack routines with a specific FloatFmt.
*/
-static FloatParts64 float4_e2m1_unpack_canonical(float4_e2m1 f, float_status *s)
+FloatParts64 float4_e2m1_unpack_canonical(float4_e2m1 f, float_status *s)
{
FloatParts64 p = unpack_raw64(&float4_e2m1_params, f);
parts64_canonicalize(&p, s, &float4_e2m1_params);
return p;
}
-static FloatParts64 float8_e4m3_unpack_canonical(float8_e4m3 f, float_status *s)
+FloatParts64 float8_e4m3_unpack_canonical(float8_e4m3 f, float_status *s)
{
FloatParts64 p = unpack_raw64(&float8_e4m3_params, f);
parts64_canonicalize(&p, s, &float8_e4m3_params);
return p;
}
-static FloatParts64 float8_e5m2_unpack_canonical(float8_e5m2 f, float_status *s)
+FloatParts64 float8_e5m2_unpack_canonical(float8_e5m2 f, float_status *s)
{
FloatParts64 p = unpack_raw64(&float8_e5m2_params, f);
parts64_canonicalize(&p, s, &float8_e5m2_params);
return p;
}
-static FloatParts64 float16_unpack_canonical(float16 f, float_status *s)
+FloatParts64 float16_unpack_canonical(float16 f, float_status *s)
{
return float16a_unpack_canonical(f, s, &float16_params);
}
-static FloatParts64 bfloat16_unpack_canonical(bfloat16 f, float_status *s)
+FloatParts64 bfloat16_unpack_canonical(bfloat16 f, float_status *s)
{
FloatParts64 p = unpack_raw64(&bfloat16_params, f);
parts64_canonicalize(&p, s, &bfloat16_params);
return p;
}
-static float8_e4m3 float8_e4m3_round_pack_canonical(FloatParts64 *p,
- float_status *s,
- bool saturate)
+float8_e4m3 float8_e4m3_round_pack_canonical(FloatParts64 *p, float_status *s,
+ bool saturate)
{
parts64_uncanon(p, s, &float8_e4m3_params, saturate);
return pack_raw64(p, &float8_e4m3_params);
}
-static float8_e5m2 float8_e5m2_round_pack_canonical(FloatParts64 *p,
- float_status *s,
- bool saturate)
+float8_e5m2 float8_e5m2_round_pack_canonical(FloatParts64 *p, float_status *s,
+ bool saturate)
{
parts64_uncanon(p, s, &float8_e5m2_params, saturate);
return pack_raw64(p, &float8_e5m2_params);
return pack_raw64(p, &float16_params);
}
-static float16 float16_round_pack_canonical(FloatParts64 *p,
- float_status *s)
+float16 float16_round_pack_canonical(FloatParts64 *p, float_status *s)
{
return float16a_round_pack_canonical(p, s, &float16_params);
}
-static bfloat16 bfloat16_round_pack_canonical(FloatParts64 *p,
- float_status *s)
+bfloat16 bfloat16_round_pack_canonical(FloatParts64 *p, float_status *s)
{
parts64_uncanon(p, s, &bfloat16_params, false);
return pack_raw64(p, &bfloat16_params);
}
-static FloatParts64 float32_unpack_canonical(float32 f, float_status *s)
+FloatParts64 float32_unpack_canonical(float32 f, float_status *s)
{
FloatParts64 p = unpack_raw64(&float32_params, f);
parts64_canonicalize(&p, s, &float32_params);
return p;
}
-static float32 float32_round_pack_canonical(FloatParts64 *p,
- float_status *s)
+float32 float32_round_pack_canonical(FloatParts64 *p, float_status *s)
{
parts64_uncanon(p, s, &float32_params, false);
return pack_raw64(p, &float32_params);
}
-static FloatParts64 float64_unpack_canonical(float64 f, float_status *s)
+FloatParts64 float64_unpack_canonical(float64 f, float_status *s)
{
FloatParts64 p = unpack_raw64(&float64_params, f);
parts64_canonicalize(&p, s, &float64_params);
return p;
}
-static float64 float64_round_pack_canonical(FloatParts64 *p,
- float_status *s)
+float64 float64_round_pack_canonical(FloatParts64 *p, float_status *s)
{
parts64_uncanon(p, s, &float64_params, false);
return pack_raw64(p, &float64_params);
return float64r32_pack_raw(p);
}
-static FloatParts128 float128_unpack_canonical(float128 f, float_status *s)
+FloatParts128 float128_unpack_canonical(float128 f, float_status *s)
{
FloatParts128 p = float128_unpack_raw(f);
parts128_canonicalize(&p, s, &float128_params);
return p;
}
-static float128 float128_round_pack_canonical(FloatParts128 *p,
- float_status *s)
+float128 float128_round_pack_canonical(FloatParts128 *p, float_status *s)
{
parts128_uncanon(p, s, &float128_params, false);
return float128_pack_raw(p);
}
/* Returns false if the encoding is invalid. */
-static bool floatx80_unpack_canonical(FloatParts128 *p, floatx80 f,
- float_status *s)
+bool floatx80_unpack_canonical(FloatParts128 *p, floatx80 f, float_status *s)
{
/* Ensure rounding precision is set before beginning. */
switch (s->floatx80_rounding_precision) {
return true;
}
-static floatx80 floatx80_round_pack_canonical(FloatParts128 *p,
- float_status *s)
+floatx80 floatx80_round_pack_canonical(FloatParts128 *p, float_status *s)
{
const FloatFmt *fmt = &floatx80_params[s->floatx80_rounding_precision];
uint64_t frac;
uint64_t frac_lo;
} FloatParts128;
+/*
+ * Unpack routines from a specific floating-point format.
+ */
+
+FloatParts64 float4_e2m1_unpack_canonical(float4_e2m1 f, float_status *s);
+FloatParts64 float8_e4m3_unpack_canonical(float8_e4m3 f, float_status *s);
+FloatParts64 float8_e5m2_unpack_canonical(float8_e5m2 f, float_status *s);
+FloatParts64 float16_unpack_canonical(float16 f, float_status *s);
+FloatParts64 bfloat16_unpack_canonical(bfloat16 f, float_status *s);
+FloatParts64 float32_unpack_canonical(float32 f, float_status *s);
+FloatParts64 float64_unpack_canonical(float64 f, float_status *s);
+FloatParts128 float128_unpack_canonical(float128 f, float_status *s);
+/* Returns false if the encoding is invalid. */
+bool floatx80_unpack_canonical(FloatParts128 *p, floatx80 f, float_status *s);
+
+/*
+ * Pack routines to a specific floating-point format.
+ */
+
+float8_e4m3 float8_e4m3_round_pack_canonical(FloatParts64 *p, float_status *s,
+ bool saturate);
+float8_e5m2 float8_e5m2_round_pack_canonical(FloatParts64 *p, float_status *s,
+ bool saturate);
+float16 float16_round_pack_canonical(FloatParts64 *p, float_status *s);
+bfloat16 bfloat16_round_pack_canonical(FloatParts64 *p, float_status *s);
+float32 float32_round_pack_canonical(FloatParts64 *p, float_status *s);
+float64 float64_round_pack_canonical(FloatParts64 *p, float_status *s);
+float128 float128_round_pack_canonical(FloatParts128 *p, float_status *s);
+floatx80 floatx80_round_pack_canonical(FloatParts128 *p, float_status *s);
+
#endif