tenferro_runtime/compiler/
options.rs1use 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}