aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--target-microblaze/op_helper.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/target-microblaze/op_helper.c b/target-microblaze/op_helper.c
index 294e08c253..3d2b313fb3 100644
--- a/target-microblaze/op_helper.c
+++ b/target-microblaze/op_helper.c
@@ -297,8 +297,22 @@ uint32_t helper_fdiv(uint32_t a, uint32_t b)
uint32_t helper_fcmp_un(uint32_t a, uint32_t b)
{
- cpu_abort(env, "Unsupported fcmp.un\n");
- return 0;
+ CPU_FloatU fa, fb;
+ uint32_t r = 0;
+
+ fa.l = a;
+ fb.l = b;
+
+ if (float32_is_signaling_nan(fa.f) || float32_is_signaling_nan(fb.f)) {
+ update_fpu_flags(float_flag_invalid);
+ r = 1;
+ }
+
+ if (float32_is_nan(fa.f) || float32_is_nan(fb.f)) {
+ r = 1;
+ }
+
+ return r;
}
uint32_t helper_fcmp_lt(uint32_t a, uint32_t b)