On Sat, Aug 26, 2023 at 09:50:51PM -0700, Richard Henderson wrote: > On 8/26/23 09:02, Bastian Koppelmann wrote: > > +uint32_t helper_ftou(CPUTriCoreState *env, uint32_t arg) > > +{ > > + float32 f_arg = make_float32(arg); > > + uint32_t result; > > + int32_t flags = 0; > > + > > + if (float32_is_any_nan(f_arg)) { > > + result = 0; > > + flags |= float_flag_invalid; > > + } else if (float32_lt_quiet(f_arg, 0, &env->fp_status)) { > > + result = 0; > > + flags = float_flag_invalid; > > + } else { > > + result = float32_to_uint32(f_arg, &env->fp_status); > > + flags = f_get_excp_flags(env); > > + } > > You should allow softfloat to diagnose the special cases, and negative -> 0 > is standard behaviour. Therefore:
You're right. However, there is one special case, negative -> 0 ought to raise float_flags_invalid. All that has already been done for ftouz, so I will match that implementation. Cheers, Bastian