fpu: Export default_nan, pick_nan, return_nan routines
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Richard Henderson committed
Apr 25, 2026 at 21:25 UTC
e63e64b528a2504979962d0c249496fe1e3eb837
3 files changed
+20
-5
fpu/softfloat-parts.c.inc
+3
-3
@@ -15,7 +15,7 @@
15
* indicated otherwise.
16
*/
17
18
-static FloatPartsN partsN(return_nan)(const FloatPartsN *a, float_status *s)
18
+FloatPartsN partsN(return_nan)(const FloatPartsN *a, float_status *s)
19
{
20
switch (a->cls) {
21
case float_class_snan:
@@ -37,8 +37,8 @@ static FloatPartsN partsN(return_nan)(const FloatPartsN *a, float_status *s)
37
return *a;
38
}
39
40
-static FloatPartsN partsN(pick_nan)(const FloatPartsN *a, const FloatPartsN *b,
41
- float_status *s)
40
+FloatPartsN partsN(pick_nan)(const FloatPartsN *a, const FloatPartsN *b,
41
+ float_status *s)
42
{
43
bool have_snan = false;
44
const FloatPartsN *ret;
fpu/softfloat-specialize.c.inc
+2
-2
@@ -118,7 +118,7 @@ static bool parts_is_snan_frac(uint64_t frac, float_status *status)
118
| The pattern for a default generated deconstructed floating-point NaN.
119
*----------------------------------------------------------------------------*/
120
121
-static FloatParts64 parts64_default_nan(float_status *status)
121
+FloatParts64 parts64_default_nan(float_status *status)
122
{
123
bool sign = 0;
124
uint64_t frac;
@@ -142,7 +142,7 @@ static FloatParts64 parts64_default_nan(float_status *status)
142
};
143
}
144
145
-static FloatParts128 parts128_default_nan(float_status *status)
145
+FloatParts128 parts128_default_nan(float_status *status)
146
{
147
/*
148
* Extrapolate from the choices made by parts64_default_nan to fill
include/fpu/softfloat-parts.h
+15
@@ -163,6 +163,21 @@ float64 float64_round_pack_canonical(FloatParts64 *p, float_status *s);
163
float128 float128_round_pack_canonical(FloatParts128 *p, float_status *s);
164
floatx80 floatx80_round_pack_canonical(FloatParts128 *p, float_status *s);
165
166
+/*
167
+ * NaN handling
168
+ */
169
+
170
+FloatParts64 parts64_default_nan(float_status *status);
171
+FloatParts128 parts128_default_nan(float_status *status);
172
+
173
+FloatParts64 parts64_pick_nan(const FloatParts64 *, const FloatParts64 *,
174
+ float_status *);
175
+FloatParts128 parts128_pick_nan(const FloatParts128 *, const FloatParts128 *,
176
+ float_status *);
177
+
178
+FloatParts64 parts64_return_nan(const FloatParts64 *a, float_status *s);
179
+FloatParts128 parts128_return_nan(const FloatParts128 *a, float_status *s);
180
+
181
/*
182
* Operations
183
*/