'mtfsf' instruction can clear FI incorrectly
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Expired
|
Undecided
|
Unassigned |
Bug Description
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 89ea03a7dc83ca3
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_
Test attached.
tags: | added: fpu ppc testcase |
Changed in qemu: | |
status: | Incomplete → New |
The QEMU project is currently considering to move its bug tracking to
another system. For this we need to know which bugs are still valid
and which could be closed already. Thus we are setting older bugs to
"Incomplete" now.
If you still think this bug report here is valid, then please switch
the state back to "New" within the next 60 days, otherwise this report
will be marked as "Expired". Or please mark it as "Fix Released" if
the problem has been solved with a newer version of QEMU already.
Thank you and sorry for the inconvenience.