Implement shader LEA instruction and improve bindless image load/store (#1355)
This commit is contained in:
parent
76e5af967a
commit
e13154c83d
7 changed files with 82 additions and 43 deletions
|
@ -4,12 +4,12 @@ namespace Ryujinx.Graphics.Shader.Decoders
|
|||
{
|
||||
public static bool Extract(this int value, int lsb)
|
||||
{
|
||||
return ((int)(value >> lsb) & 1) != 0;
|
||||
return ((value >> lsb) & 1) != 0;
|
||||
}
|
||||
|
||||
public static int Extract(this int value, int lsb, int length)
|
||||
{
|
||||
return (int)(value >> lsb) & (int)(uint.MaxValue >> (32 - length));
|
||||
return (value >> lsb) & (int)(uint.MaxValue >> (32 - length));
|
||||
}
|
||||
|
||||
public static bool Extract(this long value, int lsb)
|
||||
|
|
|
@ -176,6 +176,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
|
|||
Set("1110111110010x", InstEmit.Ldc, typeof(OpCodeLdc));
|
||||
Set("1110111011010x", InstEmit.Ldg, typeof(OpCodeMemory));
|
||||
Set("1110111101001x", InstEmit.Lds, typeof(OpCodeMemory));
|
||||
Set("010010111101xx", InstEmit.Lea, typeof(OpCodeAluCbuf));
|
||||
Set("0011011x11010x", InstEmit.Lea, typeof(OpCodeAluImm));
|
||||
Set("0101101111010x", InstEmit.Lea, typeof(OpCodeAluReg));
|
||||
Set("0100110001000x", InstEmit.Lop, typeof(OpCodeLopCbuf));
|
||||
Set("0011100001000x", InstEmit.Lop, typeof(OpCodeLopImm));
|
||||
Set("000001xxxxxxxx", InstEmit.Lop, typeof(OpCodeLopImm32));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue