celox-sir-opt 0.4.3

Backend-independent SIR optimization policy and passes for Celox
Documentation
use crate::PassOptions;
use crate::ir::{ExecutionUnit, RegionedAbsoluteAddr};

use super::block_opt::schedule_instructions;
use super::pass_manager::ExecutionUnitPass;

pub(in crate::optimizer) struct ReschedulePass;

impl ExecutionUnitPass for ReschedulePass {
    fn name(&self) -> &'static str {
        "reschedule"
    }

    fn run(&self, eu: &mut ExecutionUnit<RegionedAbsoluteAddr>, options: &PassOptions) {
        for block in eu.blocks.values_mut() {
            schedule_instructions(&mut block.instructions, options.max_inflight_loads);
        }
    }
}