diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/shader/shader_jit_x64.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/shader/shader_jit_x64.h | 2 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/video_core/shader/shader_jit_x64.cpp b/src/video_core/shader/shader_jit_x64.cpp index 6554830b2..4249675a5 100644 --- a/src/video_core/shader/shader_jit_x64.cpp +++ b/src/video_core/shader/shader_jit_x64.cpp | |||
| @@ -653,7 +653,7 @@ void JitCompiler::Compile_IF(Instruction instr) { | |||
| 653 | FixupBranch b = J_CC(CC_Z, true); | 653 | FixupBranch b = J_CC(CC_Z, true); |
| 654 | 654 | ||
| 655 | // Compile the code that corresponds to the condition evaluating as true | 655 | // Compile the code that corresponds to the condition evaluating as true |
| 656 | Compile_Block(instr.flow_control.dest_offset - 1); | 656 | Compile_Block(instr.flow_control.dest_offset); |
| 657 | 657 | ||
| 658 | // If there isn't an "ELSE" condition, we are done here | 658 | // If there isn't an "ELSE" condition, we are done here |
| 659 | if (instr.flow_control.num_instructions == 0) { | 659 | if (instr.flow_control.num_instructions == 0) { |
| @@ -667,7 +667,7 @@ void JitCompiler::Compile_IF(Instruction instr) { | |||
| 667 | 667 | ||
| 668 | // This code corresponds to the "ELSE" condition | 668 | // This code corresponds to the "ELSE" condition |
| 669 | // Comple the code that corresponds to the condition evaluating as false | 669 | // Comple the code that corresponds to the condition evaluating as false |
| 670 | Compile_Block(instr.flow_control.dest_offset + instr.flow_control.num_instructions - 1); | 670 | Compile_Block(instr.flow_control.dest_offset + instr.flow_control.num_instructions); |
| 671 | 671 | ||
| 672 | SetJumpTarget(b2); | 672 | SetJumpTarget(b2); |
| 673 | } | 673 | } |
| @@ -691,7 +691,7 @@ void JitCompiler::Compile_LOOP(Instruction instr) { | |||
| 691 | 691 | ||
| 692 | auto loop_start = GetCodePtr(); | 692 | auto loop_start = GetCodePtr(); |
| 693 | 693 | ||
| 694 | Compile_Block(instr.flow_control.dest_offset); | 694 | Compile_Block(instr.flow_control.dest_offset + 1); |
| 695 | 695 | ||
| 696 | ADD(32, R(LOOPCOUNT_REG), R(LOOPINC)); // Increment LOOPCOUNT_REG by Z-component | 696 | ADD(32, R(LOOPCOUNT_REG), R(LOOPINC)); // Increment LOOPCOUNT_REG by Z-component |
| 697 | SUB(32, R(LOOPCOUNT), Imm8(1)); // Increment loop count by 1 | 697 | SUB(32, R(LOOPCOUNT), Imm8(1)); // Increment loop count by 1 |
| @@ -719,12 +719,12 @@ void JitCompiler::Compile_JMP(Instruction instr) { | |||
| 719 | SetJumpTarget(b); | 719 | SetJumpTarget(b); |
| 720 | } | 720 | } |
| 721 | 721 | ||
| 722 | void JitCompiler::Compile_Block(unsigned stop) { | 722 | void JitCompiler::Compile_Block(unsigned end) { |
| 723 | // Save current offset pointer | 723 | // Save current offset pointer |
| 724 | unsigned* prev_offset_ptr = offset_ptr; | 724 | unsigned* prev_offset_ptr = offset_ptr; |
| 725 | unsigned offset = *prev_offset_ptr; | 725 | unsigned offset = *prev_offset_ptr; |
| 726 | 726 | ||
| 727 | while (offset <= stop) | 727 | while (offset < end) |
| 728 | Compile_NextInstr(&offset); | 728 | Compile_NextInstr(&offset); |
| 729 | 729 | ||
| 730 | // Restore current offset pointer | 730 | // Restore current offset pointer |
diff --git a/src/video_core/shader/shader_jit_x64.h b/src/video_core/shader/shader_jit_x64.h index 3afbceccf..5ad2d9606 100644 --- a/src/video_core/shader/shader_jit_x64.h +++ b/src/video_core/shader/shader_jit_x64.h | |||
| @@ -61,7 +61,7 @@ public: | |||
| 61 | void Compile_MAD(Instruction instr); | 61 | void Compile_MAD(Instruction instr); |
| 62 | 62 | ||
| 63 | private: | 63 | private: |
| 64 | void Compile_Block(unsigned stop); | 64 | void Compile_Block(unsigned end); |
| 65 | void Compile_NextInstr(unsigned* offset); | 65 | void Compile_NextInstr(unsigned* offset); |
| 66 | 66 | ||
| 67 | void Compile_SwizzleSrc(Instruction instr, unsigned src_num, SourceRegister src_reg, Gen::X64Reg dest); | 67 | void Compile_SwizzleSrc(Instruction instr, unsigned src_num, SourceRegister src_reg, Gen::X64Reg dest); |