target/hexagon: Remove Float

This structure, with bitfields, is incorrect for big-endian.
Use the existing float32_getexp_raw which uses extract32.

Reviewed-by: Brian Cain <brian.cain@oss.qualcomm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2024-12-08 15:23:36 -06:00
parent 795d6a2c49
commit fefc9702e6

View File

@ -53,16 +53,6 @@ typedef union {
};
} Double;
typedef union {
float f;
uint32_t i;
struct {
uint32_t mant:23;
uint32_t exp:8;
uint32_t sign:1;
};
} Float;
static uint64_t float64_getmant(float64 f64)
{
Double a = { .i = f64 };
@ -92,12 +82,12 @@ int32_t float64_getexp(float64 f64)
int32_t float32_getexp(float32 f32)
{
Float a = { .i = f32 };
int exp = float32_getexp_raw(f32);
if (float32_is_normal(f32)) {
return a.exp;
return exp;
}
if (float32_is_denormal(f32)) {
return a.exp + 1;
return exp + 1;
}
return -1;
}