From 8b3a09f5489f2facd338fc29b09aa5b68538d26e Mon Sep 17 00:00:00 2001 From: steam-test1 <34393637+steam-test1@users.noreply.github.com> Date: Tue, 14 Jan 2025 19:45:42 +0000 Subject: [PATCH] Attempt at implementing BreakC --- Hlsl/HlslSimpleWriter.cs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/Hlsl/HlslSimpleWriter.cs b/Hlsl/HlslSimpleWriter.cs index 5dd0405..d06eb8d 100644 --- a/Hlsl/HlslSimpleWriter.cs +++ b/Hlsl/HlslSimpleWriter.cs @@ -104,7 +104,31 @@ private void WriteInstruction(D3D9Instruction instruction) GetSourceName(instruction, 1), GetSourceName(instruction, 2)); break; case Opcode.BreakC: - WriteLine("break;"); + string ifComparisonBreak; + switch (instruction.Comparison) + { + case IfComparison.GT: + ifComparisonBreak = ">"; + break; + case IfComparison.EQ: + ifComparisonBreak = "=="; + break; + case IfComparison.GE: + ifComparisonBreak = ">="; + break; + case IfComparison.LE: + ifComparisonBreak = "<="; + break; + case IfComparison.NE: + ifComparisonBreak = "!="; + break; + case IfComparison.LT: + ifComparisonBreak = "<"; + break; + default: + throw new InvalidOperationException(); + } + WriteLine("if ({0} {2} {1}) break;", GetSourceName(instruction, 0), GetSourceName(instruction, 1), ifComparisonBreak); break; case Opcode.Cmp: // TODO: should be per-component