pub mod factory;
pub mod runtime;
pub mod strategy;
pub mod variants;
pub use factory::AlgorithmFactory;
pub use runtime::CpuCapabilities;
pub use strategy::OptimizationStrategy;
pub use variants::AlgorithmVariant;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OptimizationLevel {
Reference,
Optimized,
Aggressive,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum CpuFeature {
Avx2,
AesNi,
Sse2,
Neon,
}
pub trait OptimizationProvider {
type Output;
type Error;
fn create_optimized(&self, capabilities: &CpuCapabilities)
-> Result<Self::Output, Self::Error>;
fn create_reference(&self) -> Result<Self::Output, Self::Error>;
fn supports_feature(&self, feature: CpuFeature) -> bool;
}