summary refs log tree commit diff stats
path: root/results/classifier/deepseek-2-tmp/output/hypervisor/1843795
diff options
context:
space:
mode:
Diffstat (limited to 'results/classifier/deepseek-2-tmp/output/hypervisor/1843795')
-rw-r--r--results/classifier/deepseek-2-tmp/output/hypervisor/184379532
1 files changed, 32 insertions, 0 deletions
diff --git a/results/classifier/deepseek-2-tmp/output/hypervisor/1843795 b/results/classifier/deepseek-2-tmp/output/hypervisor/1843795
new file mode 100644
index 000000000..4f1078ee9
--- /dev/null
+++ b/results/classifier/deepseek-2-tmp/output/hypervisor/1843795
@@ -0,0 +1,32 @@
+
+'mtfsf' instruction can clear FI incorrectly
+
+Using mtfsf instruction can clear the FPSCR FI bit incorrectly.  This code snippet exhibits the issue:
+--
+  fpscr.ll = 0x1fffffff;
+  __builtin_mtfsf (0b11111111, fpscr.d);
+  fpscr.d = __builtin_mffs ();
+--
+
+On POWER9 hardware:
+mffs    : FPSCR = 0x000000007ffff7ff
+
+On qemu (git master; "-cpu POWER9"):
+--
+$ ./mtfsf
+mffs    : FPSCR = 0x000000007ffdffff
+--
+
+Two differences:
+bit 52: "reserved", so maybe a "don't care" case
+bit 46: "FI"
+
+$ git log -1 master
+commit 89ea03a7dc83ca36b670ba7f787802791fcb04b1
+Merge: 019217c 2531164
+Author: Peter Maydell <email address hidden>
+Date:   Mon Sep 9 09:48:34 2019 +0100
+
+I tracked the clear is coming from do_float_check_status, likely the one in gen_mtfsf, but then I get lost figuring out what _should_ be happening. :-/
+
+Test attached.
\ No newline at end of file