diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp index 69284d0109..211805cc4d 100644 --- a/rpcs3/Emu/Cell/SPURecompiler.cpp +++ b/rpcs3/Emu/Cell/SPURecompiler.cpp @@ -8572,8 +8572,13 @@ public: return; } - // (TODO: implement via known-bits-lookup) Check whether shuffle mask doesn't contain fixed value selectors - const auto [perm_only, dummy1] = match_expr(c, match() & 31); + // Check whether shuffle mask doesn't contain fixed value selectors + bool perm_only = false; + + if (auto k = get_known_bits(c); !!(k.Zero & 0x80)) + { + perm_only = true; + } const auto a = get_vr(op.ra); const auto b = get_vr(op.rb);