From 50dad6801b4a7e80403e64af6e14052c148a670c Mon Sep 17 00:00:00 2001 From: Eladash Date: Tue, 18 Jul 2023 20:56:10 +0300 Subject: [PATCH] SPU LLVM: Use get_known_bits() in SHUFB --- rpcs3/Emu/Cell/SPURecompiler.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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);