diff --git a/src/video_core/shader/shader_jit_x64.cpp b/src/video_core/shader/shader_jit_x64.cpp index dda9bcef7..fae7e8b41 100644 --- a/src/video_core/shader/shader_jit_x64.cpp +++ b/src/video_core/shader/shader_jit_x64.cpp @@ -677,7 +677,7 @@ void JitCompiler::Compile_MAD(Instruction instr) { } void JitCompiler::Compile_IF(Instruction instr) { - RuntimeAssert(instr.flow_control.dest_offset > last_program_counter, "Backwards if-statements not supported"); + RuntimeAssert(instr.flow_control.dest_offset >= program_counter, "Backwards if-statements not supported"); // Evaluate the "IF" condition if (instr.opcode.Value() == OpCode::Id::IFU) { @@ -708,7 +708,7 @@ void JitCompiler::Compile_IF(Instruction instr) { } void JitCompiler::Compile_LOOP(Instruction instr) { - RuntimeAssert(instr.flow_control.dest_offset > last_program_counter, "Backwards loops not supported"); + RuntimeAssert(instr.flow_control.dest_offset >= program_counter, "Backwards loops not supported"); RuntimeAssert(!looping, "Nested loops not supported"); looping = true; @@ -770,8 +770,6 @@ void JitCompiler::Compile_Return() { } void JitCompiler::Compile_NextInstr() { - last_program_counter = program_counter; - auto search = return_offsets.find(program_counter); if (search != return_offsets.end()) { Compile_Return(); @@ -839,7 +837,6 @@ void JitCompiler::Compile() { FindReturnOffsets(); // Reset flow control state - last_program_counter = 0; program_counter = 0; looping = false; code_ptr.fill(nullptr); diff --git a/src/video_core/shader/shader_jit_x64.h b/src/video_core/shader/shader_jit_x64.h index 159b902b2..920a269e2 100644 --- a/src/video_core/shader/shader_jit_x64.h +++ b/src/video_core/shader/shader_jit_x64.h @@ -108,7 +108,6 @@ private: /// Offsets in code where a return needs to be inserted std::set return_offsets; - unsigned last_program_counter = 0; ///< Offset of the most recent instruction decoded unsigned program_counter = 0; ///< Offset of the next instruction to decode bool looping = false; ///< True if compiling a loop, used to check for nested loops