x86: 0.855 architecture: 0.770 mistranslation: 0.767 i386: 0.747 device: 0.640 kernel: 0.567 user-level: 0.548 graphic: 0.544 hypervisor: 0.539 socket: 0.539 ppc: 0.535 files: 0.525 performance: 0.524 peripherals: 0.507 vnc: 0.495 semantic: 0.495 risc-v: 0.448 PID: 0.429 network: 0.411 permissions: 0.383 arm: 0.382 VMM: 0.359 TCG: 0.331 boot: 0.317 register: 0.316 debug: 0.312 virtual: 0.310 KVM: 0.296 assembly: 0.277 x86: FPU_MAX, FPU_MIN incorrect Dear All, Bug was found in qemu.git. Now (0.15, 1.0) all fpu is softfpu. See target-i386/ops_sse.h: #define FPU_MIN(size, a, b) (a) < (b) ? (a) : (b) #define FPU_MAX(size, a, b) (a) > (b) ? (a) : (b) It is incorrect now, becouse float64 (or 32) is (typedef) uint64_t (or 32). And if we have signed operands we get error... There is a test with this error (spec shinx3 test data, results diffs on machine and qemu (linux)) and fixed patch. See attach. Daniil. misprint: spec sphinx3 test data 482.sphinx3: http://www.spec.org/cpu2006/CFP2006/ The attached patch is incorrect (using the softfloat _min/_max functions will give wrong answers for some special cases). The correct macros are #define FPU_MIN(size, a, b) float ## size ## _lt(a, b, &env->sse_status) ? (a) : (b) #define FPU_MAX(size, a, b) float ## size ## _lt(b, a, &env->sse_status) ? (a) : (b) (see recent discussion on the qemu-devel list). Hello! Can I commit this patch (in development branch), and close this bug... Or you must do it? Your patch is broken, as I said before. Yes, but you patch is correct... May be commit you patch I say about #define FPU_MIN(size, a, b) float ## size ## _lt(a, b, &env->sse_status) ? (a) : (b) #define FPU_MAX(size, a, b) float ## size ## _lt(b, a, &env->sse_status) ? (b) : (a) The patch mentioned in comment #5 has been included here: http://git.qemu.org/?p=qemu.git;a=commitdiff;h=a4d1f142542935b90d2e