celox-backend-x86 0.8.2

Celox x86-64 machine-code backend
Documentation
mod bit_copy;
mod bit_permutation;
mod cfg;
mod constants;
mod gvn;
mod masks;
mod memory;
mod memory_forward;
mod post_regalloc;
mod selection;

use super::gvn::{GvnMemoryVariable, GvnMemoryVersion, compute_gvn_load_versions};
use super::memory_forward::{AvailableStores, clamped_key_range, find_best_covering_value};
use super::selection::select_values;
use super::*;

fn make_func(insts: Vec<MInst>, vreg_count: u32) -> MFunction {
    let mut vregs = VRegAllocator::new();
    for _ in 0..vreg_count {
        vregs.alloc();
    }
    let spill_descs = (0..vreg_count).map(|_| SpillDesc::transient()).collect();
    let mut func = MFunction::new(vregs, spill_descs);
    let mut block = MBlock::new(BlockId(0));
    block.insts = insts;
    func.push_block(block);
    func
}