diff options
Diffstat (limited to 'results/classifier/gemma3:12b/device/1843795')
| -rw-r--r-- | results/classifier/gemma3:12b/device/1843795 | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/results/classifier/gemma3:12b/device/1843795 b/results/classifier/gemma3:12b/device/1843795 new file mode 100644 index 000000000..4f1078ee9 --- /dev/null +++ b/results/classifier/gemma3:12b/device/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 |