From 06e425d77eb576e3d05ecc5ec0be51b00ca24f57 Mon Sep 17 00:00:00 2001 From: notaz Date: Mon, 15 Nov 2021 00:23:06 +0200 Subject: [PATCH 1/1] drc: handle a corner case with SLT --- libpcsxcore/new_dynarec/new_dynarec.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libpcsxcore/new_dynarec/new_dynarec.c b/libpcsxcore/new_dynarec/new_dynarec.c index ef9bec7b..ceba0e74 100644 --- a/libpcsxcore/new_dynarec/new_dynarec.c +++ b/libpcsxcore/new_dynarec/new_dynarec.c @@ -2157,10 +2157,11 @@ static void alu_assemble(int i,struct regstat *i_regs) s2l=get_reg(i_regs->regmap,rs2[i]); if(rs2[i]==0) // rx=0); - if(opcode2[i]==0x2a) // SLT + if(opcode2[i]==0x2a&&rs1[i]!=0) { // SLT + assert(s1l>=0); emit_shrimm(s1l,31,t); - else // SLTU (unsigned can not be less than zero) + } + else // SLTU (unsigned can not be less than zero, 0<0) emit_zeroreg(t); } else if(rs1[i]==0) // r0