From 1919dda3362fb96d671578f18bb7e00be985c26a Mon Sep 17 00:00:00 2001 From: Wunkolo Date: Sun, 12 May 2024 18:26:28 -0700 Subject: [PATCH] [a64] Fix `OPCODE_VECTOR_CONVERT_{I2F,F2I}` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 😳 --- src/xenia/cpu/backend/a64/a64_seq_vector.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/xenia/cpu/backend/a64/a64_seq_vector.cc b/src/xenia/cpu/backend/a64/a64_seq_vector.cc index 44e476dab..f3abc16c3 100644 --- a/src/xenia/cpu/backend/a64/a64_seq_vector.cc +++ b/src/xenia/cpu/backend/a64/a64_seq_vector.cc @@ -68,10 +68,11 @@ struct VECTOR_CONVERT_I2F // Merge the two ways depending on whether the number is >= 0x80000000 // (has high bit set). // e.vblendvps(i.dest, Q1, Q0, i.src1); - e.FCVTNU(i.dest.reg().S4(), i.src1.reg().S4()); + e.UCVTF(i.dest.reg().S4(), i.src1.reg().S4()); + } else { - e.FCVTNS(i.dest.reg().S4(), i.src1.reg().S4()); // e.vcvtdq2ps(i.dest, i.src1); + e.SCVTF(i.dest.reg().S4(), i.src1.reg().S4()); } } }; @@ -108,7 +109,8 @@ struct VECTOR_CONVERT_F2I // saturate values > UINT_MAX // e.vpor(i.dest, i.dest, Q0); - e.UCVTF(i.dest.reg().S4(), i.src1.reg().S4()); + e.FCVTNU(i.dest.reg().S4(), i.src1.reg().S4()); + } else { // xmm2 = NaN mask // e.vcmpunordps(e.xmm2, i.src1, i.src1); @@ -125,7 +127,7 @@ struct VECTOR_CONVERT_F2I // mask NaNs // e.vpandn(i.dest, e.xmm2, i.dest); - e.SCVTF(i.dest.reg().S4(), i.src1.reg().S4()); + e.FCVTNS(i.dest.reg().S4(), i.src1.reg().S4()); } } };