diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2021-12-05 09:25:05 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-05 13:25:05 +0100 |
| commit | acc0b0f3138b0ea4d573db5152927026c29bd61d (patch) | |
| tree | 2573dc9e8bdf548ee873c913c04dc65e901d18b2 /Ryujinx.Graphics.Shader/Instructions/InstEmitBitfield.cs | |
| parent | 2ab777885b174edb554ef3df7737f112b82e8b5d (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.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); |
