i386: 0.938 device: 0.870 architecture: 0.831 performance: 0.807 semantic: 0.790 network: 0.753 socket: 0.751 files: 0.735 PID: 0.720 vnc: 0.711 ppc: 0.706 kernel: 0.697 x86: 0.686 permissions: 0.678 graphic: 0.657 register: 0.624 debug: 0.616 arm: 0.608 risc-v: 0.591 boot: 0.586 TCG: 0.584 VMM: 0.498 assembly: 0.462 hypervisor: 0.395 user-level: 0.384 peripherals: 0.375 KVM: 0.336 virtual: 0.312 mistranslation: 0.140 -------------------- i386: 0.999 x86: 0.975 debug: 0.640 TCG: 0.142 assembly: 0.113 virtual: 0.073 files: 0.066 register: 0.050 hypervisor: 0.046 performance: 0.029 PID: 0.026 semantic: 0.015 architecture: 0.012 device: 0.011 kernel: 0.009 user-level: 0.008 network: 0.004 peripherals: 0.004 VMM: 0.004 boot: 0.003 graphic: 0.003 ppc: 0.003 risc-v: 0.003 socket: 0.002 vnc: 0.002 permissions: 0.002 KVM: 0.001 mistranslation: 0.001 arm: 0.000 QEMU i386 fldl instruction is affected by the precision control bits of the FPU control word Description of problem: ~~The QEMU softfloat float64_to_floatx80 implementation is broken and does not produce correct results.~~ QEMU i386 fldl instruction is affected by the precision control bits of the FPU control word. ``` IN = 1234.567890 (0x40934a4584f4c6e7) OUT = 1234.567871 (0x40099a522c0000000000) ``` This bug was introduced in the QEMU commit qemu/qemu@8ae5719 as part of the switchover to FloatParts, and is still present in the latest tag (v7.0.0-rc4 as of now). Prior to the offending commit: ``` IN = 1234.567890 (0x40934a4584f4c6e7) OUT = 1234.567890 (0x40099a522c27a6373800) ``` This breaks the i386 emulation of `fldl st(0)` (`helper_fldl_ST0`). Steps to reproduce: Call `float64_to_floatx80` with the input value of `1234.567890 (0x40934a4584f4c6e7)` and see the returned result. Additional information: See https://github.com/zephyrproject-rtos/sdk-ng/issues/461