vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
use crate::proof::comparator::ComparatorKind;
use crate::spec::types::{ChainSpec, OpSpec, Strictness};
pub use super::suite::ConformanceSuite;
use crate::spec::minimums::{MIN_BOUNDARY_VALUES, MIN_EQUIVALENCE_CLASSES};

fn chain_workgroup_sizes(chain: &ChainSpec) -> Result<Vec<u32>, String> {
    let mut sizes = workgroup_sizes(None)?;
    for spec in &chain.specs {
        if let Some(size) = spec.workgroup_size {
            // Reject 0 / >1024 here too. F16: silent drop of 0 is gone.
            for added in workgroup_sizes(Some(size))? {
                sizes.push(added);
            }
        }
    }
    sizes.sort_unstable();
    sizes.dedup();
    Ok(sizes)
}