Browse Source

shader: Fix loop safety to SSA pass

nce_cpp
ReinUsesLisp 5 years ago
committed by ameerj
parent
commit
574a99b9b3
  1. 4
      src/shader_recompiler/frontend/maxwell/structured_control_flow.cpp
  2. 2
      src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp

4
src/shader_recompiler/frontend/maxwell/structured_control_flow.cpp

@ -750,7 +750,9 @@ private:
} else {
IR::Block* const init_block{block_pool.Create(inst_pool)};
IR::IREmitter ir{*init_block};
ir.SetLoopSafetyVariable(this_loop_id, ir.Imm32(0x2000));
static constexpr u32 SAFETY_THRESHOLD = 0x2000;
ir.SetLoopSafetyVariable(this_loop_id, ir.Imm32(SAFETY_THRESHOLD));
if (current_block) {
current_block->AddBranch(init_block);

2
src/shader_recompiler/ir_opt/ssa_rewrite_pass.cpp

@ -338,7 +338,7 @@ void VisitInst(Pass& pass, IR::Block* block, IR::Inst& inst) {
pass.WriteVariable(GotoVariable{inst.Arg(0).U32()}, block, inst.Arg(1));
break;
case IR::Opcode::SetLoopSafetyVariable:
pass.WriteVariable(LoopSafetyVariable{inst.Arg(0).U32()}, block, inst.Arg(0));
pass.WriteVariable(LoopSafetyVariable{inst.Arg(0).U32()}, block, inst.Arg(1));
break;
case IR::Opcode::SetIndirectBranchVariable:
pass.WriteVariable(IndirectBranchVariable{}, block, inst.Arg(0));

Loading…
Cancel
Save