mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	shader: Fix loop safety to SSA pass
This commit is contained in:
		@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user