From 866ce9756a1fa96e0520d8f7a6e58ed6752e7a3f Mon Sep 17 00:00:00 2001 From: Wunkolo Date: Fri, 10 May 2024 08:20:30 -0700 Subject: [PATCH] [a64] Fix signed MUL_HI --- src/xenia/cpu/backend/a64/a64_sequences.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/xenia/cpu/backend/a64/a64_sequences.cc b/src/xenia/cpu/backend/a64/a64_sequences.cc index 6d3e045c2..7379f4509 100644 --- a/src/xenia/cpu/backend/a64/a64_sequences.cc +++ b/src/xenia/cpu/backend/a64/a64_sequences.cc @@ -1495,17 +1495,17 @@ struct MUL_HI_I32 if (i.src1.is_constant) { assert_true(!i.src2.is_constant); e.MOV(W0, i.src1.constant()); - e.UMULL(X0, W0, i.src2); + e.SMULL(X0, W0, i.src2); e.UBFX(X0, X0, 32, 32); e.MOV(i.dest, X0.toW()); } else if (i.src2.is_constant) { assert_true(!i.src1.is_constant); e.MOV(W0, i.src2.constant()); - e.UMULL(X0, W0, i.src2); + e.SMULL(X0, W0, i.src2); e.UBFX(X0, X0, 32, 32); e.MOV(i.dest, X0.toW()); } else { - e.UMULL(X0, W0, i.src2); + e.SMULL(X0, W0, i.src2); e.UBFX(X0, X0, 32, 32); e.MOV(i.dest, X0.toW()); } @@ -1531,13 +1531,13 @@ struct MUL_HI_I64 if (i.src1.is_constant) { assert_true(!i.src2.is_constant); e.MOV(X0, i.src1.constant()); - e.UMULH(i.dest, X0, i.src2); + e.SMULH(i.dest, X0, i.src2); } else if (i.src2.is_constant) { assert_true(!i.src1.is_constant); e.MOV(X0, i.src2.constant()); - e.UMULH(i.dest, i.src1, X0); + e.SMULH(i.dest, i.src1, X0); } else { - e.UMULH(i.dest, i.src1, i.src2); + e.SMULH(i.dest, i.src1, i.src2); } } }