diff options
Diffstat (limited to 'Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs')
| -rw-r--r-- | Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs | 1208 |
1 files changed, 604 insertions, 604 deletions
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs index 469092a2..f935be74 100644 --- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs +++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs @@ -14,1138 +14,1138 @@ namespace Ryujinx.Graphics.Gal.Shader MergeH1 } - public static void Bfe_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Bfe_C(ShaderIrBlock block, long opCode, int position) { - EmitBfe(Block, OpCode, ShaderOper.CR); + EmitBfe(block, opCode, ShaderOper.Cr); } - public static void Bfe_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Bfe_I(ShaderIrBlock block, long opCode, int position) { - EmitBfe(Block, OpCode, ShaderOper.Imm); + EmitBfe(block, opCode, ShaderOper.Imm); } - public static void Bfe_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Bfe_R(ShaderIrBlock block, long opCode, int position) { - EmitBfe(Block, OpCode, ShaderOper.RR); + EmitBfe(block, opCode, ShaderOper.Rr); } - public static void Fadd_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Fadd_C(ShaderIrBlock block, long opCode, int position) { - EmitFadd(Block, OpCode, ShaderOper.CR); + EmitFadd(block, opCode, ShaderOper.Cr); } - public static void Fadd_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Fadd_I(ShaderIrBlock block, long opCode, int position) { - EmitFadd(Block, OpCode, ShaderOper.Immf); + EmitFadd(block, opCode, ShaderOper.Immf); } - public static void Fadd_I32(ShaderIrBlock Block, long OpCode, int Position) + public static void Fadd_I32(ShaderIrBlock block, long opCode, int position) { - ShaderIrNode OperA = OpCode.Gpr8(); - ShaderIrNode OperB = OpCode.Immf32_20(); + ShaderIrNode operA = opCode.Gpr8(); + ShaderIrNode operB = opCode.Immf32_20(); - bool NegB = OpCode.Read(53); - bool AbsA = OpCode.Read(54); - bool NegA = OpCode.Read(56); - bool AbsB = OpCode.Read(57); + bool negB = opCode.Read(53); + bool absA = opCode.Read(54); + bool negA = opCode.Read(56); + bool absB = opCode.Read(57); - OperA = GetAluFabsFneg(OperA, AbsA, NegA); - OperB = GetAluFabsFneg(OperB, AbsB, NegB); + operA = GetAluFabsFneg(operA, absA, negA); + operB = GetAluFabsFneg(operB, absB, negB); - ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Fadd, OperA, OperB); + ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Fadd, operA, operB); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } - public static void Fadd_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Fadd_R(ShaderIrBlock block, long opCode, int position) { - EmitFadd(Block, OpCode, ShaderOper.RR); + EmitFadd(block, opCode, ShaderOper.Rr); } - public static void Ffma_CR(ShaderIrBlock Block, long OpCode, int Position) + public static void Ffma_CR(ShaderIrBlock block, long opCode, int position) { - EmitFfma(Block, OpCode, ShaderOper.CR); + EmitFfma(block, opCode, ShaderOper.Cr); } - public static void Ffma_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Ffma_I(ShaderIrBlock block, long opCode, int position) { - EmitFfma(Block, OpCode, ShaderOper.Immf); + EmitFfma(block, opCode, ShaderOper.Immf); } - public static void Ffma_RC(ShaderIrBlock Block, long OpCode, int Position) + public static void Ffma_RC(ShaderIrBlock block, long opCode, int position) { - EmitFfma(Block, OpCode, ShaderOper.RC); + EmitFfma(block, opCode, ShaderOper.Rc); } - public static void Ffma_RR(ShaderIrBlock Block, long OpCode, int Position) + public static void Ffma_RR(ShaderIrBlock block, long opCode, int position) { - EmitFfma(Block, OpCode, ShaderOper.RR); + EmitFfma(block, opCode, ShaderOper.Rr); } - public static void Fmnmx_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Fmnmx_C(ShaderIrBlock block, long opCode, int position) { - EmitFmnmx(Block, OpCode, ShaderOper.CR); + EmitFmnmx(block, opCode, ShaderOper.Cr); } - public static void Fmnmx_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Fmnmx_I(ShaderIrBlock block, long opCode, int position) { - EmitFmnmx(Block, OpCode, ShaderOper.Immf); + EmitFmnmx(block, opCode, ShaderOper.Immf); } - public static void Fmnmx_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Fmnmx_R(ShaderIrBlock block, long opCode, int position) { - EmitFmnmx(Block, OpCode, ShaderOper.RR); + EmitFmnmx(block, opCode, ShaderOper.Rr); } - public static void Fmul_I32(ShaderIrBlock Block, long OpCode, int Position) + public static void Fmul_I32(ShaderIrBlock block, long opCode, int position) { - ShaderIrNode OperA = OpCode.Gpr8(); - ShaderIrNode OperB = OpCode.Immf32_20(); + ShaderIrNode operA = opCode.Gpr8(); + ShaderIrNode operB = opCode.Immf32_20(); - ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Fmul, OperA, OperB); + ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Fmul, operA, operB); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } - public static void Fmul_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Fmul_C(ShaderIrBlock block, long opCode, int position) { - EmitFmul(Block, OpCode, ShaderOper.CR); + EmitFmul(block, opCode, ShaderOper.Cr); } - public static void Fmul_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Fmul_I(ShaderIrBlock block, long opCode, int position) { - EmitFmul(Block, OpCode, ShaderOper.Immf); + EmitFmul(block, opCode, ShaderOper.Immf); } - public static void Fmul_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Fmul_R(ShaderIrBlock block, long opCode, int position) { - EmitFmul(Block, OpCode, ShaderOper.RR); + EmitFmul(block, opCode, ShaderOper.Rr); } - public static void Fset_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Fset_C(ShaderIrBlock block, long opCode, int position) { - EmitFset(Block, OpCode, ShaderOper.CR); + EmitFset(block, opCode, ShaderOper.Cr); } - public static void Fset_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Fset_I(ShaderIrBlock block, long opCode, int position) { - EmitFset(Block, OpCode, ShaderOper.Immf); + EmitFset(block, opCode, ShaderOper.Immf); } - public static void Fset_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Fset_R(ShaderIrBlock block, long opCode, int position) { - EmitFset(Block, OpCode, ShaderOper.RR); + EmitFset(block, opCode, ShaderOper.Rr); } - public static void Fsetp_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Fsetp_C(ShaderIrBlock block, long opCode, int position) { - EmitFsetp(Block, OpCode, ShaderOper.CR); + EmitFsetp(block, opCode, ShaderOper.Cr); } - public static void Fsetp_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Fsetp_I(ShaderIrBlock block, long opCode, int position) { - EmitFsetp(Block, OpCode, ShaderOper.Immf); + EmitFsetp(block, opCode, ShaderOper.Immf); } - public static void Fsetp_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Fsetp_R(ShaderIrBlock block, long opCode, int position) { - EmitFsetp(Block, OpCode, ShaderOper.RR); + EmitFsetp(block, opCode, ShaderOper.Rr); } - public static void Hadd2_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Hadd2_R(ShaderIrBlock block, long opCode, int position) { - EmitBinaryHalfOp(Block, OpCode, ShaderIrInst.Fadd); + EmitBinaryHalfOp(block, opCode, ShaderIrInst.Fadd); } - public static void Hmul2_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Hmul2_R(ShaderIrBlock block, long opCode, int position) { - EmitBinaryHalfOp(Block, OpCode, ShaderIrInst.Fmul); + EmitBinaryHalfOp(block, opCode, ShaderIrInst.Fmul); } - public static void Iadd_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Iadd_C(ShaderIrBlock block, long opCode, int position) { - EmitIadd(Block, OpCode, ShaderOper.CR); + EmitIadd(block, opCode, ShaderOper.Cr); } - public static void Iadd_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Iadd_I(ShaderIrBlock block, long opCode, int position) { - EmitIadd(Block, OpCode, ShaderOper.Imm); + EmitIadd(block, opCode, ShaderOper.Imm); } - public static void Iadd_I32(ShaderIrBlock Block, long OpCode, int Position) + public static void Iadd_I32(ShaderIrBlock block, long opCode, int position) { - ShaderIrNode OperA = OpCode.Gpr8(); - ShaderIrNode OperB = OpCode.Imm32_20(); + ShaderIrNode operA = opCode.Gpr8(); + ShaderIrNode operB = opCode.Imm32_20(); - bool NegA = OpCode.Read(56); + bool negA = opCode.Read(56); - OperA = GetAluIneg(OperA, NegA); + operA = GetAluIneg(operA, negA); - ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Add, OperA, OperB); + ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Add, operA, operB); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } - public static void Iadd_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Iadd_R(ShaderIrBlock block, long opCode, int position) { - EmitIadd(Block, OpCode, ShaderOper.RR); + EmitIadd(block, opCode, ShaderOper.Rr); } - public static void Iadd3_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Iadd3_C(ShaderIrBlock block, long opCode, int position) { - EmitIadd3(Block, OpCode, ShaderOper.CR); + EmitIadd3(block, opCode, ShaderOper.Cr); } - public static void Iadd3_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Iadd3_I(ShaderIrBlock block, long opCode, int position) { - EmitIadd3(Block, OpCode, ShaderOper.Imm); + EmitIadd3(block, opCode, ShaderOper.Imm); } - public static void Iadd3_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Iadd3_R(ShaderIrBlock block, long opCode, int position) { - EmitIadd3(Block, OpCode, ShaderOper.RR); + EmitIadd3(block, opCode, ShaderOper.Rr); } - public static void Imnmx_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Imnmx_C(ShaderIrBlock block, long opCode, int position) { - EmitImnmx(Block, OpCode, ShaderOper.CR); + EmitImnmx(block, opCode, ShaderOper.Cr); } - public static void Imnmx_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Imnmx_I(ShaderIrBlock block, long opCode, int position) { - EmitImnmx(Block, OpCode, ShaderOper.Imm); + EmitImnmx(block, opCode, ShaderOper.Imm); } - public static void Imnmx_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Imnmx_R(ShaderIrBlock block, long opCode, int position) { - EmitImnmx(Block, OpCode, ShaderOper.RR); + EmitImnmx(block, opCode, ShaderOper.Rr); } - public static void Ipa(ShaderIrBlock Block, long OpCode, int Position) + public static void Ipa(ShaderIrBlock block, long opCode, int position) { - ShaderIrNode OperA = OpCode.Abuf28(); - ShaderIrNode OperB = OpCode.Gpr20(); + ShaderIrNode operA = opCode.Abuf28(); + ShaderIrNode operB = opCode.Gpr20(); - ShaderIpaMode Mode = (ShaderIpaMode)(OpCode.Read(54, 3)); + ShaderIpaMode mode = (ShaderIpaMode)(opCode.Read(54, 3)); - ShaderIrMetaIpa Meta = new ShaderIrMetaIpa(Mode); + ShaderIrMetaIpa meta = new ShaderIrMetaIpa(mode); - ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Ipa, OperA, OperB, null, Meta); + ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Ipa, operA, operB, null, meta); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } - public static void Iscadd_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Iscadd_C(ShaderIrBlock block, long opCode, int position) { - EmitIscadd(Block, OpCode, ShaderOper.CR); + EmitIscadd(block, opCode, ShaderOper.Cr); } - public static void Iscadd_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Iscadd_I(ShaderIrBlock block, long opCode, int position) { - EmitIscadd(Block, OpCode, ShaderOper.Imm); + EmitIscadd(block, opCode, ShaderOper.Imm); } - public static void Iscadd_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Iscadd_R(ShaderIrBlock block, long opCode, int position) { - EmitIscadd(Block, OpCode, ShaderOper.RR); + EmitIscadd(block, opCode, ShaderOper.Rr); } - public static void Iset_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Iset_C(ShaderIrBlock block, long opCode, int position) { - EmitIset(Block, OpCode, ShaderOper.CR); + EmitIset(block, opCode, ShaderOper.Cr); } - public static void Iset_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Iset_I(ShaderIrBlock block, long opCode, int position) { - EmitIset(Block, OpCode, ShaderOper.Imm); + EmitIset(block, opCode, ShaderOper.Imm); } - public static void Iset_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Iset_R(ShaderIrBlock block, long opCode, int position) { - EmitIset(Block, OpCode, ShaderOper.RR); + EmitIset(block, opCode, ShaderOper.Rr); } - public static void Isetp_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Isetp_C(ShaderIrBlock block, long opCode, int position) { - EmitIsetp(Block, OpCode, ShaderOper.CR); + EmitIsetp(block, opCode, ShaderOper.Cr); } - public static void Isetp_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Isetp_I(ShaderIrBlock block, long opCode, int position) { - EmitIsetp(Block, OpCode, ShaderOper.Imm); + EmitIsetp(block, opCode, ShaderOper.Imm); } - public static void Isetp_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Isetp_R(ShaderIrBlock block, long opCode, int position) { - EmitIsetp(Block, OpCode, ShaderOper.RR); + EmitIsetp(block, opCode, ShaderOper.Rr); } - public static void Lop_I32(ShaderIrBlock Block, long OpCode, int Position) + public static void Lop_I32(ShaderIrBlock block, long opCode, int position) { - int SubOp = OpCode.Read(53, 3); + int subOp = opCode.Read(53, 3); - bool InvA = OpCode.Read(55); - bool InvB = OpCode.Read(56); + bool invA = opCode.Read(55); + bool invB = opCode.Read(56); - ShaderIrInst Inst = 0; + ShaderIrInst inst = 0; - switch (SubOp) + switch (subOp) { - case 0: Inst = ShaderIrInst.And; break; - case 1: Inst = ShaderIrInst.Or; break; - case 2: Inst = ShaderIrInst.Xor; break; + case 0: inst = ShaderIrInst.And; break; + case 1: inst = ShaderIrInst.Or; break; + case 2: inst = ShaderIrInst.Xor; break; } - ShaderIrNode OperB = GetAluNot(OpCode.Imm32_20(), InvB); + ShaderIrNode operB = GetAluNot(opCode.Imm32_20(), invB); //SubOp == 3 is pass, used by the not instruction //which just moves the inverted register value. - if (SubOp < 3) + if (subOp < 3) { - ShaderIrNode OperA = GetAluNot(OpCode.Gpr8(), InvA); + ShaderIrNode operA = GetAluNot(opCode.Gpr8(), invA); - ShaderIrOp Op = new ShaderIrOp(Inst, OperA, OperB); + ShaderIrOp op = new ShaderIrOp(inst, operA, operB); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } else { - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), OperB))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), operB))); } } - public static void Lop_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Lop_C(ShaderIrBlock block, long opCode, int position) { - EmitLop(Block, OpCode, ShaderOper.CR); + EmitLop(block, opCode, ShaderOper.Cr); } - public static void Lop_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Lop_I(ShaderIrBlock block, long opCode, int position) { - EmitLop(Block, OpCode, ShaderOper.Imm); + EmitLop(block, opCode, ShaderOper.Imm); } - public static void Lop_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Lop_R(ShaderIrBlock block, long opCode, int position) { - EmitLop(Block, OpCode, ShaderOper.RR); + EmitLop(block, opCode, ShaderOper.Rr); } - public static void Mufu(ShaderIrBlock Block, long OpCode, int Position) + public static void Mufu(ShaderIrBlock block, long opCode, int position) { - int SubOp = OpCode.Read(20, 0xf); + int subOp = opCode.Read(20, 0xf); - bool AbsA = OpCode.Read(46); - bool NegA = OpCode.Read(48); + bool absA = opCode.Read(46); + bool negA = opCode.Read(48); - ShaderIrInst Inst = 0; + ShaderIrInst inst = 0; - switch (SubOp) + switch (subOp) { - case 0: Inst = ShaderIrInst.Fcos; break; - case 1: Inst = ShaderIrInst.Fsin; break; - case 2: Inst = ShaderIrInst.Fex2; break; - case 3: Inst = ShaderIrInst.Flg2; break; - case 4: Inst = ShaderIrInst.Frcp; break; - case 5: Inst = ShaderIrInst.Frsq; break; - case 8: Inst = ShaderIrInst.Fsqrt; break; - - default: throw new NotImplementedException(SubOp.ToString()); + case 0: inst = ShaderIrInst.Fcos; break; + case 1: inst = ShaderIrInst.Fsin; break; + case 2: inst = ShaderIrInst.Fex2; break; + case 3: inst = ShaderIrInst.Flg2; break; + case 4: inst = ShaderIrInst.Frcp; break; + case 5: inst = ShaderIrInst.Frsq; break; + case 8: inst = ShaderIrInst.Fsqrt; break; + + default: throw new NotImplementedException(subOp.ToString()); } - ShaderIrNode OperA = OpCode.Gpr8(); + ShaderIrNode operA = opCode.Gpr8(); - ShaderIrOp Op = new ShaderIrOp(Inst, GetAluFabsFneg(OperA, AbsA, NegA)); + ShaderIrOp op = new ShaderIrOp(inst, GetAluFabsFneg(operA, absA, negA)); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } - public static void Psetp(ShaderIrBlock Block, long OpCode, int Position) + public static void Psetp(ShaderIrBlock block, long opCode, int position) { - bool NegA = OpCode.Read(15); - bool NegB = OpCode.Read(32); - bool NegP = OpCode.Read(42); + bool negA = opCode.Read(15); + bool negB = opCode.Read(32); + bool negP = opCode.Read(42); - ShaderIrInst LopInst = OpCode.BLop24(); + ShaderIrInst lopInst = opCode.BLop24(); - ShaderIrNode OperA = OpCode.Pred12(); - ShaderIrNode OperB = OpCode.Pred29(); + ShaderIrNode operA = opCode.Pred12(); + ShaderIrNode operB = opCode.Pred29(); - if (NegA) + if (negA) { - OperA = new ShaderIrOp(ShaderIrInst.Bnot, OperA); + operA = new ShaderIrOp(ShaderIrInst.Bnot, operA); } - if (NegB) + if (negB) { - OperB = new ShaderIrOp(ShaderIrInst.Bnot, OperB); + operB = new ShaderIrOp(ShaderIrInst.Bnot, operB); } - ShaderIrOp Op = new ShaderIrOp(LopInst, OperA, OperB); + ShaderIrOp op = new ShaderIrOp(lopInst, operA, operB); - ShaderIrOperPred P0Node = OpCode.Pred3(); - ShaderIrOperPred P1Node = OpCode.Pred0(); - ShaderIrOperPred P2Node = OpCode.Pred39(); + ShaderIrOperPred p0Node = opCode.Pred3(); + ShaderIrOperPred p1Node = opCode.Pred0(); + ShaderIrOperPred p2Node = opCode.Pred39(); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P0Node, Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(p0Node, op))); - LopInst = OpCode.BLop45(); + lopInst = opCode.BLop45(); - if (LopInst == ShaderIrInst.Band && P1Node.IsConst && P2Node.IsConst) + if (lopInst == ShaderIrInst.Band && p1Node.IsConst && p2Node.IsConst) { return; } - ShaderIrNode P2NNode = P2Node; + ShaderIrNode p2NNode = p2Node; - if (NegP) + if (negP) { - P2NNode = new ShaderIrOp(ShaderIrInst.Bnot, P2NNode); + p2NNode = new ShaderIrOp(ShaderIrInst.Bnot, p2NNode); } - Op = new ShaderIrOp(ShaderIrInst.Bnot, P0Node); + op = new ShaderIrOp(ShaderIrInst.Bnot, p0Node); - Op = new ShaderIrOp(LopInst, Op, P2NNode); + op = new ShaderIrOp(lopInst, op, p2NNode); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P1Node, Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(p1Node, op))); - Op = new ShaderIrOp(LopInst, P0Node, P2NNode); + op = new ShaderIrOp(lopInst, p0Node, p2NNode); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P0Node, Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(p0Node, op))); } - public static void Rro_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Rro_C(ShaderIrBlock block, long opCode, int position) { - EmitRro(Block, OpCode, ShaderOper.CR); + EmitRro(block, opCode, ShaderOper.Cr); } - public static void Rro_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Rro_I(ShaderIrBlock block, long opCode, int position) { - EmitRro(Block, OpCode, ShaderOper.Immf); + EmitRro(block, opCode, ShaderOper.Immf); } - public static void Rro_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Rro_R(ShaderIrBlock block, long opCode, int position) { - EmitRro(Block, OpCode, ShaderOper.RR); + EmitRro(block, opCode, ShaderOper.Rr); } - public static void Shl_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Shl_C(ShaderIrBlock block, long opCode, int position) { - EmitAluBinary(Block, OpCode, ShaderOper.CR, ShaderIrInst.Lsl); + EmitAluBinary(block, opCode, ShaderOper.Cr, ShaderIrInst.Lsl); } - public static void Shl_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Shl_I(ShaderIrBlock block, long opCode, int position) { - EmitAluBinary(Block, OpCode, ShaderOper.Imm, ShaderIrInst.Lsl); + EmitAluBinary(block, opCode, ShaderOper.Imm, ShaderIrInst.Lsl); } - public static void Shl_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Shl_R(ShaderIrBlock block, long opCode, int position) { - EmitAluBinary(Block, OpCode, ShaderOper.RR, ShaderIrInst.Lsl); + EmitAluBinary(block, opCode, ShaderOper.Rr, ShaderIrInst.Lsl); } - public static void Shr_C(ShaderIrBlock Block, long OpCode, int Position) + public static void Shr_C(ShaderIrBlock block, long opCode, int position) { - EmitAluBinary(Block, OpCode, ShaderOper.CR, GetShrInst(OpCode)); + EmitAluBinary(block, opCode, ShaderOper.Cr, GetShrInst(opCode)); } - public static void Shr_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Shr_I(ShaderIrBlock block, long opCode, int position) { - EmitAluBinary(Block, OpCode, ShaderOper.Imm, GetShrInst(OpCode)); + EmitAluBinary(block, opCode, ShaderOper.Imm, GetShrInst(opCode)); } - public static void Shr_R(ShaderIrBlock Block, long OpCode, int Position) + public static void Shr_R(ShaderIrBlock block, long opCode, int position) { - EmitAluBinary(Block, OpCode, ShaderOper.RR, GetShrInst(OpCode)); + EmitAluBinary(block, opCode, ShaderOper.Rr, GetShrInst(opCode)); } - private static ShaderIrInst GetShrInst(long OpCode) + private static ShaderIrInst GetShrInst(long opCode) { - bool Signed = OpCode.Read(48); + bool signed = opCode.Read(48); - return Signed ? ShaderIrInst.Asr : ShaderIrInst.Lsr; + return signed ? ShaderIrInst.Asr : ShaderIrInst.Lsr; } - public static void Vmad(ShaderIrBlock Block, long OpCode, int Position) + public static void Vmad(ShaderIrBlock block, long opCode, int position) { - ShaderIrNode OperA = OpCode.Gpr8(); + ShaderIrNode operA = opCode.Gpr8(); - ShaderIrNode OperB; + ShaderIrNode operB; - if (OpCode.Read(50)) + if (opCode.Read(50)) { - OperB = OpCode.Gpr20(); + operB = opCode.Gpr20(); } else { - OperB = OpCode.Imm19_20(); + operB = opCode.Imm19_20(); } - ShaderIrOperGpr OperC = OpCode.Gpr39(); + ShaderIrOperGpr operC = opCode.Gpr39(); - ShaderIrNode Tmp = new ShaderIrOp(ShaderIrInst.Mul, OperA, OperB); + ShaderIrNode tmp = new ShaderIrOp(ShaderIrInst.Mul, operA, operB); - ShaderIrNode Final = new ShaderIrOp(ShaderIrInst.Add, Tmp, OperC); + ShaderIrNode final = new ShaderIrOp(ShaderIrInst.Add, tmp, operC); - int Shr = OpCode.Read(51, 3); + int shr = opCode.Read(51, 3); - if (Shr != 0) + if (shr != 0) { - int Shift = (Shr == 2) ? 15 : 7; + int shift = (shr == 2) ? 15 : 7; - Final = new ShaderIrOp(ShaderIrInst.Lsr, Final, new ShaderIrOperImm(Shift)); + final = new ShaderIrOp(ShaderIrInst.Lsr, final, new ShaderIrOperImm(shift)); } - Block.AddNode(new ShaderIrCmnt("Stubbed. Instruction is reduced to a * b + c")); + block.AddNode(new ShaderIrCmnt("Stubbed. Instruction is reduced to a * b + c")); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Final))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), final))); } - public static void Xmad_CR(ShaderIrBlock Block, long OpCode, int Position) + public static void Xmad_CR(ShaderIrBlock block, long opCode, int position) { - EmitXmad(Block, OpCode, ShaderOper.CR); + EmitXmad(block, opCode, ShaderOper.Cr); } - public static void Xmad_I(ShaderIrBlock Block, long OpCode, int Position) + public static void Xmad_I(ShaderIrBlock block, long opCode, int position) { - EmitXmad(Block, OpCode, ShaderOper.Imm); + EmitXmad(block, opCode, ShaderOper.Imm); } - public static void Xmad_RC(ShaderIrBlock Block, long OpCode, int Position) + public static void Xmad_RC(ShaderIrBlock block, long opCode, int position) { - EmitXmad(Block, OpCode, ShaderOper.RC); + EmitXmad(block, opCode, ShaderOper.Rc); } - public static void Xmad_RR(ShaderIrBlock Block, long OpCode, int Position) + public static void Xmad_RR(ShaderIrBlock block, long opCode, int position) { - EmitXmad(Block, OpCode, ShaderOper.RR); + EmitXmad(block, opCode, ShaderOper.Rr); } private static void EmitAluBinary( - ShaderIrBlock Block, - long OpCode, - ShaderOper Oper, - ShaderIrInst Inst) + ShaderIrBlock block, + long opCode, + ShaderOper oper, + ShaderIrInst inst) { - ShaderIrNode OperA = OpCode.Gpr8(), OperB; + ShaderIrNode operA = opCode.Gpr8(), operB; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Imm: operB = opCode.Imm19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - ShaderIrNode Op = new ShaderIrOp(Inst, OperA, OperB); + ShaderIrNode op = new ShaderIrOp(inst, operA, operB); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } - private static void EmitBfe(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitBfe(ShaderIrBlock block, long opCode, ShaderOper oper) { //TODO: Handle the case where position + length //is greater than the word size, in this case the sign bit //needs to be replicated to fill the remaining space. - bool NegB = OpCode.Read(48); - bool NegA = OpCode.Read(49); + bool negB = opCode.Read(48); + bool negA = opCode.Read(49); - ShaderIrNode OperA = OpCode.Gpr8(), OperB; + ShaderIrNode operA = opCode.Gpr8(), operB; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Imm: operB = opCode.Imm19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - ShaderIrNode Op; + ShaderIrNode op; - bool Signed = OpCode.Read(48); //? + bool signed = opCode.Read(48); //? - if (OperB is ShaderIrOperImm PosLen) + if (operB is ShaderIrOperImm posLen) { - int Position = (PosLen.Value >> 0) & 0xff; - int Length = (PosLen.Value >> 8) & 0xff; + int position = (posLen.Value >> 0) & 0xff; + int length = (posLen.Value >> 8) & 0xff; - int LSh = 32 - (Position + Length); + int lSh = 32 - (position + length); - ShaderIrInst RightShift = Signed + ShaderIrInst rightShift = signed ? ShaderIrInst.Asr : ShaderIrInst.Lsr; - Op = new ShaderIrOp(ShaderIrInst.Lsl, OperA, new ShaderIrOperImm(LSh)); - Op = new ShaderIrOp(RightShift, Op, new ShaderIrOperImm(LSh + Position)); + op = new ShaderIrOp(ShaderIrInst.Lsl, operA, new ShaderIrOperImm(lSh)); + op = new ShaderIrOp(rightShift, op, new ShaderIrOperImm(lSh + position)); } else { - ShaderIrOperImm Shift = new ShaderIrOperImm(8); - ShaderIrOperImm Mask = new ShaderIrOperImm(0xff); + ShaderIrOperImm shift = new ShaderIrOperImm(8); + ShaderIrOperImm mask = new ShaderIrOperImm(0xff); - ShaderIrNode OpPos, OpLen; + ShaderIrNode opPos, opLen; - OpPos = new ShaderIrOp(ShaderIrInst.And, OperB, Mask); - OpLen = new ShaderIrOp(ShaderIrInst.Lsr, OperB, Shift); - OpLen = new ShaderIrOp(ShaderIrInst.And, OpLen, Mask); + opPos = new ShaderIrOp(ShaderIrInst.And, operB, mask); + opLen = new ShaderIrOp(ShaderIrInst.Lsr, operB, shift); + opLen = new ShaderIrOp(ShaderIrInst.And, opLen, mask); - Op = new ShaderIrOp(ShaderIrInst.Lsr, OperA, OpPos); + op = new ShaderIrOp(ShaderIrInst.Lsr, operA, opPos); - Op = ExtendTo32(Op, Signed, OpLen); + op = ExtendTo32(op, signed, opLen); } - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } - private static void EmitFadd(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitFadd(ShaderIrBlock block, long opCode, ShaderOper oper) { - bool NegB = OpCode.Read(45); - bool AbsA = OpCode.Read(46); - bool NegA = OpCode.Read(48); - bool AbsB = OpCode.Read(49); - bool Sat = OpCode.Read(50); + bool negB = opCode.Read(45); + bool absA = opCode.Read(46); + bool negA = opCode.Read(48); + bool absB = opCode.Read(49); + bool sat = opCode.Read(50); - ShaderIrNode OperA = OpCode.Gpr8(), OperB; + ShaderIrNode operA = opCode.Gpr8(), operB; - OperA = GetAluFabsFneg(OperA, AbsA, NegA); + operA = GetAluFabsFneg(operA, absA, negA); - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Immf: operB = opCode.Immf19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - OperB = GetAluFabsFneg(OperB, AbsB, NegB); + operB = GetAluFabsFneg(operB, absB, negB); - ShaderIrNode Op = new ShaderIrOp(ShaderIrInst.Fadd, OperA, OperB); + ShaderIrNode op = new ShaderIrOp(ShaderIrInst.Fadd, operA, operB); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), GetAluFsat(Op, Sat)))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), GetAluFsat(op, sat)))); } - private static void EmitFmul(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitFmul(ShaderIrBlock block, long opCode, ShaderOper oper) { - bool NegB = OpCode.Read(48); - bool Sat = OpCode.Read(50); + bool negB = opCode.Read(48); + bool sat = opCode.Read(50); - ShaderIrNode OperA = OpCode.Gpr8(), OperB; + ShaderIrNode operA = opCode.Gpr8(), operB; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Immf: operB = opCode.Immf19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - OperB = GetAluFneg(OperB, NegB); + operB = GetAluFneg(operB, negB); - ShaderIrNode Op = new ShaderIrOp(ShaderIrInst.Fmul, OperA, OperB); + ShaderIrNode op = new ShaderIrOp(ShaderIrInst.Fmul, operA, operB); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), GetAluFsat(Op, Sat)))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), GetAluFsat(op, sat)))); } - private static void EmitFfma(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitFfma(ShaderIrBlock block, long opCode, ShaderOper oper) { - bool NegB = OpCode.Read(48); - bool NegC = OpCode.Read(49); - bool Sat = OpCode.Read(50); + bool negB = opCode.Read(48); + bool negC = opCode.Read(49); + bool sat = opCode.Read(50); - ShaderIrNode OperA = OpCode.Gpr8(), OperB, OperC; + ShaderIrNode operA = opCode.Gpr8(), operB, operC; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break; - case ShaderOper.RC: OperB = OpCode.Gpr39(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Immf: operB = opCode.Immf19_20(); break; + case ShaderOper.Rc: operB = opCode.Gpr39(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - OperB = GetAluFneg(OperB, NegB); + operB = GetAluFneg(operB, negB); - if (Oper == ShaderOper.RC) + if (oper == ShaderOper.Rc) { - OperC = GetAluFneg(OpCode.Cbuf34(), NegC); + operC = GetAluFneg(opCode.Cbuf34(), negC); } else { - OperC = GetAluFneg(OpCode.Gpr39(), NegC); + operC = GetAluFneg(opCode.Gpr39(), negC); } - ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Ffma, OperA, OperB, OperC); + ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Ffma, operA, operB, operC); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), GetAluFsat(Op, Sat)))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), GetAluFsat(op, sat)))); } - private static void EmitIadd(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitIadd(ShaderIrBlock block, long opCode, ShaderOper oper) { - ShaderIrNode OperA = OpCode.Gpr8(); - ShaderIrNode OperB; + ShaderIrNode operA = opCode.Gpr8(); + ShaderIrNode operB; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Imm: operB = opCode.Imm19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - bool NegA = OpCode.Read(49); - bool NegB = OpCode.Read(48); + bool negA = opCode.Read(49); + bool negB = opCode.Read(48); - OperA = GetAluIneg(OperA, NegA); - OperB = GetAluIneg(OperB, NegB); + operA = GetAluIneg(operA, negA); + operB = GetAluIneg(operB, negB); - ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Add, OperA, OperB); + ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Add, operA, operB); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } - private static void EmitIadd3(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitIadd3(ShaderIrBlock block, long opCode, ShaderOper oper) { - int Mode = OpCode.Read(37, 3); + int mode = opCode.Read(37, 3); - bool Neg1 = OpCode.Read(51); - bool Neg2 = OpCode.Read(50); - bool Neg3 = OpCode.Read(49); + bool neg1 = opCode.Read(51); + bool neg2 = opCode.Read(50); + bool neg3 = opCode.Read(49); - int Height1 = OpCode.Read(35, 3); - int Height2 = OpCode.Read(33, 3); - int Height3 = OpCode.Read(31, 3); + int height1 = opCode.Read(35, 3); + int height2 = opCode.Read(33, 3); + int height3 = opCode.Read(31, 3); - ShaderIrNode OperB; + ShaderIrNode operB; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Imm: operB = opCode.Imm19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - ShaderIrNode ApplyHeight(ShaderIrNode Src, int Height) + ShaderIrNode ApplyHeight(ShaderIrNode src, int height) { - if (Oper != ShaderOper.RR) + if (oper != ShaderOper.Rr) { - return Src; + return src; } - switch (Height) + switch (height) { - case 0: return Src; - case 1: return new ShaderIrOp(ShaderIrInst.And, Src, new ShaderIrOperImm(0xffff)); - case 2: return new ShaderIrOp(ShaderIrInst.Lsr, Src, new ShaderIrOperImm(16)); + case 0: return src; + case 1: return new ShaderIrOp(ShaderIrInst.And, src, new ShaderIrOperImm(0xffff)); + case 2: return new ShaderIrOp(ShaderIrInst.Lsr, src, new ShaderIrOperImm(16)); default: throw new InvalidOperationException(); } } - ShaderIrNode Src1 = GetAluIneg(ApplyHeight(OpCode.Gpr8(), Height1), Neg1); - ShaderIrNode Src2 = GetAluIneg(ApplyHeight(OperB, Height2), Neg2); - ShaderIrNode Src3 = GetAluIneg(ApplyHeight(OpCode.Gpr39(), Height3), Neg3); + ShaderIrNode src1 = GetAluIneg(ApplyHeight(opCode.Gpr8(), height1), neg1); + ShaderIrNode src2 = GetAluIneg(ApplyHeight(operB, height2), neg2); + ShaderIrNode src3 = GetAluIneg(ApplyHeight(opCode.Gpr39(), height3), neg3); - ShaderIrOp Sum = new ShaderIrOp(ShaderIrInst.Add, Src1, Src2); + ShaderIrOp sum = new ShaderIrOp(ShaderIrInst.Add, src1, src2); - if (Oper == ShaderOper.RR) + if (oper == ShaderOper.Rr) { - switch (Mode) + switch (mode) { - case 1: Sum = new ShaderIrOp(ShaderIrInst.Lsr, Sum, new ShaderIrOperImm(16)); break; - case 2: Sum = new ShaderIrOp(ShaderIrInst.Lsl, Sum, new ShaderIrOperImm(16)); break; + case 1: sum = new ShaderIrOp(ShaderIrInst.Lsr, sum, new ShaderIrOperImm(16)); break; + case 2: sum = new ShaderIrOp(ShaderIrInst.Lsl, sum, new ShaderIrOperImm(16)); break; } } //Note: Here there should be a "+ 1" when carry flag is set //but since carry is mostly ignored by other instructions, it's excluded for now - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), new ShaderIrOp(ShaderIrInst.Add, Sum, Src3)))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), new ShaderIrOp(ShaderIrInst.Add, sum, src3)))); } - private static void EmitIscadd(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitIscadd(ShaderIrBlock block, long opCode, ShaderOper oper) { - bool NegB = OpCode.Read(48); - bool NegA = OpCode.Read(49); + bool negB = opCode.Read(48); + bool negA = opCode.Read(49); - ShaderIrNode OperA = OpCode.Gpr8(), OperB; + ShaderIrNode operA = opCode.Gpr8(), operB; - ShaderIrOperImm Scale = OpCode.Imm5_39(); + ShaderIrOperImm scale = opCode.Imm5_39(); - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Imm: operB = opCode.Imm19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - OperA = GetAluIneg(OperA, NegA); - OperB = GetAluIneg(OperB, NegB); + operA = GetAluIneg(operA, negA); + operB = GetAluIneg(operB, negB); - ShaderIrOp ScaleOp = new ShaderIrOp(ShaderIrInst.Lsl, OperA, Scale); - ShaderIrOp AddOp = new ShaderIrOp(ShaderIrInst.Add, OperB, ScaleOp); + ShaderIrOp scaleOp = new ShaderIrOp(ShaderIrInst.Lsl, operA, scale); + ShaderIrOp addOp = new ShaderIrOp(ShaderIrInst.Add, operB, scaleOp); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), AddOp))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), addOp))); } - private static void EmitFmnmx(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitFmnmx(ShaderIrBlock block, long opCode, ShaderOper oper) { - EmitMnmx(Block, OpCode, true, Oper); + EmitMnmx(block, opCode, true, oper); } - private static void EmitImnmx(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitImnmx(ShaderIrBlock block, long opCode, ShaderOper oper) { - EmitMnmx(Block, OpCode, false, Oper); + EmitMnmx(block, opCode, false, oper); } - private static void EmitMnmx(ShaderIrBlock Block, long OpCode, bool IsFloat, ShaderOper Oper) + private static void EmitMnmx(ShaderIrBlock block, long opCode, bool isFloat, ShaderOper oper) { - bool NegB = OpCode.Read(45); - bool AbsA = OpCode.Read(46); - bool NegA = OpCode.Read(48); - bool AbsB = OpCode.Read(49); + bool negB = opCode.Read(45); + bool absA = opCode.Read(46); + bool negA = opCode.Read(48); + bool absB = opCode.Read(49); - ShaderIrNode OperA = OpCode.Gpr8(), OperB; + ShaderIrNode operA = opCode.Gpr8(), operB; - if (IsFloat) + if (isFloat) { - OperA = GetAluFabsFneg(OperA, AbsA, NegA); + operA = GetAluFabsFneg(operA, absA, negA); } else { - OperA = GetAluIabsIneg(OperA, AbsA, NegA); + operA = GetAluIabsIneg(operA, absA, negA); } - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break; - case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Imm: operB = opCode.Imm19_20(); break; + case ShaderOper.Immf: operB = opCode.Immf19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - if (IsFloat) + if (isFloat) { - OperB = GetAluFabsFneg(OperB, AbsB, NegB); + operB = GetAluFabsFneg(operB, absB, negB); } else { - OperB = GetAluIabsIneg(OperB, AbsB, NegB); + operB = GetAluIabsIneg(operB, absB, negB); } - ShaderIrOperPred Pred = OpCode.Pred39(); + ShaderIrOperPred pred = opCode.Pred39(); - ShaderIrOp Op; + ShaderIrOp op; - ShaderIrInst MaxInst = IsFloat ? ShaderIrInst.Fmax : ShaderIrInst.Max; - ShaderIrInst MinInst = IsFloat ? ShaderIrInst.Fmin : ShaderIrInst.Min; + ShaderIrInst maxInst = isFloat ? ShaderIrInst.Fmax : ShaderIrInst.Max; + ShaderIrInst minInst = isFloat ? ShaderIrInst.Fmin : ShaderIrInst.Min; - if (Pred.IsConst) + if (pred.IsConst) { - bool IsMax = OpCode.Read(42); + bool isMax = opCode.Read(42); - Op = new ShaderIrOp(IsMax - ? MaxInst - : MinInst, OperA, OperB); + op = new ShaderIrOp(isMax + ? maxInst + : minInst, operA, operB); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } else { - ShaderIrNode PredN = OpCode.Pred39N(); + ShaderIrNode predN = opCode.Pred39N(); - ShaderIrOp OpMax = new ShaderIrOp(MaxInst, OperA, OperB); - ShaderIrOp OpMin = new ShaderIrOp(MinInst, OperA, OperB); + ShaderIrOp opMax = new ShaderIrOp(maxInst, operA, operB); + ShaderIrOp opMin = new ShaderIrOp(minInst, operA, operB); - ShaderIrAsg AsgMax = new ShaderIrAsg(OpCode.Gpr0(), OpMax); - ShaderIrAsg AsgMin = new ShaderIrAsg(OpCode.Gpr0(), OpMin); + ShaderIrAsg asgMax = new ShaderIrAsg(opCode.Gpr0(), opMax); + ShaderIrAsg asgMin = new ShaderIrAsg(opCode.Gpr0(), opMin); - Block.AddNode(OpCode.PredNode(new ShaderIrCond(PredN, AsgMax, Not: true))); - Block.AddNode(OpCode.PredNode(new ShaderIrCond(PredN, AsgMin, Not: false))); + block.AddNode(opCode.PredNode(new ShaderIrCond(predN, asgMax, not: true))); + block.AddNode(opCode.PredNode(new ShaderIrCond(predN, asgMin, not: false))); } } - private static void EmitRro(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitRro(ShaderIrBlock block, long opCode, ShaderOper oper) { //Note: this is a range reduction instruction and is supposed to //be used with Mufu, here it just moves the value and ignores the operation. - bool NegA = OpCode.Read(45); - bool AbsA = OpCode.Read(49); + bool negA = opCode.Read(45); + bool absA = opCode.Read(49); - ShaderIrNode OperA; + ShaderIrNode operA; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperA = OpCode.Cbuf34(); break; - case ShaderOper.Immf: OperA = OpCode.Immf19_20(); break; - case ShaderOper.RR: OperA = OpCode.Gpr20(); break; + case ShaderOper.Cr: operA = opCode.Cbuf34(); break; + case ShaderOper.Immf: operA = opCode.Immf19_20(); break; + case ShaderOper.Rr: operA = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - OperA = GetAluFabsFneg(OperA, AbsA, NegA); + operA = GetAluFabsFneg(operA, absA, negA); - Block.AddNode(new ShaderIrCmnt("Stubbed.")); + block.AddNode(new ShaderIrCmnt("Stubbed.")); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), OperA))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), operA))); } - private static void EmitFset(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitFset(ShaderIrBlock block, long opCode, ShaderOper oper) { - EmitSet(Block, OpCode, true, Oper); + EmitSet(block, opCode, true, oper); } - private static void EmitIset(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitIset(ShaderIrBlock block, long opCode, ShaderOper oper) { - EmitSet(Block, OpCode, false, Oper); + EmitSet(block, opCode, false, oper); } - private static void EmitSet(ShaderIrBlock Block, long OpCode, bool IsFloat, ShaderOper Oper) + private static void EmitSet(ShaderIrBlock block, long opCode, bool isFloat, ShaderOper oper) { - bool NegA = OpCode.Read(43); - bool AbsB = OpCode.Read(44); - bool NegB = OpCode.Read(53); - bool AbsA = OpCode.Read(54); + bool negA = opCode.Read(43); + bool absB = opCode.Read(44); + bool negB = opCode.Read(53); + bool absA = opCode.Read(54); - bool BoolFloat = OpCode.Read(IsFloat ? 52 : 44); + bool boolFloat = opCode.Read(isFloat ? 52 : 44); - ShaderIrNode OperA = OpCode.Gpr8(), OperB; + ShaderIrNode operA = opCode.Gpr8(), operB; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break; - case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Imm: operB = opCode.Imm19_20(); break; + case ShaderOper.Immf: operB = opCode.Immf19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - ShaderIrInst CmpInst; + ShaderIrInst cmpInst; - if (IsFloat) + if (isFloat) { - OperA = GetAluFabsFneg(OperA, AbsA, NegA); - OperB = GetAluFabsFneg(OperB, AbsB, NegB); + operA = GetAluFabsFneg(operA, absA, negA); + operB = GetAluFabsFneg(operB, absB, negB); - CmpInst = OpCode.CmpF(); + cmpInst = opCode.CmpF(); } else { - CmpInst = OpCode.Cmp(); + cmpInst = opCode.Cmp(); } - ShaderIrOp Op = new ShaderIrOp(CmpInst, OperA, OperB); + ShaderIrOp op = new ShaderIrOp(cmpInst, operA, operB); - ShaderIrInst LopInst = OpCode.BLop45(); + ShaderIrInst lopInst = opCode.BLop45(); - ShaderIrOperPred PNode = OpCode.Pred39(); + ShaderIrOperPred pNode = opCode.Pred39(); - ShaderIrNode Imm0, Imm1; + ShaderIrNode imm0, imm1; - if (BoolFloat) + if (boolFloat) { - Imm0 = new ShaderIrOperImmf(0); - Imm1 = new ShaderIrOperImmf(1); + imm0 = new ShaderIrOperImmf(0); + imm1 = new ShaderIrOperImmf(1); } else { - Imm0 = new ShaderIrOperImm(0); - Imm1 = new ShaderIrOperImm(-1); + imm0 = new ShaderIrOperImm(0); + imm1 = new ShaderIrOperImm(-1); } - ShaderIrNode Asg0 = new ShaderIrAsg(OpCode.Gpr0(), Imm0); - ShaderIrNode Asg1 = new ShaderIrAsg(OpCode.Gpr0(), Imm1); + ShaderIrNode asg0 = new ShaderIrAsg(opCode.Gpr0(), imm0); + ShaderIrNode asg1 = new ShaderIrAsg(opCode.Gpr0(), imm1); - if (LopInst != ShaderIrInst.Band || !PNode.IsConst) + if (lopInst != ShaderIrInst.Band || !pNode.IsConst) { - ShaderIrOp Op2 = new ShaderIrOp(LopInst, Op, PNode); + ShaderIrOp op2 = new ShaderIrOp(lopInst, op, pNode); - Asg0 = new ShaderIrCond(Op2, Asg0, Not: true); - Asg1 = new ShaderIrCond(Op2, Asg1, Not: false); + asg0 = new ShaderIrCond(op2, asg0, not: true); + asg1 = new ShaderIrCond(op2, asg1, not: false); } else { - Asg0 = new ShaderIrCond(Op, Asg0, Not: true); - Asg1 = new ShaderIrCond(Op, Asg1, Not: false); + asg0 = new ShaderIrCond(op, asg0, not: true); + asg1 = new ShaderIrCond(op, asg1, not: false); } - Block.AddNode(OpCode.PredNode(Asg0)); - Block.AddNode(OpCode.PredNode(Asg1)); + block.AddNode(opCode.PredNode(asg0)); + block.AddNode(opCode.PredNode(asg1)); } - private static void EmitFsetp(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitFsetp(ShaderIrBlock block, long opCode, ShaderOper oper) { - EmitSetp(Block, OpCode, true, Oper); + EmitSetp(block, opCode, true, oper); } - private static void EmitIsetp(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitIsetp(ShaderIrBlock block, long opCode, ShaderOper oper) { - EmitSetp(Block, OpCode, false, Oper); + EmitSetp(block, opCode, false, oper); } - private static void EmitSetp(ShaderIrBlock Block, long OpCode, bool IsFloat, ShaderOper Oper) + private static void EmitSetp(ShaderIrBlock block, long opCode, bool isFloat, ShaderOper oper) { - bool AbsA = OpCode.Read(7); - bool NegP = OpCode.Read(42); - bool NegA = OpCode.Read(43); - bool AbsB = OpCode.Read(44); + bool absA = opCode.Read(7); + bool negP = opCode.Read(42); + bool negA = opCode.Read(43); + bool absB = opCode.Read(44); - ShaderIrNode OperA = OpCode.Gpr8(), OperB; + ShaderIrNode operA = opCode.Gpr8(), operB; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break; - case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Imm: operB = opCode.Imm19_20(); break; + case ShaderOper.Immf: operB = opCode.Immf19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - ShaderIrInst CmpInst; + ShaderIrInst cmpInst; - if (IsFloat) + if (isFloat) { - OperA = GetAluFabsFneg(OperA, AbsA, NegA); - OperB = GetAluFabs (OperB, AbsB); + operA = GetAluFabsFneg(operA, absA, negA); + operB = GetAluFabs (operB, absB); - CmpInst = OpCode.CmpF(); + cmpInst = opCode.CmpF(); } else { - CmpInst = OpCode.Cmp(); + cmpInst = opCode.Cmp(); } - ShaderIrOp Op = new ShaderIrOp(CmpInst, OperA, OperB); + ShaderIrOp op = new ShaderIrOp(cmpInst, operA, operB); - ShaderIrOperPred P0Node = OpCode.Pred3(); - ShaderIrOperPred P1Node = OpCode.Pred0(); - ShaderIrOperPred P2Node = OpCode.Pred39(); + ShaderIrOperPred p0Node = opCode.Pred3(); + ShaderIrOperPred p1Node = opCode.Pred0(); + ShaderIrOperPred p2Node = opCode.Pred39(); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P0Node, Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(p0Node, op))); - ShaderIrInst LopInst = OpCode.BLop45(); + ShaderIrInst lopInst = opCode.BLop45(); - if (LopInst == ShaderIrInst.Band && P1Node.IsConst && P2Node.IsConst) + if (lopInst == ShaderIrInst.Band && p1Node.IsConst && p2Node.IsConst) { return; } - ShaderIrNode P2NNode = P2Node; + ShaderIrNode p2NNode = p2Node; - if (NegP) + if (negP) { - P2NNode = new ShaderIrOp(ShaderIrInst.Bnot, P2NNode); + p2NNode = new ShaderIrOp(ShaderIrInst.Bnot, p2NNode); } - Op = new ShaderIrOp(ShaderIrInst.Bnot, P0Node); + op = new ShaderIrOp(ShaderIrInst.Bnot, p0Node); - Op = new ShaderIrOp(LopInst, Op, P2NNode); + op = new ShaderIrOp(lopInst, op, p2NNode); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P1Node, Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(p1Node, op))); - Op = new ShaderIrOp(LopInst, P0Node, P2NNode); + op = new ShaderIrOp(lopInst, p0Node, p2NNode); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P0Node, Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(p0Node, op))); } - private static void EmitBinaryHalfOp(ShaderIrBlock Block, long OpCode, ShaderIrInst Inst) + private static void EmitBinaryHalfOp(ShaderIrBlock block, long opCode, ShaderIrInst inst) { - bool AbsB = OpCode.Read(30); - bool NegB = OpCode.Read(31); - bool Sat = OpCode.Read(32); - bool AbsA = OpCode.Read(44); + bool absB = opCode.Read(30); + bool negB = opCode.Read(31); + bool sat = opCode.Read(32); + bool absA = opCode.Read(44); - ShaderIrOperGpr[] VecA = OpCode.GprHalfVec8(); - ShaderIrOperGpr[] VecB = OpCode.GprHalfVec20(); + ShaderIrOperGpr[] vecA = opCode.GprHalfVec8(); + ShaderIrOperGpr[] vecB = opCode.GprHalfVec20(); - HalfOutputType OutputType = (HalfOutputType)OpCode.Read(49, 3); + HalfOutputType outputType = (HalfOutputType)opCode.Read(49, 3); - int Elems = OutputType == HalfOutputType.PackedFp16 ? 2 : 1; - int First = OutputType == HalfOutputType.MergeH1 ? 1 : 0; + int elems = outputType == HalfOutputType.PackedFp16 ? 2 : 1; + int first = outputType == HalfOutputType.MergeH1 ? 1 : 0; - for (int Index = First; Index < Elems; Index++) + for (int index = first; index < elems; index++) { - ShaderIrNode OperA = GetAluFabs (VecA[Index], AbsA); - ShaderIrNode OperB = GetAluFabsFneg(VecB[Index], AbsB, NegB); + ShaderIrNode operA = GetAluFabs (vecA[index], absA); + ShaderIrNode operB = GetAluFabsFneg(vecB[index], absB, negB); - ShaderIrNode Op = new ShaderIrOp(Inst, OperA, OperB); + ShaderIrNode op = new ShaderIrOp(inst, operA, operB); - ShaderIrOperGpr Dst = GetHalfDst(OpCode, OutputType, Index); + ShaderIrOperGpr dst = GetHalfDst(opCode, outputType, index); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(Dst, GetAluFsat(Op, Sat)))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(dst, GetAluFsat(op, sat)))); } } - private static ShaderIrOperGpr GetHalfDst(long OpCode, HalfOutputType OutputType, int Index) + private static ShaderIrOperGpr GetHalfDst(long opCode, HalfOutputType outputType, int index) { - switch (OutputType) + switch (outputType) { - case HalfOutputType.PackedFp16: return OpCode.GprHalf0(Index); - case HalfOutputType.Fp32: return OpCode.Gpr0(); - case HalfOutputType.MergeH0: return OpCode.GprHalf0(0); - case HalfOutputType.MergeH1: return OpCode.GprHalf0(1); + case HalfOutputType.PackedFp16: return opCode.GprHalf0(index); + case HalfOutputType.Fp32: return opCode.Gpr0(); + case HalfOutputType.MergeH0: return opCode.GprHalf0(0); + case HalfOutputType.MergeH1: return opCode.GprHalf0(1); } - throw new ArgumentException(nameof(OutputType)); + throw new ArgumentException(nameof(outputType)); } - private static void EmitLop(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitLop(ShaderIrBlock block, long opCode, ShaderOper oper) { - int SubOp = OpCode.Read(41, 3); + int subOp = opCode.Read(41, 3); - bool InvA = OpCode.Read(39); - bool InvB = OpCode.Read(40); + bool invA = opCode.Read(39); + bool invB = opCode.Read(40); - ShaderIrInst Inst = 0; + ShaderIrInst inst = 0; - switch (SubOp) + switch (subOp) { - case 0: Inst = ShaderIrInst.And; break; - case 1: Inst = ShaderIrInst.Or; break; - case 2: Inst = ShaderIrInst.Xor; break; + case 0: inst = ShaderIrInst.And; break; + case 1: inst = ShaderIrInst.Or; break; + case 2: inst = ShaderIrInst.Xor; break; } - ShaderIrNode OperA = GetAluNot(OpCode.Gpr8(), InvA); - ShaderIrNode OperB; + ShaderIrNode operA = GetAluNot(opCode.Gpr8(), invA); + ShaderIrNode operB; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Imm: operB = opCode.Imm19_20(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - OperB = GetAluNot(OperB, InvB); + operB = GetAluNot(operB, invB); - ShaderIrNode Op; + ShaderIrNode op; - if (SubOp < 3) + if (subOp < 3) { - Op = new ShaderIrOp(Inst, OperA, OperB); + op = new ShaderIrOp(inst, operA, operB); } else { - Op = OperB; + op = operB; } - ShaderIrNode Compare = new ShaderIrOp(ShaderIrInst.Cne, Op, new ShaderIrOperImm(0)); + ShaderIrNode compare = new ShaderIrOp(ShaderIrInst.Cne, op, new ShaderIrOperImm(0)); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Pred48(), Compare))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Pred48(), compare))); - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op))); } private enum XmadMode @@ -1157,143 +1157,143 @@ namespace Ryujinx.Graphics.Gal.Shader Cbcc = 4 } - private static void EmitXmad(ShaderIrBlock Block, long OpCode, ShaderOper Oper) + private static void EmitXmad(ShaderIrBlock block, long opCode, ShaderOper oper) { - bool SignedA = OpCode.Read(48); - bool SignedB = OpCode.Read(49); - bool HighB = OpCode.Read(52); - bool HighA = OpCode.Read(53); + bool signedA = opCode.Read(48); + bool signedB = opCode.Read(49); + bool highB = opCode.Read(52); + bool highA = opCode.Read(53); - int Mode = OpCode.Read(50, 7); + int mode = opCode.Read(50, 7); - ShaderIrNode OperA = OpCode.Gpr8(), OperB, OperC; + ShaderIrNode operA = opCode.Gpr8(), operB, operC; - switch (Oper) + switch (oper) { - case ShaderOper.CR: OperB = OpCode.Cbuf34(); break; - case ShaderOper.Imm: OperB = OpCode.ImmU16_20(); break; - case ShaderOper.RC: OperB = OpCode.Gpr39(); break; - case ShaderOper.RR: OperB = OpCode.Gpr20(); break; + case ShaderOper.Cr: operB = opCode.Cbuf34(); break; + case ShaderOper.Imm: operB = opCode.ImmU16_20(); break; + case ShaderOper.Rc: operB = opCode.Gpr39(); break; + case ShaderOper.Rr: operB = opCode.Gpr20(); break; - default: throw new ArgumentException(nameof(Oper)); + default: throw new ArgumentException(nameof(oper)); } - ShaderIrNode OperB2 = OperB; + ShaderIrNode operB2 = operB; - if (Oper == ShaderOper.Imm) + if (oper == ShaderOper.Imm) { - int Imm = ((ShaderIrOperImm)OperB2).Value; + int imm = ((ShaderIrOperImm)operB2).Value; - if (!HighB) + if (!highB) { - Imm <<= 16; + imm <<= 16; } - if (SignedB) + if (signedB) { - Imm >>= 16; + imm >>= 16; } else { - Imm = (int)((uint)Imm >> 16); + imm = (int)((uint)imm >> 16); } - OperB2 = new ShaderIrOperImm(Imm); + operB2 = new ShaderIrOperImm(imm); } - ShaderIrOperImm Imm16 = new ShaderIrOperImm(16); + ShaderIrOperImm imm16 = new ShaderIrOperImm(16); //If we are working with the lower 16-bits of the A/B operands, //we need to shift the lower 16-bits to the top 16-bits. Later, //they will be right shifted. For U16 types, this will be a logical //right shift, and for S16 types, a arithmetic right shift. - if (!HighA) + if (!highA) { - OperA = new ShaderIrOp(ShaderIrInst.Lsl, OperA, Imm16); + operA = new ShaderIrOp(ShaderIrInst.Lsl, operA, imm16); } - if (!HighB && Oper != ShaderOper.Imm) + if (!highB && oper != ShaderOper.Imm) { - OperB2 = new ShaderIrOp(ShaderIrInst.Lsl, OperB2, Imm16); + operB2 = new ShaderIrOp(ShaderIrInst.Lsl, operB2, imm16); } - ShaderIrInst ShiftA = SignedA ? ShaderIrInst.Asr : ShaderIrInst.Lsr; - ShaderIrInst ShiftB = SignedB ? ShaderIrInst.Asr : ShaderIrInst.Lsr; + ShaderIrInst shiftA = signedA ? ShaderIrInst.Asr : ShaderIrInst.Lsr; + ShaderIrInst shiftB = signedB ? ShaderIrInst.Asr : ShaderIrInst.Lsr; - OperA = new ShaderIrOp(ShiftA, OperA, Imm16); + operA = new ShaderIrOp(shiftA, operA, imm16); - if (Oper != ShaderOper.Imm) + if (oper != ShaderOper.Imm) { - OperB2 = new ShaderIrOp(ShiftB, OperB2, Imm16); + operB2 = new ShaderIrOp(shiftB, operB2, imm16); } - bool ProductShiftLeft = false; - bool Merge = false; + bool productShiftLeft = false; + bool merge = false; - if (Oper == ShaderOper.RC) + if (oper == ShaderOper.Rc) { - OperC = OpCode.Cbuf34(); + operC = opCode.Cbuf34(); } else { - OperC = OpCode.Gpr39(); + operC = opCode.Gpr39(); - ProductShiftLeft = OpCode.Read(36); - Merge = OpCode.Read(37); + productShiftLeft = opCode.Read(36); + merge = opCode.Read(37); } - ShaderIrOp MulOp = new ShaderIrOp(ShaderIrInst.Mul, OperA, OperB2); + ShaderIrOp mulOp = new ShaderIrOp(ShaderIrInst.Mul, operA, operB2); - if (ProductShiftLeft) + if (productShiftLeft) { - MulOp = new ShaderIrOp(ShaderIrInst.Lsl, MulOp, Imm16); + mulOp = new ShaderIrOp(ShaderIrInst.Lsl, mulOp, imm16); } - switch ((XmadMode)Mode) + switch ((XmadMode)mode) { - case XmadMode.Clo: OperC = ExtendTo32(OperC, Signed: false, Size: 16); break; + case XmadMode.Clo: operC = ExtendTo32(operC, signed: false, size: 16); break; - case XmadMode.Chi: OperC = new ShaderIrOp(ShaderIrInst.Lsr, OperC, Imm16); break; + case XmadMode.Chi: operC = new ShaderIrOp(ShaderIrInst.Lsr, operC, imm16); break; case XmadMode.Cbcc: { - ShaderIrOp OperBLsh16 = new ShaderIrOp(ShaderIrInst.Lsl, OperB, Imm16); + ShaderIrOp operBLsh16 = new ShaderIrOp(ShaderIrInst.Lsl, operB, imm16); - OperC = new ShaderIrOp(ShaderIrInst.Add, OperC, OperBLsh16); + operC = new ShaderIrOp(ShaderIrInst.Add, operC, operBLsh16); break; } case XmadMode.Csfu: { - ShaderIrOperImm Imm31 = new ShaderIrOperImm(31); + ShaderIrOperImm imm31 = new ShaderIrOperImm(31); - ShaderIrOp SignAdjustA = new ShaderIrOp(ShaderIrInst.Lsr, OperA, Imm31); - ShaderIrOp SignAdjustB = new ShaderIrOp(ShaderIrInst.Lsr, OperB2, Imm31); + ShaderIrOp signAdjustA = new ShaderIrOp(ShaderIrInst.Lsr, operA, imm31); + ShaderIrOp signAdjustB = new ShaderIrOp(ShaderIrInst.Lsr, operB2, imm31); - SignAdjustA = new ShaderIrOp(ShaderIrInst.Lsl, SignAdjustA, Imm16); - SignAdjustB = new ShaderIrOp(ShaderIrInst.Lsl, SignAdjustB, Imm16); + signAdjustA = new ShaderIrOp(ShaderIrInst.Lsl, signAdjustA, imm16); + signAdjustB = new ShaderIrOp(ShaderIrInst.Lsl, signAdjustB, imm16); - ShaderIrOp SignAdjust = new ShaderIrOp(ShaderIrInst.Add, SignAdjustA, SignAdjustB); + ShaderIrOp signAdjust = new ShaderIrOp(ShaderIrInst.Add, signAdjustA, signAdjustB); - OperC = new ShaderIrOp(ShaderIrInst.Sub, OperC, SignAdjust); + operC = new ShaderIrOp(ShaderIrInst.Sub, operC, signAdjust); break; } } - ShaderIrOp AddOp = new ShaderIrOp(ShaderIrInst.Add, MulOp, OperC); + ShaderIrOp addOp = new ShaderIrOp(ShaderIrInst.Add, mulOp, operC); - if (Merge) + if (merge) { - ShaderIrOperImm Imm16Mask = new ShaderIrOperImm(0xffff); + ShaderIrOperImm imm16Mask = new ShaderIrOperImm(0xffff); - AddOp = new ShaderIrOp(ShaderIrInst.And, AddOp, Imm16Mask); - OperB = new ShaderIrOp(ShaderIrInst.Lsl, OperB, Imm16); - AddOp = new ShaderIrOp(ShaderIrInst.Or, AddOp, OperB); + addOp = new ShaderIrOp(ShaderIrInst.And, addOp, imm16Mask); + operB = new ShaderIrOp(ShaderIrInst.Lsl, operB, imm16); + addOp = new ShaderIrOp(ShaderIrInst.Or, addOp, operB); } - Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), AddOp))); + block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), addOp))); } } }
\ No newline at end of file |
