Skip to main content

tenferro_runtime/compiler/
options.rs

1use std::collections::hash_map::DefaultHasher;
2use std::hash::{Hash, Hasher};
3
4#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
5pub struct CompilerOptions {
6    pub optimizer: OptimizerConfig,
7}
8
9#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
10pub struct OptimizerConfig {
11    pub algebraic_layout_simplifier: bool,
12    pub layout_chain_transpose_folding: bool,
13    pub dot_decomposer: bool,
14}
15
16impl OptimizerConfig {
17    pub const VERSION: u64 = 1;
18
19    pub fn fingerprint(self) -> u64 {
20        let mut hasher = DefaultHasher::new();
21        Self::VERSION.hash(&mut hasher);
22        self.hash(&mut hasher);
23        hasher.finish()
24    }
25}
26
27impl Default for OptimizerConfig {
28    fn default() -> Self {
29        Self {
30            algebraic_layout_simplifier: true,
31            layout_chain_transpose_folding: true,
32            dot_decomposer: false,
33        }
34    }
35}