From 92d1f443ac119949f67d88ae719fb85230124e78 Mon Sep 17 00:00:00 2001 From: digant Date: Sun, 22 Dec 2024 10:00:11 +0100 Subject: [PATCH] update --- rpcs3/Emu/Cell/SPULLVMRecompiler.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp index 9387527c8f..4fae99e344 100644 --- a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp @@ -4829,8 +4829,9 @@ public: if (auto [ok, v0, v1] = match_expr(ax, rotqbybi(match(), match())); ok && v1.eq(bx)) { const auto b32 = get_vr(op.rb); + // Is the rotate less than 31 bits? - if (auto k = get_known_bits(b32); !!(k.Zero & 0x60)) + if (auto k = get_known_bits(b32); (k.Zero & 0x60) == 0x60u) { const auto b = splat_scalar(get_vr(op.rb)); set_vr(op.rt, fshl(bitcast(v0), zshuffle(bitcast(v0), 3, 0, 1, 2), b)); @@ -4842,9 +4843,9 @@ public: { if (auto [ok2, data] = get_const_vector(v10.value, m_pos); ok2) { - if (data == v128::from32p(0x80)) + if ((data & v128::from32p(0x7f)) == v128{}) { - if (auto k = get_known_bits(v11); !!(k.Zero & 0x60)) + if (auto k = get_known_bits(v11); (k.Zero & 0x60) == 0x60u) { set_vr(op.rt, fshr(zshuffle(bitcast(v0), 1, 2, 3, 0), bitcast(v0), splat_scalar(bitcast(v11)))); return;