Partial support for shader memory barriers

This commit is contained in:
gdkchan 2019-12-14 14:51:00 -03:00 committed by Thog
parent 1a550e810c
commit 2eccc7023a
9 changed files with 98 additions and 0 deletions

View file

@ -61,6 +61,11 @@ namespace Ryujinx.Graphics.Shader.Translation
return context.Add(Instruction.Ballot, Local(), a);
}
public static Operand Barrier(this EmitterContext context)
{
return context.Add(Instruction.Barrier);
}
public static Operand BitCount(this EmitterContext context, Operand a)
{
return context.Add(Instruction.BitCount, Local(), a);
@ -336,6 +341,11 @@ namespace Ryujinx.Graphics.Shader.Translation
return context.Add(Instruction.SwizzleAdd, Local(), a, b, Const(mask));
}
public static Operand GroupMemoryBarrier(this EmitterContext context)
{
return context.Add(Instruction.GroupMemoryBarrier);
}
public static Operand IAbsNeg(this EmitterContext context, Operand a, bool abs, bool neg)
{
return context.INegate(context.IAbsolute(a, abs), neg);
@ -476,6 +486,11 @@ namespace Ryujinx.Graphics.Shader.Translation
return context.Add(Instruction.LoadShared, Local(), a);
}
public static Operand MemoryBarrier(this EmitterContext context)
{
return context.Add(Instruction.MemoryBarrier);
}
public static Operand MultiplyHighS32(this EmitterContext context, Operand a, Operand b)
{
return context.Add(Instruction.MultiplyHighS32, Local(), a, b);