p->frac_lo &= ~round_mask;
}
fracN(shr)(p, frac_shift);
- } else if (s->flush_to_zero &&
+ } else if (get_flush_to_zero(s) &&
s->ftz_detection == float_ftz_before_rounding) {
flags |= float_flag_output_denormal_flushed;
p->cls = float_class_zero;
fracN(shr)(p, frac_shift);
if (is_tiny) {
- if (s->flush_to_zero) {
+ if (get_flush_to_zero(s)) {
assert(s->ftz_detection == float_ftz_after_rounding);
flags |= float_flag_output_denormal_flushed;
p->cls = float_class_zero;
goto overflow;
}
if ( zExp <= 0 ) {
- if (status->flush_to_zero) {
+ if (get_flush_to_zero(status)) {
float_raise(float_flag_output_denormal_flushed, status);
return packFloatx80(zSign, 0, 0);
}
} else {
return float16_set_sign(float16_maxnorm, f16_sign);
}
- } else if (f16_exp >= 29 && fpst->flush_to_zero) {
+ } else if (f16_exp >= 29 && get_flush_to_zero(fpst)) {
float_raise(float_flag_underflow, fpst);
return float16_set_sign(float16_zero, float16_is_neg(f16));
}
} else {
return float32_set_sign(float32_maxnorm, f32_sign);
}
- } else if (f32_exp >= 253 && fpst->flush_to_zero) {
+ } else if (f32_exp >= 253 && get_flush_to_zero(fpst)) {
float_raise(float_flag_underflow, fpst);
return float32_set_sign(float32_zero, float32_is_neg(f32));
}
} else {
return float64_set_sign(float64_maxnorm, f64_sign);
}
- } else if (f64_exp >= 2045 && fpst->flush_to_zero) {
+ } else if (f64_exp >= 2045 && get_flush_to_zero(fpst)) {
float_raise(float_flag_underflow, fpst);
return float64_set_sign(float64_zero, float64_is_neg(f64));
}
soft_status.flush_inputs_to_zero = 1;
break;
case 'Z':
- soft_status.flush_to_zero = 1;
+ set_flush_to_zero(true, &soft_status);
break;
}
}