aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs')
-rw-r--r--Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs12
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);