summary refs log tree commit diff stats
path: root/results/classifier/gemma3:27b/runtime/1821515
diff options
context:
space:
mode:
Diffstat (limited to 'results/classifier/gemma3:27b/runtime/1821515')
-rw-r--r--results/classifier/gemma3:27b/runtime/182151541
1 files changed, 41 insertions, 0 deletions
diff --git a/results/classifier/gemma3:27b/runtime/1821515 b/results/classifier/gemma3:27b/runtime/1821515
new file mode 100644
index 000000000..9392e639a
--- /dev/null
+++ b/results/classifier/gemma3:27b/runtime/1821515
@@ -0,0 +1,41 @@
+
+
+
+qemu-ppc (user) incorrectly converts float(nan)->double(non-nan)
+
+Noticed on qemu-3.1.0 on GHC test suite where float32 comparisons didn't work on NaNs.
+Here is the minimal reproducer:
+
+```c
+// cat a.c
+#include <stdio.h>
+#include <math.h>
+#include <stdint.h>
+
+int main() {
+    volatile float f1 = NAN;
+    volatile float f2 = NAN;
+    printf ("f1 (%e, %#x) >= f2 (%e, %#x): %s\n",
+        f1, *(volatile uint32_t*)&f1,
+        f2, *(volatile uint32_t*)&f2,
+        (f1 >= f2) ? "True"
+                   : "False");
+    volatile double d = f1;
+    printf ("d (%e, %#llx)\n",
+        d, *(volatile uint64_t*)&d);
+}
+```
+
+```
+# incorrect execution:
+$ powerpc-unknown-linux-gnu-gcc -O2 a.c -o a -static && qemu-ppc ./a 
+f1 (5.104236e+38, 0x7fc00000) >= f2 (5.104236e+38, 0x7fc00000): True
+d (5.104236e+38, 0x47f8000000000000)
+
+# correct execution
+$ scp a timberdoodle.ppc64.dev.gentoo.org:~/;  ssh timberdoodle.ppc64.dev.gentoo.org ./a
+f1 (nan, 0x7fc00000) >= f2 (nan, 0x7fc00000): False
+d (nan, 0x7ff8000000000000)
+```
+
+Note: qemu-ppc handled float32 extension as it was not a NaN (exp=111..1111) but a normalized number.
\ No newline at end of file