| if the fraction represents a signalling NaN; otherwise false.
*----------------------------------------------------------------------------*/
-static bool parts_is_snan_frac(uint64_t frac, float_status *status)
+static bool frac_msb_is_snan(bool msb, float_status *status)
{
if (no_signaling_nans(status)) {
return false;
} else {
- bool msb = extract64(frac, DECOMPOSED_BINARY_POINT - 1, 1);
return msb == snan_bit_is_one(status);
}
}
+static bool parts_is_snan_frac(uint64_t frac, float_status *status)
+{
+ bool msb = extract64(frac, DECOMPOSED_BINARY_POINT - 1, 1);
+ return frac_msb_is_snan(msb, status);
+}
+
/*----------------------------------------------------------------------------
| The pattern for a default generated deconstructed floating-point NaN.
*----------------------------------------------------------------------------*/
static bool float16_nan_is_snan(float16 a, float_status *status)
{
- if (no_signaling_nans(status)) {
- return false;
- }
- bool frac_msb_is_one = (a >> 9) & 1;
- return frac_msb_is_one == snan_bit_is_one(status);
+ return frac_msb_is_snan((a >> 9) & 1, status);
}
/*----------------------------------------------------------------------------
static bool bfloat16_nan_is_snan(bfloat16 a, float_status *status)
{
- if (no_signaling_nans(status)) {
- return false;
- }
- bool frac_msb_is_one = (a >> 6) & 1;
- return frac_msb_is_one == snan_bit_is_one(status);
+ return frac_msb_is_snan((a >> 6) & 1, status);
}
/*----------------------------------------------------------------------------
static bool float32_nan_is_snan(float32 a, float_status *status)
{
- if (no_signaling_nans(status)) {
- return false;
- }
- bool frac_msb_is_one = (a >> 22) & 1;
- return frac_msb_is_one == snan_bit_is_one(status);
+ return frac_msb_is_snan((a >> 22) & 1, status);
}
/*----------------------------------------------------------------------------
static bool float64_nan_is_snan(float64 a, float_status *status)
{
- if (no_signaling_nans(status)) {
- return false;
- }
- bool frac_msb_is_one = (a >> 51) & 1;
- return frac_msb_is_one == snan_bit_is_one(status);
+ return frac_msb_is_snan((a >> 51) & 1, status);
}
/*----------------------------------------------------------------------------
static bool floatx80_nan_is_snan(floatx80 a, float_status *status)
{
- if (no_signaling_nans(status)) {
- return false;
- }
- bool frac_msb_is_one = (a.low >> 62) & 1;
- return frac_msb_is_one == snan_bit_is_one(status);
+ return frac_msb_is_snan((a.low >> 62) & 1, status);
}
/*----------------------------------------------------------------------------
static bool float128_nan_is_snan(float128 a, float_status *status)
{
- if (no_signaling_nans(status)) {
- return false;
- }
- bool frac_msb_is_one = (a.high >> 47) & 1;
- return frac_msb_is_one == snan_bit_is_one(status);
+ return frac_msb_is_snan((a.high >> 47) & 1, status);
}
/*----------------------------------------------------------------------------