aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2021-12-05 09:25:05 -0300
committerGitHub <noreply@github.com>2021-12-05 13:25:05 +0100
commitacc0b0f3138b0ea4d573db5152927026c29bd61d (patch)
tree2573dc9e8bdf548ee873c913c04dc65e901d18b2 /Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs
parent2ab777885b174edb554ef3df7737f112b82e8b5d (diff)
Fix FLO.SH shader instruction with a input of 0 (#2876)
* Fix FLO.SH shader instruction with a input of 0 * Shader cache version bump
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);