diff options
Diffstat (limited to 'Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs')
| -rw-r--r-- | Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs b/Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs index 7a141bbc..71925269 100644 --- a/Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs +++ b/Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs @@ -166,13 +166,17 @@ namespace Ryujinx.Graphics.Shader.Instructions { Operand srcB = context.BitwiseNot(src, invert); - Operand res = isSigned - ? context.FindFirstSetS32(srcB) - : context.FindFirstSetU32(srcB); + Operand res; if (sh) { - res = context.BitwiseExclusiveOr(res, Const(31)); + res = context.FindLSB(context.BitfieldReverse(srcB)); + } + else + { + res = isSigned + ? context.FindMSBS32(srcB) + : context.FindMSBU32(srcB); } context.Copy(GetDest(rd), res); |
