On 8/27/23 04:07, Bastian Koppelmann wrote:
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.

https://gitlab.com/qemu-project/qemu/-/blob/master/fpu/softfloat-parts.c.inc?ref_type=heads#L1162

Already done.  As I say, this is all standard IEEE behaviour.


r~

Reply via email to