From 583ee09cf416dfeace9d73fb3061f6eb13a9213a Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Mon, 3 Nov 2014 11:10:35 +0100 Subject: mips3drc: Generate -0.0 for NEG.S/D of 0.0 as FNEG does not on x86 [MooglyGuy] --- src/emu/cpu/mips/mips3drc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/emu/cpu/mips/mips3drc.c b/src/emu/cpu/mips/mips3drc.c index 280e41c4fca..a6ab28cd68a 100644 --- a/src/emu/cpu/mips/mips3drc.c +++ b/src/emu/cpu/mips/mips3drc.c @@ -2764,9 +2764,17 @@ int mips3_device::generate_cop1(drcuml_block *block, compiler_state *compiler, c case 0x07: if (IS_SINGLE(op)) /* NEG.S - MIPS I */ + { UML_FSNEG(block, FPR32(FDREG), FPR32(FSREG)); // fsneg , + UML_CMP(block, FPR32(FSREG), 0); // cmp ,0.0 + UML_MOVc(block, COND_E, FPR32(FDREG), 0x80000000); // mov ,-0.0,e + } else /* NEG.D - MIPS I */ + { UML_FDNEG(block, FPR64(FDREG), FPR64(FSREG)); // fdneg , + UML_CMP(block, FPR64(FSREG), 0); // cmp ,0.0 + UML_DMOVc(block, COND_E, FPR64(FDREG), 0x8000000000000000L);// dmov ,-0.0,e + } return TRUE; case 0x08: -- cgit v1.2.3