*p = sf_canonicalize(*p, &bfloat16_params, s);
}
-static float16 float16a_round_pack_canonical(FloatParts64 p, float_status *s,
+static float16 float16a_round_pack_canonical(FloatParts64 *p,
+ float_status *s,
const FloatFmt *params)
{
- p = round_canonical(p, s, params);
- return float16_pack_raw(&p);
+ *p = round_canonical(*p, s, params);
+ return float16_pack_raw(p);
}
-static float16 float16_round_pack_canonical(FloatParts64 p, float_status *s)
+static 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)
+static bfloat16 bfloat16_round_pack_canonical(FloatParts64 *p,
+ float_status *s)
{
- p = round_canonical(p, s, &bfloat16_params);
- return bfloat16_pack_raw(&p);
+ *p = round_canonical(*p, s, &bfloat16_params);
+ return bfloat16_pack_raw(p);
}
static void float32_unpack_canonical(FloatParts64 *p, float32 f,
*p = sf_canonicalize(*p, &float32_params, s);
}
-static float32 float32_round_pack_canonical(FloatParts64 p, float_status *s)
+static float32 float32_round_pack_canonical(FloatParts64 *p,
+ float_status *s)
{
- p = round_canonical(p, s, &float32_params);
- return float32_pack_raw(&p);
+ *p = round_canonical(*p, s, &float32_params);
+ return float32_pack_raw(p);
}
static void float64_unpack_canonical(FloatParts64 *p, float64 f,
*p = sf_canonicalize(*p, &float64_params, s);
}
-static float64 float64_round_pack_canonical(FloatParts64 p, float_status *s)
+static float64 float64_round_pack_canonical(FloatParts64 *p,
+ float_status *s)
{
- p = round_canonical(p, s, &float64_params);
- return float64_pack_raw(&p);
+ *p = round_canonical(*p, s, &float64_params);
+ return float64_pack_raw(p);
}
/*
float16_unpack_canonical(&pb, b, status);
pr = addsub_floats(pa, pb, false, status);
- return float16_round_pack_canonical(pr, status);
+ return float16_round_pack_canonical(&pr, status);
}
float16 QEMU_FLATTEN float16_sub(float16 a, float16 b, float_status *status)
float16_unpack_canonical(&pb, b, status);
pr = addsub_floats(pa, pb, true, status);
- return float16_round_pack_canonical(pr, status);
+ return float16_round_pack_canonical(&pr, status);
}
static float32 QEMU_SOFTFLOAT_ATTR
float32_unpack_canonical(&pb, b, status);
pr = addsub_floats(pa, pb, subtract, status);
- return float32_round_pack_canonical(pr, status);
+ return float32_round_pack_canonical(&pr, status);
}
static inline float32 soft_f32_add(float32 a, float32 b, float_status *status)
float64_unpack_canonical(&pb, b, status);
pr = addsub_floats(pa, pb, subtract, status);
- return float64_round_pack_canonical(pr, status);
+ return float64_round_pack_canonical(&pr, status);
}
static inline float64 soft_f64_add(float64 a, float64 b, float_status *status)
bfloat16_unpack_canonical(&pb, b, status);
pr = addsub_floats(pa, pb, false, status);
- return bfloat16_round_pack_canonical(pr, status);
+ return bfloat16_round_pack_canonical(&pr, status);
}
bfloat16 QEMU_FLATTEN bfloat16_sub(bfloat16 a, bfloat16 b, float_status *status)
bfloat16_unpack_canonical(&pb, b, status);
pr = addsub_floats(pa, pb, true, status);
- return bfloat16_round_pack_canonical(pr, status);
+ return bfloat16_round_pack_canonical(&pr, status);
}
/*
float16_unpack_canonical(&pb, b, status);
pr = mul_floats(pa, pb, status);
- return float16_round_pack_canonical(pr, status);
+ return float16_round_pack_canonical(&pr, status);
}
static float32 QEMU_SOFTFLOAT_ATTR
float32_unpack_canonical(&pb, b, status);
pr = mul_floats(pa, pb, status);
- return float32_round_pack_canonical(pr, status);
+ return float32_round_pack_canonical(&pr, status);
}
static float64 QEMU_SOFTFLOAT_ATTR
float64_unpack_canonical(&pb, b, status);
pr = mul_floats(pa, pb, status);
- return float64_round_pack_canonical(pr, status);
+ return float64_round_pack_canonical(&pr, status);
}
static float hard_f32_mul(float a, float b)
bfloat16_unpack_canonical(&pb, b, status);
pr = mul_floats(pa, pb, status);
- return bfloat16_round_pack_canonical(pr, status);
+ return bfloat16_round_pack_canonical(&pr, status);
}
/*
float16_unpack_canonical(&pc, c, status);
pr = muladd_floats(pa, pb, pc, flags, status);
- return float16_round_pack_canonical(pr, status);
+ return float16_round_pack_canonical(&pr, status);
}
static float32 QEMU_SOFTFLOAT_ATTR
float32_unpack_canonical(&pc, c, status);
pr = muladd_floats(pa, pb, pc, flags, status);
- return float32_round_pack_canonical(pr, status);
+ return float32_round_pack_canonical(&pr, status);
}
static float64 QEMU_SOFTFLOAT_ATTR
float64_unpack_canonical(&pc, c, status);
pr = muladd_floats(pa, pb, pc, flags, status);
- return float64_round_pack_canonical(pr, status);
+ return float64_round_pack_canonical(&pr, status);
}
static bool force_soft_fma;
bfloat16_unpack_canonical(&pc, c, status);
pr = muladd_floats(pa, pb, pc, flags, status);
- return bfloat16_round_pack_canonical(pr, status);
+ return bfloat16_round_pack_canonical(&pr, status);
}
/*
float16_unpack_canonical(&pb, b, status);
pr = div_floats(pa, pb, status);
- return float16_round_pack_canonical(pr, status);
+ return float16_round_pack_canonical(&pr, status);
}
static float32 QEMU_SOFTFLOAT_ATTR
float32_unpack_canonical(&pb, b, status);
pr = div_floats(pa, pb, status);
- return float32_round_pack_canonical(pr, status);
+ return float32_round_pack_canonical(&pr, status);
}
static float64 QEMU_SOFTFLOAT_ATTR
float64_unpack_canonical(&pb, b, status);
pr = div_floats(pa, pb, status);
- return float64_round_pack_canonical(pr, status);
+ return float64_round_pack_canonical(&pr, status);
}
static float hard_f32_div(float a, float b)
bfloat16_unpack_canonical(&pb, b, status);
pr = div_floats(pa, pb, status);
- return bfloat16_round_pack_canonical(pr, status);
+ return bfloat16_round_pack_canonical(&pr, status);
}
/*
float16a_unpack_canonical(&pa, a, s, fmt16);
pr = float_to_float(pa, &float32_params, s);
- return float32_round_pack_canonical(pr, s);
+ return float32_round_pack_canonical(&pr, s);
}
float64 float16_to_float64(float16 a, bool ieee, float_status *s)
float16a_unpack_canonical(&pa, a, s, fmt16);
pr = float_to_float(pa, &float64_params, s);
- return float64_round_pack_canonical(pr, s);
+ return float64_round_pack_canonical(&pr, s);
}
float16 float32_to_float16(float32 a, bool ieee, float_status *s)
float32_unpack_canonical(&pa, a, s);
pr = float_to_float(pa, fmt16, s);
- return float16a_round_pack_canonical(pr, s, fmt16);
+ return float16a_round_pack_canonical(&pr, s, fmt16);
}
static float64 QEMU_SOFTFLOAT_ATTR
float32_unpack_canonical(&pa, a, s);
pr = float_to_float(pa, &float64_params, s);
- return float64_round_pack_canonical(pr, s);
+ return float64_round_pack_canonical(&pr, s);
}
float64 float32_to_float64(float32 a, float_status *s)
float64_unpack_canonical(&pa, a, s);
pr = float_to_float(pa, fmt16, s);
- return float16a_round_pack_canonical(pr, s, fmt16);
+ return float16a_round_pack_canonical(&pr, s, fmt16);
}
float32 float64_to_float32(float64 a, float_status *s)
float64_unpack_canonical(&pa, a, s);
pr = float_to_float(pa, &float32_params, s);
- return float32_round_pack_canonical(pr, s);
+ return float32_round_pack_canonical(&pr, s);
}
float32 bfloat16_to_float32(bfloat16 a, float_status *s)
bfloat16_unpack_canonical(&pa, a, s);
pr = float_to_float(pa, &float32_params, s);
- return float32_round_pack_canonical(pr, s);
+ return float32_round_pack_canonical(&pr, s);
}
float64 bfloat16_to_float64(bfloat16 a, float_status *s)
bfloat16_unpack_canonical(&pa, a, s);
pr = float_to_float(pa, &float64_params, s);
- return float64_round_pack_canonical(pr, s);
+ return float64_round_pack_canonical(&pr, s);
}
bfloat16 float32_to_bfloat16(float32 a, float_status *s)
float32_unpack_canonical(&pa, a, s);
pr = float_to_float(pa, &bfloat16_params, s);
- return bfloat16_round_pack_canonical(pr, s);
+ return bfloat16_round_pack_canonical(&pr, s);
}
bfloat16 float64_to_bfloat16(float64 a, float_status *s)
float64_unpack_canonical(&pa, a, s);
pr = float_to_float(pa, &bfloat16_params, s);
- return bfloat16_round_pack_canonical(pr, s);
+ return bfloat16_round_pack_canonical(&pr, s);
}
/*
float16_unpack_canonical(&pa, a, s);
pr = round_to_int(pa, s->float_rounding_mode, 0, s);
- return float16_round_pack_canonical(pr, s);
+ return float16_round_pack_canonical(&pr, s);
}
float32 float32_round_to_int(float32 a, float_status *s)
float32_unpack_canonical(&pa, a, s);
pr = round_to_int(pa, s->float_rounding_mode, 0, s);
- return float32_round_pack_canonical(pr, s);
+ return float32_round_pack_canonical(&pr, s);
}
float64 float64_round_to_int(float64 a, float_status *s)
float64_unpack_canonical(&pa, a, s);
pr = round_to_int(pa, s->float_rounding_mode, 0, s);
- return float64_round_pack_canonical(pr, s);
+ return float64_round_pack_canonical(&pr, s);
}
/*
bfloat16_unpack_canonical(&pa, a, s);
pr = round_to_int(pa, s->float_rounding_mode, 0, s);
- return bfloat16_round_pack_canonical(pr, s);
+ return bfloat16_round_pack_canonical(&pr, s);
}
/*
float16 int64_to_float16_scalbn(int64_t a, int scale, float_status *status)
{
FloatParts64 pa = int_to_float(a, scale, status);
- return float16_round_pack_canonical(pa, status);
+ return float16_round_pack_canonical(&pa, status);
}
float16 int32_to_float16_scalbn(int32_t a, int scale, float_status *status)
float32 int64_to_float32_scalbn(int64_t a, int scale, float_status *status)
{
FloatParts64 pa = int_to_float(a, scale, status);
- return float32_round_pack_canonical(pa, status);
+ return float32_round_pack_canonical(&pa, status);
}
float32 int32_to_float32_scalbn(int32_t a, int scale, float_status *status)
float64 int64_to_float64_scalbn(int64_t a, int scale, float_status *status)
{
FloatParts64 pa = int_to_float(a, scale, status);
- return float64_round_pack_canonical(pa, status);
+ return float64_round_pack_canonical(&pa, status);
}
float64 int32_to_float64_scalbn(int32_t a, int scale, float_status *status)
bfloat16 int64_to_bfloat16_scalbn(int64_t a, int scale, float_status *status)
{
FloatParts64 pa = int_to_float(a, scale, status);
- return bfloat16_round_pack_canonical(pa, status);
+ return bfloat16_round_pack_canonical(&pa, status);
}
bfloat16 int32_to_bfloat16_scalbn(int32_t a, int scale, float_status *status)
float16 uint64_to_float16_scalbn(uint64_t a, int scale, float_status *status)
{
FloatParts64 pa = uint_to_float(a, scale, status);
- return float16_round_pack_canonical(pa, status);
+ return float16_round_pack_canonical(&pa, status);
}
float16 uint32_to_float16_scalbn(uint32_t a, int scale, float_status *status)
float32 uint64_to_float32_scalbn(uint64_t a, int scale, float_status *status)
{
FloatParts64 pa = uint_to_float(a, scale, status);
- return float32_round_pack_canonical(pa, status);
+ return float32_round_pack_canonical(&pa, status);
}
float32 uint32_to_float32_scalbn(uint32_t a, int scale, float_status *status)
float64 uint64_to_float64_scalbn(uint64_t a, int scale, float_status *status)
{
FloatParts64 pa = uint_to_float(a, scale, status);
- return float64_round_pack_canonical(pa, status);
+ return float64_round_pack_canonical(&pa, status);
}
float64 uint32_to_float64_scalbn(uint32_t a, int scale, float_status *status)
bfloat16 uint64_to_bfloat16_scalbn(uint64_t a, int scale, float_status *status)
{
FloatParts64 pa = uint_to_float(a, scale, status);
- return bfloat16_round_pack_canonical(pa, status);
+ return bfloat16_round_pack_canonical(&pa, status);
}
bfloat16 uint32_to_bfloat16_scalbn(uint32_t a, int scale, float_status *status)
float ## sz ## _unpack_canonical(&pa, a, s); \
float ## sz ## _unpack_canonical(&pb, b, s); \
pr = minmax_floats(pa, pb, ismin, isiee, ismag, s); \
- return float ## sz ## _round_pack_canonical(pr, s); \
+ return float ## sz ## _round_pack_canonical(&pr, s); \
}
MINMAX(16, min, true, false, false)
bfloat16_unpack_canonical(&pa, a, s); \
bfloat16_unpack_canonical(&pb, b, s); \
pr = minmax_floats(pa, pb, ismin, isiee, ismag, s); \
- return bfloat16_round_pack_canonical(pr, s); \
+ return bfloat16_round_pack_canonical(&pr, s); \
}
BF16_MINMAX(min, true, false, false)
float16_unpack_canonical(&pa, a, status);
pr = scalbn_decomposed(pa, n, status);
- return float16_round_pack_canonical(pr, status);
+ return float16_round_pack_canonical(&pr, status);
}
float32 float32_scalbn(float32 a, int n, float_status *status)
float32_unpack_canonical(&pa, a, status);
pr = scalbn_decomposed(pa, n, status);
- return float32_round_pack_canonical(pr, status);
+ return float32_round_pack_canonical(&pr, status);
}
float64 float64_scalbn(float64 a, int n, float_status *status)
float64_unpack_canonical(&pa, a, status);
pr = scalbn_decomposed(pa, n, status);
- return float64_round_pack_canonical(pr, status);
+ return float64_round_pack_canonical(&pr, status);
}
bfloat16 bfloat16_scalbn(bfloat16 a, int n, float_status *status)
bfloat16_unpack_canonical(&pa, a, status);
pr = scalbn_decomposed(pa, n, status);
- return bfloat16_round_pack_canonical(pr, status);
+ return bfloat16_round_pack_canonical(&pr, status);
}
/*
float16_unpack_canonical(&pa, a, status);
pr = sqrt_float(pa, status, &float16_params);
- return float16_round_pack_canonical(pr, status);
+ return float16_round_pack_canonical(&pr, status);
}
static float32 QEMU_SOFTFLOAT_ATTR
float32_unpack_canonical(&pa, a, status);
pr = sqrt_float(pa, status, &float32_params);
- return float32_round_pack_canonical(pr, status);
+ return float32_round_pack_canonical(&pr, status);
}
static float64 QEMU_SOFTFLOAT_ATTR
float64_unpack_canonical(&pa, a, status);
pr = sqrt_float(pa, status, &float64_params);
- return float64_round_pack_canonical(pr, status);
+ return float64_round_pack_canonical(&pr, status);
}
float32 QEMU_FLATTEN float32_sqrt(float32 xa, float_status *s)
bfloat16_unpack_canonical(&pa, a, status);
pr = sqrt_float(pa, status, &bfloat16_params);
- return bfloat16_round_pack_canonical(pr, status);
+ return bfloat16_round_pack_canonical(&pr, status);
}
/*----------------------------------------------------------------------------