From e537d92bcc7cb6b7c4767971a727dd3f6bc60f4b Mon Sep 17 00:00:00 2001 From: Flyinghead Date: Wed, 12 Jun 2019 08:52:42 +0200 Subject: [PATCH] ssa: don't simplify FPU ops because of Inf of NaN --- core/hw/sh4/dyna/ssa.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/hw/sh4/dyna/ssa.h b/core/hw/sh4/dyna/ssa.h index 8dd2b287e..807cb878f 100644 --- a/core/hw/sh4/dyna/ssa.h +++ b/core/hw/sh4/dyna/ssa.h @@ -366,8 +366,8 @@ private: { // a & 0 == 0 // a * 0 == 0 - if (op.op == shop_and || op.op == shop_mul_i32 || op.op == shop_mul_s16 || op.op == shop_mul_u16 - || op.op == shop_fmul) + // Not true for FPU ops because of Inf and NaN + if (op.op == shop_and || op.op == shop_mul_i32 || op.op == shop_mul_s16 || op.op == shop_mul_u16) { //printf("%08x ZERO %s\n", block->vaddr + op.guest_offs, op.dissasm().c_str()); ReplaceByMov32(op, 0); @@ -386,9 +386,9 @@ private: // a ^ 0 == a // a >> 0 == a // a << 0 == a + // Not true for FPU ops because of Inf and NaN else if (op.op == shop_add || op.op == shop_sub || op.op == shop_or || op.op == shop_xor - || op.op == shop_shl || op.op == shop_shr || op.op == shop_sar || op.op == shop_shad || op.op == shop_shld - || op.op == shop_fadd || op.op == shop_fsub) + || op.op == shop_shl || op.op == shop_shr || op.op == shop_sar || op.op == shop_shad || op.op == shop_shld) { //printf("%08x IDEN %s\n", block->vaddr + op.guest_offs, op.dissasm().c_str()); ReplaceByMov32(op);