Implement IMUL, PCNT and CONT shader instructions, fix FFMA32I and HFMA32I (#2972)
* Implement IMUL shader instruction * Implement PCNT/CONT instruction and fix FFMA32I * Add HFMA232I to the table * Shader cache version bump * No Rc on Ffma32i
This commit is contained in:
parent
952c6e4d45
commit
7f6b3d234a
9 changed files with 108 additions and 68 deletions
|
@ -204,7 +204,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
|
||||
var srcA = GetSrcReg(context, op.SrcA);
|
||||
var srcB = GetSrcImm(context, op.Imm32);
|
||||
var srcC = GetSrcReg(context, op.SrcC);
|
||||
var srcC = GetSrcReg(context, op.Dest);
|
||||
|
||||
EmitFfma(context, Instruction.FP32, srcA, srcB, srcC, op.Dest, op.NegA, op.NegC, op.Sat, op.WriteCC);
|
||||
}
|
||||
|
@ -333,13 +333,13 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
EmitHfma2(context, op.OFmt, srcA, srcB, srcC, op.Dest, op.Sat);
|
||||
}
|
||||
|
||||
public static void Hfma232iI(EmitterContext context)
|
||||
public static void Hfma232i(EmitterContext context)
|
||||
{
|
||||
InstHfma232i op = context.GetOp<InstHfma232i>();
|
||||
|
||||
var srcA = GetHalfSrc(context, op.ASwizzle, op.SrcA, false, false);
|
||||
var srcB = GetHalfSrc(context, op.Imm);
|
||||
var srcC = GetHalfSrc(context, HalfSwizzle.F16, op.SrcC, op.NegC, false);
|
||||
var srcC = GetHalfSrc(context, HalfSwizzle.F16, op.Dest, op.NegC, false);
|
||||
|
||||
EmitHfma2(context, OFmt.F16, srcA, srcB, srcC, op.Dest, saturate: false);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue