--------------------------------------------------------------------------------
Profile data file 'callgrind.out.82460' (creator: callgrind-3.15.0)
--------------------------------------------------------------------------------
I1 cache: 
D1 cache: 
LL cache: 
Timerange: Basic block 0 - 5738552594
Trigger: Program termination
Profiled target:  /var/fabian/cargo-target/release/llhd-opt tests/regr_opt_dce_0001.llhd -vvv -t (PID 82460, part 1)
Events recorded:  Ir
Events shown:     Ir
Event sort order: Ir
Thresholds:       99
Include dirs:     
User annotated:   
Auto-annotation:  on

--------------------------------------------------------------------------------
Ir                      
--------------------------------------------------------------------------------
57,850,784,967 (100.0%)  PROGRAM TOTALS

--------------------------------------------------------------------------------
Ir                      file:function
--------------------------------------------------------------------------------
7,751,253,101 (13.40%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs:_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h34dc8d42a29d4a61E.llvm.2893526678292264256
3,369,362,188 ( 5.82%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:hashbrown::raw::RawTable<T>::reserve_rehash
2,679,520,339 ( 4.63%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs:hashbrown::raw::RawTable<T>::reserve_rehash
2,606,566,989 ( 4.51%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
2,138,721,632 ( 3.70%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
1,978,556,491 ( 3.42%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:hashbrown::raw::RawTable<T>::reserve_rehash [/var/fabian/cargo-target/release/llhd-opt]
1,852,747,143 ( 3.20%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:std::collections::hash::map::HashMap<K,V,S>::entry
1,520,204,605 ( 2.63%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs:std::collections::hash::map::HashMap<K,V,S>::entry
1,414,649,059 ( 2.45%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
1,327,012,640 ( 2.29%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:std::collections::hash::map::HashMap<K,V,S>::entry
1,236,439,559 ( 2.14%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::entry [/var/fabian/cargo-target/release/llhd-opt]
1,217,738,654 ( 2.10%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$6insert17hdd8614bab9bcb4c9E.llvm.2893526678292264256
1,154,197,941 ( 2.00%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023
1,153,488,970 ( 1.99%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$6insert17hdd8614bab9bcb4c9E.llvm.2893526678292264256
1,115,326,134 ( 1.93%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:std::collections::hash::set::HashSet<T,S>::contains
1,073,520,515 ( 1.86%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:hashbrown::raw::RawTable<T>::reserve_rehash
  947,034,208 ( 1.64%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023
  922,857,056 ( 1.60%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$6insert17hdd8614bab9bcb4c9E.llvm.2893526678292264256
  915,139,392 ( 1.58%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs:std::collections::hash::set::HashSet<T,S>::contains
  842,723,126 ( 1.46%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h34dc8d42a29d4a61E.llvm.2893526678292264256 [/var/fabian/cargo-target/release/llhd-opt]
  752,932,906 ( 1.30%)  src/ir/inst.rs:llhd::ir::dfg::DataFlowGraph::uses
  711,222,608 ( 1.23%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:hashbrown::raw::RawTable<T>::reserve_rehash
  685,005,584 ( 1.18%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023
  679,128,891 ( 1.17%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h34dc8d42a29d4a61E.llvm.2893526678292264256
  653,341,149 ( 1.13%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:llhd::pass::gcse::DominatorTree::new
  601,515,459 ( 1.04%)  src/table.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index [/var/fabian/cargo-target/release/llhd-opt]
  575,236,273 ( 0.99%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:std::collections::hash::set::HashSet<T,S>::contains
  558,606,632 ( 0.97%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:llhd::pass::gcse::DominatorTree::new
  527,166,217 ( 0.91%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/option.rs:llhd::ir::dfg::DataFlowGraph::uses
  503,111,923 ( 0.87%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023 [/var/fabian/cargo-target/release/llhd-opt]
  502,482,571 ( 0.87%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/mod.rs:hashbrown::raw::RawTable<T>::reserve_rehash
  493,899,207 ( 0.85%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs:_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h34dc8d42a29d4a61E.llvm.2893526678292264256
  467,845,357 ( 0.81%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
  419,559,790 ( 0.73%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:llhd::ir::dfg::DataFlowGraph::uses
  409,656,651 ( 0.71%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
  402,698,068 ( 0.70%)  src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::uses [/var/fabian/cargo-target/release/llhd-opt]
  382,828,973 ( 0.66%)  src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::new [/var/fabian/cargo-target/release/llhd-opt]
  334,175,255 ( 0.58%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/mod.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
  317,149,763 ( 0.55%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/map.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$6insert17hdd8614bab9bcb4c9E.llvm.2893526678292264256 [/var/fabian/cargo-target/release/llhd-opt]
  314,635,059 ( 0.54%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/set.rs:std::collections::hash::set::HashSet<T,S>::contains [/var/fabian/cargo-target/release/llhd-opt]
  277,697,092 ( 0.48%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/slice/mod.rs:llhd::ir::dfg::DataFlowGraph::uses
  276,907,733 ( 0.48%)  ???:_int_malloc [/usr/lib/libc-2.30.so]
  274,424,814 ( 0.47%)  ???:_int_free [/usr/lib/libc-2.30.so]
  272,860,772 ( 0.47%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:<core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold'2
  263,029,163 ( 0.45%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/ptr/mod.rs:hashbrown::raw::RawTable<T>::reserve_rehash
  240,078,374 ( 0.41%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs:hashbrown::raw::RawTable<T>::reserve_rehash
  237,551,370 ( 0.41%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/mod.rs:std::collections::hash::map::HashMap<K,V,S>::entry
  237,525,319 ( 0.41%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$6insert17hdd8614bab9bcb4c9E.llvm.2893526678292264256
  236,522,354 ( 0.41%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/adapters/mod.rs:llhd::ir::dfg::DataFlowGraph::uses
  222,598,489 ( 0.38%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:std::collections::hash::map::HashMap<K,V,S>::entry
  214,673,803 ( 0.37%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/../stdarch/crates/core_arch/src/x86/sse2.rs:std::collections::hash::map::HashMap<K,V,S>::entry
  210,923,735 ( 0.36%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/adapters/flatten.rs:llhd::pass::gcse::DominatorTree::new
  206,170,188 ( 0.36%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/../stdarch/crates/core_arch/src/x86/sse2.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
  201,874,981 ( 0.35%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$6insert17hdd8614bab9bcb4c9E.llvm.2893526678292264256
  200,186,742 ( 0.35%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::set::HashSet<T,S>::contains
  188,361,970 ( 0.33%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/../stdarch/crates/core_arch/src/x86/sse2.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$6insert17hdd8614bab9bcb4c9E.llvm.2893526678292264256
  187,278,121 ( 0.32%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:llhd::pass::gcse::DominatorTree::new
  187,048,777 ( 0.32%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/ptr/mod.rs:llhd::ir::dfg::DataFlowGraph::uses
  184,154,771 ( 0.32%)  src/table.rs:llhd::ir::dfg::DataFlowGraph::uses
  182,399,896 ( 0.32%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:<core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold'2
  182,207,127 ( 0.31%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023
  177,568,914 ( 0.31%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/mod.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023
  175,683,961 ( 0.30%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:std::collections::hash::set::HashSet<T,S>::contains
  174,690,425 ( 0.30%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/map.rs:hashbrown::raw::RawTable<T>::reserve_rehash
  154,037,016 ( 0.27%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/ptr/mod.rs:llhd::pass::gcse::DominatorTree::new
  149,978,930 ( 0.26%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:llhd::ir::dfg::DataFlowGraph::uses
  149,405,754 ( 0.26%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs:_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h34dc8d42a29d4a61E.llvm.15652897237403047591
  145,863,015 ( 0.25%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/set.rs:llhd::pass::gcse::DominatorTree::new
  144,251,490 ( 0.25%)  src/pass/gcse.rs:<core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold'2
  144,196,415 ( 0.25%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/mod.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$6insert17hdd8614bab9bcb4c9E.llvm.2893526678292264256
  143,042,756 ( 0.25%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/mod.rs:std::collections::hash::set::HashSet<T,S>::contains
  142,576,464 ( 0.25%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/rustc_entry.rs:std::collections::hash::map::HashMap<K,V,S>::entry
  136,293,764 ( 0.24%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/cmp.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
  133,839,275 ( 0.23%)  ???:malloc [/usr/lib/libc-2.30.so]
  133,670,102 ( 0.23%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/map.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
  133,670,102 ( 0.23%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/option.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
  118,281,986 ( 0.20%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/traits/iterator.rs:llhd::pass::gcse::DominatorTree::new
  114,654,360 ( 0.20%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/map.rs:<core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold'2
   97,800,049 ( 0.17%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/../stdarch/crates/core_arch/src/x86/sse2.rs:hashbrown::raw::RawTable<T>::reserve_rehash
   97,303,227 ( 0.17%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:hashbrown::raw::RawTable<T>::try_with_capacity [/var/fabian/cargo-target/release/llhd-opt]
   92,482,272 ( 0.16%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/../stdarch/crates/core_arch/src/x86/sse2.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023
   89,212,390 ( 0.15%)  src/pass/cfs.rs:llhd::pass::cfs::build_discriminator'2 [/var/fabian/cargo-target/release/llhd-opt]
   88,929,209 ( 0.15%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/../stdarch/crates/core_arch/src/x86/sse2.rs:std::collections::hash::set::HashSet<T,S>::contains
   83,723,594 ( 0.14%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/slice/mod.rs:<core::iter::adapters::Cloned<I> as core::iter::traits::iterator::Iterator>::try_fold
   67,968,058 ( 0.12%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index
   66,775,744 ( 0.12%)  ???:realloc [/usr/lib/libc-2.30.so]
   65,585,418 ( 0.11%)  src/ir/inst.rs:llhd::ir::dfg::DataFlowGraph::replace_use
   62,626,928 ( 0.11%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$6insert17hdd8614bab9bcb4c9E.llvm.2893526678292264256
   62,312,007 ( 0.11%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/adapters/mod.rs:<core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold'2 [/var/fabian/cargo-target/release/llhd-opt]
   59,659,837 ( 0.10%)  src/table.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023
   59,293,902 ( 0.10%)  ???:free [/usr/lib/libc-2.30.so]
   59,189,638 ( 0.10%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/map.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023
   59,189,638 ( 0.10%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/option.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023
   57,946,061 ( 0.10%)  src/table.rs:std::collections::hash::set::HashSet<T,S>::contains
   57,704,231 ( 0.10%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:<core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold'2
   57,700,596 ( 0.10%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/option.rs:<core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold'2
   57,196,212 ( 0.10%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/map.rs:std::collections::hash::set::HashSet<T,S>::contains
   57,145,484 ( 0.10%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/option.rs:std::collections::hash::set::HashSet<T,S>::contains
   55,386,764 ( 0.10%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/rustc_entry.rs:llhd::pass::gcse::DominatorTree::new
   50,344,571 ( 0.09%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs:std::collections::hash::map::HashMap<K,V,S>::entry
   47,812,029 ( 0.08%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/liballoc/vec.rs:<alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter'2 [/var/fabian/cargo-target/release/llhd-opt]
   47,348,693 ( 0.08%)  ???:_int_realloc [/usr/lib/libc-2.30.so]
   47,002,651 ( 0.08%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/../stdarch/crates/core_arch/src/x86/sse2.rs:llhd::pass::gcse::DominatorTree::new
   45,890,682 ( 0.08%)  ???:__memset_avx2_unaligned_erms [/usr/lib/libc-2.30.so]
   45,053,882 ( 0.08%)  src/table.rs:std::collections::hash::map::HashMap<K,V,S>::entry
   40,268,002 ( 0.07%)  ???:__memcpy_avx_unaligned_erms [/usr/lib/libc-2.30.so]
   34,536,515 ( 0.06%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:hashbrown::raw::RawTable<T>::try_with_capacity
   34,253,365 ( 0.06%)  ???:unlink_chunk.isra.0 [/usr/lib/libc-2.30.so]
   33,154,498 ( 0.06%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:llhd::pass::gcse::DominatorTree::new
   31,616,149 ( 0.05%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs:llhd::pass::gcse::DominatorTree::new
   31,451,370 ( 0.05%)  src/pass/cfs.rs:<core::iter::adapters::Cloned<I> as core::iter::traits::iterator::Iterator>::try_fold
   30,334,382 ( 0.05%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023
   29,109,109 ( 0.05%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs:std::collections::hash::set::HashSet<T,S>::contains
   28,991,633 ( 0.05%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/map.rs:std::collections::hash::map::HashMap<K,V,S>::entry
   28,756,933 ( 0.05%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/ptr/mod.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$6insert17hdd8614bab9bcb4c9E.llvm.2893526678292264256
   27,687,284 ( 0.05%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/adapters/mod.rs:<core::iter::adapters::Cloned<I> as core::iter::traits::iterator::Iterator>::try_fold [/var/fabian/cargo-target/release/llhd-opt]
   24,647,337 ( 0.04%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$3get17h0e48982f3be9eeb7E.llvm.6713649935165807986
   22,284,384 ( 0.04%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:llhd::ir::dfg::DataFlowGraph::replace_use
   21,187,603 ( 0.04%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/ptr/mod.rs:std::collections::hash::map::HashMap<K,V,S>::entry
   20,738,638 ( 0.04%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/slice/mod.rs:llhd::ir::dfg::DataFlowGraph::replace_use
   20,223,456 ( 0.03%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$3get17h0e48982f3be9eeb7E.llvm.6713649935165807986
   19,622,781 ( 0.03%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54//src/libstd/sys/unix/alloc.rs:__rdl_alloc
   19,347,199 ( 0.03%)  src/ir/inst.rs:llhd::ir::inst::InstData::remove_block [/var/fabian/cargo-target/release/llhd-opt]
   19,205,825 ( 0.03%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h34dc8d42a29d4a61E.llvm.15652897237403047591 [/var/fabian/cargo-target/release/llhd-opt]
   17,315,920 ( 0.03%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/option.rs:llhd::ir::dfg::DataFlowGraph::replace_use
   17,051,909 ( 0.03%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/alloc.rs:hashbrown::raw::RawTable<T>::try_with_capacity
   16,128,863 ( 0.03%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/adapters/mod.rs:<alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter'2
   15,998,480 ( 0.03%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:llhd::pass::cfs::build_discriminator'2
   14,751,120 ( 0.03%)  src/pass/cfs.rs:llhd::pass::cfs::justify_edge'2 [/var/fabian/cargo-target/release/llhd-opt]
   14,615,910 ( 0.03%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/result.rs:hashbrown::raw::RawTable<T>::reserve_rehash
   13,537,120 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/slice/mod.rs:llhd::pass::cfs::justify_edge'2
   13,463,970 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:_ZN3std11collections4hash3set20HashSet$LT$T$C$S$GT$8contains17h91e3bfcdc2b32b3dE.llvm.13881788278721102072
   13,287,215 ( 0.02%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$3get17h0e48982f3be9eeb7E.llvm.6713649935165807986
   12,796,158 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/alloc.rs:hashbrown::raw::RawTable<T>::reserve_rehash
   12,714,171 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs:_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h34dc8d42a29d4a61E.llvm.15652897237403047591
   12,483,918 ( 0.02%)  src/pass/cfs.rs:_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8contains17ha71c33a63db98477E.llvm.7114256693327014882
   12,246,460 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/slice/mod.rs:llhd::pass::cfs::build_discriminator'2
   12,179,935 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs:hashbrown::raw::RawTable<T>::try_with_capacity
   12,099,584 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/../stdarch/crates/core_arch/src/x86/sse2.rs:llhd::ir::dfg::DataFlowGraph::uses
   11,047,360 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs:_ZN3std11collections4hash3set20HashSet$LT$T$C$S$GT$8contains17h91e3bfcdc2b32b3dE.llvm.13881788278721102072
   10,979,915 ( 0.02%)  /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:<llhd::assembly::reader::grammar::__intern_token::__Matcher as core::iter::traits::iterator::Iterator>::next [/var/fabian/cargo-target/release/llhd-opt]
   10,478,536 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/ptr/mod.rs:<alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter'2
    9,969,021 ( 0.02%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:<llhd::ir::process::ProcessBuilder as llhd::ir::unit::UnitBuilder>::remove_block
    9,819,969 ( 0.02%)  src/ir/inst.rs:llhd::ir::dfg::DataFlowGraph::replace_block_use
    9,549,165 ( 0.02%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs:llhd::ir::dfg::DataFlowGraph::replace_block_use
    9,120,288 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54//src/libstd/sys/unix/alloc.rs:__rdl_realloc
    8,777,346 ( 0.02%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/slice/mod.rs:_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8contains17ha71c33a63db98477E.llvm.7114256693327014882 [/var/fabian/cargo-target/release/llhd-opt]
    8,725,149 ( 0.02%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:std::collections::hash::set::HashSet<T,S>::insert
    8,274,330 ( 0.01%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:std::collections::hash::set::HashSet<T,S>::insert
    8,145,111 ( 0.01%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:std::collections::hash::map::HashMap<K,V,S>::get
    8,063,070 ( 0.01%)  ???:malloc_consolidate [/usr/lib/libc-2.30.so]
    8,002,483 ( 0.01%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/liballoc/raw_vec.rs:<alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter'2
    7,831,810 ( 0.01%)  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs:llhd::ir::dfg::DataFlowGraph::replace_use
    7,821,555 ( 0.01%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/option.rs:<llhd::ir::process::ProcessBuilder as llhd::ir::unit::UnitBuilder>::remove_block
    7,715,526 ( 0.01%)  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs:_ZN9hashbrown3map24HashMap$LT$K$C$V$C$S$GT$3get17h82a0132e8bfcd61aE.llvm.6713649935165807986

--------------------------------------------------------------------------------
-- Auto-annotated source: /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs
--------------------------------------------------------------------------------
Ir                 

-- line 2067 ----------------------------------------
        .           
        .                   #[inline]
        .                   fn start_state(&self) -> Self::StateIndex {
        .                         0
        .                   }
        .           
        .                   #[inline]
        .                   fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
   38,778 ( 0.00%)              __token_to_integer(token, ::std::marker::PhantomData::<(&())>)
  135,723 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__token_to_integer (19,389x)
        .                   }
        .           
        .                   #[inline]
        .                   fn action(&self, state: i16, integer: usize) -> i16 {
  304,610 ( 0.00%)              __ACTION[(state as usize) * 83 + integer]
        .                   }
        .           
        .                   #[inline]
        .                   fn error_action(&self, state: i16) -> i16 {
        .                       __ACTION[(state as usize) * 83 + (83 - 1)]
        .                   }
        .           
        .                   #[inline]
        .                   fn eof_action(&self, state: i16) -> i16 {
       12 ( 0.00%)              __EOF_ACTION[state as usize]
        .                   }
        .           
        .                   #[inline]
        .                   fn goto(&self, state: i16, nt: usize) -> i16 {
        .                       __GOTO[(state as usize) * 78 + nt] - 1
        .                   }
        .           
   19,389 ( 0.00%)          fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
        .                       __token_to_symbol(token_index, token, ::std::marker::PhantomData::<(&())>)
   38,778 ( 0.00%)          }
        .           
        .                   fn expected_tokens(&self, state: i16) -> Vec<String> {
        .                       __expected_tokens(state as usize)
        .                   }
        .           
        .                   #[inline]
        .                   fn uses_error_recovery(&self) -> bool {
        .                       false
-- line 2108 ----------------------------------------
-- line 2118 ----------------------------------------
        .           
        .                   fn reduce(
        .                       &mut self,
        .                       action: i16,
        .                       start_location: Option<&Self::Location>,
        .                       states: &mut Vec<i16>,
        .                       symbols: &mut Vec<__state_machine::SymbolTriple<Self>>,
        .                   ) -> Option<__state_machine::ParseResult<Self>> {
  249,234 ( 0.00%)              __reduce(
87,248,311 ( 0.15%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:_ZN4llhd8assembly6reader7grammar15__parse__Module8__reduce17hbf4dfd4d7b4bae11E.llvm.17061007752038619300 (41,539x)
   83,078 ( 0.00%)                  self.input,
        .                           action,
        .                           start_location,
        .                           states,
        .                           symbols,
        .                           ::std::marker::PhantomData::<(&())>,
        .                       )
        .                   }
        .           
-- line 2135 ----------------------------------------
-- line 2140 ----------------------------------------
        .               fn __token_to_integer<
        .                   'input,
        .               >(
        .                   __token: &Token<'input>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> Option<usize>
        .               {
        .                   match *__token {
  116,334 ( 0.00%)              Token(9, _) if true => Some(0),
        .                       Token(10, _) if true => Some(1),
        .                       Token(11, _) if true => Some(2),
        .                       Token(12, _) if true => Some(3),
        .                       Token(13, _) if true => Some(4),
        .                       Token(14, _) if true => Some(5),
        .                       Token(15, _) if true => Some(6),
        .                       Token(16, _) if true => Some(7),
        .                       Token(17, _) if true => Some(8),
-- line 2156 ----------------------------------------
-- line 2225 ----------------------------------------
        .                       Token(3, _) if true => Some(77),
        .                       Token(4, _) if true => Some(78),
        .                       Token(5, _) if true => Some(79),
        .                       Token(6, _) if true => Some(80),
        .                       Token(7, _) if true => Some(81),
        .                       Token(8, _) if true => Some(82),
        .                       _ => None,
        .                   }
   19,389 ( 0.00%)      }
        .               fn __token_to_symbol<
        .                   'input,
        .               >(
        .                   __token_index: usize,
        .                   __token: Token<'input>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> __Symbol<'input>
        .               {
        .                   match __token_index {
   38,778 ( 0.00%)              0 => match __token {
    1,114 ( 0.00%)                  Token(9, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       1 => match __token {
        4 ( 0.00%)                  Token(10, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       2 => match __token {
        4 ( 0.00%)                  Token(11, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       3 => match __token {
        .                           Token(12, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       4 => match __token {
    6,350 ( 0.00%)                  Token(13, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       5 => match __token {
        2 ( 0.00%)                  Token(14, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       6 => match __token {
    3,656 ( 0.00%)                  Token(15, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       7 => match __token {
      468 ( 0.00%)                  Token(16, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       8 => match __token {
      468 ( 0.00%)                  Token(17, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       9 => match __token {
        .                           Token(18, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       10 => match __token {
        .                           Token(19, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       11 => match __token {
      868 ( 0.00%)                  Token(20, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       12 => match __token {
        .                           Token(21, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       13 => match __token {
      838 ( 0.00%)                  Token(22, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       14 => match __token {
        .                           Token(23, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       15 => match __token {
        .                           Token(24, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       16 => match __token {
      906 ( 0.00%)                  Token(25, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       17 => match __token {
        .                           Token(26, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       18 => match __token {
        .                           Token(27, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       19 => match __token {
    1,038 ( 0.00%)                  Token(28, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       20 => match __token {
        .                           Token(29, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       21 => match __token {
      830 ( 0.00%)                  Token(30, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       22 => match __token {
        .                           Token(31, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       23 => match __token {
       18 ( 0.00%)                  Token(32, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       24 => match __token {
        .                           Token(33, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       25 => match __token {
        .                           Token(34, __tok0) => __Symbol::Variant0((__tok0)),
-- line 2344 ----------------------------------------
-- line 2356 ----------------------------------------
        .                           Token(37, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       29 => match __token {
        .                           Token(38, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       30 => match __token {
       18 ( 0.00%)                  Token(39, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       31 => match __token {
        .                           Token(40, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       32 => match __token {
        .                           Token(41, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       33 => match __token {
        .                           Token(42, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       34 => match __token {
        2 ( 0.00%)                  Token(43, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       35 => match __token {
        .                           Token(44, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       36 => match __token {
        4 ( 0.00%)                  Token(45, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       37 => match __token {
        2 ( 0.00%)                  Token(46, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       38 => match __token {
      834 ( 0.00%)                  Token(47, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       39 => match __token {
      118 ( 0.00%)                  Token(48, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       40 => match __token {
       20 ( 0.00%)                  Token(49, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       41 => match __token {
        2 ( 0.00%)                  Token(50, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       42 => match __token {
        .                           Token(51, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       43 => match __token {
        .                           Token(52, __tok0) => __Symbol::Variant0((__tok0)),
-- line 2416 ----------------------------------------
-- line 2420 ----------------------------------------
        .                           Token(53, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       45 => match __token {
        .                           Token(54, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       46 => match __token {
       12 ( 0.00%)                  Token(55, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       47 => match __token {
        .                           Token(56, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       48 => match __token {
        .                           Token(57, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       49 => match __token {
        6 ( 0.00%)                  Token(58, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       50 => match __token {
        .                           Token(59, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       51 => match __token {
        .                           Token(60, __tok0) => __Symbol::Variant0((__tok0)),
-- line 2448 ----------------------------------------
-- line 2468 ----------------------------------------
        .                           Token(65, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       57 => match __token {
        .                           Token(66, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       58 => match __token {
        2 ( 0.00%)                  Token(67, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       59 => match __token {
        .                           Token(68, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       60 => match __token {
        8 ( 0.00%)                  Token(69, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       61 => match __token {
        .                           Token(70, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       62 => match __token {
        8 ( 0.00%)                  Token(71, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       63 => match __token {
        .                           Token(72, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       64 => match __token {
        .                           Token(73, __tok0) => __Symbol::Variant0((__tok0)),
-- line 2500 ----------------------------------------
-- line 2512 ----------------------------------------
        .                           Token(76, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       68 => match __token {
        .                           Token(77, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       69 => match __token {
        2 ( 0.00%)                  Token(78, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       70 => match __token {
        2 ( 0.00%)                  Token(79, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       71 => match __token {
        .                           Token(80, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       72 => match __token {
        2 ( 0.00%)                  Token(81, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       73 => match __token {
        2 ( 0.00%)                  Token(82, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       74 => match __token {
      840 ( 0.00%)                  Token(0, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       75 => match __token {
        .                           Token(1, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       76 => match __token {
      978 ( 0.00%)                  Token(2, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       77 => match __token {
        2 ( 0.00%)                  Token(3, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       78 => match __token {
        .                           Token(4, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       79 => match __token {
        2 ( 0.00%)                  Token(5, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       80 => match __token {
   14,550 ( 0.00%)                  Token(6, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       81 => match __token {
    4,798 ( 0.00%)                  Token(7, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       82 => match __token {
        .                           Token(8, __tok0) => __Symbol::Variant0((__tok0)),
        .                           _ => unreachable!(),
        .                       },
        .                       _ => unreachable!(),
        .                   }
-- line 2576 ----------------------------------------
-- line 3794 ----------------------------------------
        .                   }
        .               }
        .               pub struct ModuleParser {
        .                   builder: super::__intern_token::__MatcherBuilder,
        .                   _priv: (),
        .               }
        .           
        .               impl ModuleParser {
        4 ( 0.00%)          pub fn new() -> ModuleParser {
        1 ( 0.00%)              let __builder = super::__intern_token::__MatcherBuilder::new();
14,880,471 ( 0.03%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__intern_token::__MatcherBuilder::new (1x)
        .                       ModuleParser {
       10 ( 0.00%)                  builder: __builder,
        .                           _priv: (),
        .                       }
        4 ( 0.00%)          }
        .           
        .                   #[allow(dead_code)]
        4 ( 0.00%)          pub fn parse<
        .                       'input,
        .                   >(
        .                       &self,
        .                       input: &'input str,
        .                   ) -> Result<Module, __lalrpop_util::ParseError<usize, Token<'input>, &'static str>>
        .                   {
        .                       let mut __tokens = self.builder.matcher(input);
        5 ( 0.00%)              let __r = __state_machine::Parser::drive(
153,145,350 ( 0.26%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/lalrpop-util-0.16.3/src/state_machine.rs:lalrpop_util::state_machine::Parser<D,I>::drive (1x)
        .                           __StateMachine {
        .                               input,
        .                               __phantom: ::std::marker::PhantomData::<(&())>,
        .                           },
        5 ( 0.00%)                  __tokens,
        .                       );
        4 ( 0.00%)              __r
       30 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (1x)
        5 ( 0.00%)          }
        .               }
  415,390 ( 0.00%)      pub(crate) fn __reduce<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> Option<Result<Module,__lalrpop_util::ParseError<usize, Token<'input>, &'static str>>>
        .               {
        .                   let (__pop_states, __nonterminal) = match __action {
  124,617 ( 0.00%)              0 => {
        .                           __reduce0(input, __action, __lookahead_start, __states, __symbols, ::std::marker::PhantomData::<(&())>)
        .                       }
        .                       1 => {
        .                           __reduce1(input, __action, __lookahead_start, __states, __symbols, ::std::marker::PhantomData::<(&())>)
        .                       }
        .                       2 => {
        .                           __reduce2(input, __action, __lookahead_start, __states, __symbols, ::std::marker::PhantomData::<(&())>)
        .                       }
-- line 3849 ----------------------------------------
-- line 4424 ----------------------------------------
        .                           __reduce194(input, __action, __lookahead_start, __states, __symbols, ::std::marker::PhantomData::<(&())>)
        .                       }
        .                       195 => {
        .                           // __Module = Module => ActionFn(0);
        .                           let __sym0 = __pop_Variant33(__symbols);
        .                           let __start = __sym0.0.clone();
        .                           let __end = __sym0.2.clone();
        .                           let __nt = super::__action0::<>(input, __sym0);
        6 ( 0.00%)                  return Some(Ok(__nt));
       30 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (1x)
        .                       }
        .                       196 => {
        .                           __reduce196(input, __action, __lookahead_start, __states, __symbols, ::std::marker::PhantomData::<(&())>)
        .                       }
        .                       197 => {
        .                           __reduce197(input, __action, __lookahead_start, __states, __symbols, ::std::marker::PhantomData::<(&())>)
        .                       }
        .                       198 => {
-- line 4440 ----------------------------------------
-- line 4446 ----------------------------------------
        .                       200 => {
        .                           __reduce200(input, __action, __lookahead_start, __states, __symbols, ::std::marker::PhantomData::<(&())>)
        .                       }
        .                       201 => {
        .                           __reduce201(input, __action, __lookahead_start, __states, __symbols, ::std::marker::PhantomData::<(&())>)
        .                       }
        .                       _ => panic!("invalid action code {}", __action)
        .                   };
   41,538 ( 0.00%)          let __states_len = __states.len();
   83,076 ( 0.00%)          __states.truncate(__states_len - __pop_states);
   41,538 ( 0.00%)          let __state = *__states.last().unwrap() as usize;
  166,152 ( 0.00%)          let __next_state = __GOTO[__state * 78 + __nonterminal] - 1;
        .                   __states.push(__next_state);
   41,538 ( 0.00%)          None
  332,312 ( 0.00%)      }
        .               fn __pop_Variant26<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, (), usize)
        .                {
        .                   match __symbols.pop().unwrap() {
    9,149 ( 0.00%)              (__l, __Symbol::Variant26(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant9<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, (Type, ast::LocalName<'input>), usize)
-- line 4476 ----------------------------------------
-- line 4504 ----------------------------------------
        .               }
        .               fn __pop_Variant18<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, BigInt, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
    4,520 ( 0.00%)              (__l, __Symbol::Variant18(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant28<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, Entity, usize)
-- line 4520 ----------------------------------------
-- line 4537 ----------------------------------------
        .               }
        .               fn __pop_Variant33<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, Module, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
        8 ( 0.00%)              (__l, __Symbol::Variant33(__v), __r) => (__l, __v, __r),
       30 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (1x)
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant19<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, Opcode, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
    6,480 ( 0.00%)              (__l, __Symbol::Variant19(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant34<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, Process, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
       11 ( 0.00%)              (__l, __Symbol::Variant34(__v), __r) => (__l, __v, __r),
      112 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (1x)
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant35<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, RegMode, usize)
-- line 4575 ----------------------------------------
-- line 4592 ----------------------------------------
        .               }
        .               fn __pop_Variant37<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, TimeValue, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
       16 ( 0.00%)              (__l, __Symbol::Variant37(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant11<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, Type, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
   24,281 ( 0.00%)              (__l, __Symbol::Variant11(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant42<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, UnitName, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
       11 ( 0.00%)              (__l, __Symbol::Variant42(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant17<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, Vec<(Type, ast::LocalName<'input>)>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
       36 ( 0.00%)              (__l, __Symbol::Variant17(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant23<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, Vec<(ast::Value<'input>, ast::Label<'input>)>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
      590 ( 0.00%)              (__l, __Symbol::Variant23(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant24<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, Vec<Type>, usize)
-- line 4652 ----------------------------------------
-- line 4669 ----------------------------------------
        .               }
        .               fn __pop_Variant20<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ast::Block<'input>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
    5,038 ( 0.00%)              (__l, __Symbol::Variant20(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant30<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ast::Inst<'input>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
   70,264 ( 0.00%)              (__l, __Symbol::Variant30(__v), __r) => (__l, __v, __r),
  137,850 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (4,595x)
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant32<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ast::Label<'input>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
    5,928 ( 0.00%)              (__l, __Symbol::Variant32(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant22<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ast::LocalName<'input>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
   63,774 ( 0.00%)              (__l, __Symbol::Variant22(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant13<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ast::TypedValue<'input>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
   19,609 ( 0.00%)              (__l, __Symbol::Variant13(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant40<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ast::Unit, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
       10 ( 0.00%)              (__l, __Symbol::Variant40(__v), __r) => (__l, __v, __r),
      112 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (1x)
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant3<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ast::Value<'input>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
   38,718 ( 0.00%)              (__l, __Symbol::Variant3(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant16<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, usize, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
      166 ( 0.00%)              (__l, __Symbol::Variant16(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant15<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::option::Option<(Type, ast::LocalName<'input>)>, usize)
-- line 4762 ----------------------------------------
-- line 4823 ----------------------------------------
        .               }
        .               fn __pop_Variant10<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::vec::Vec<(Type, ast::LocalName<'input>)>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
      180 ( 0.00%)              (__l, __Symbol::Variant10(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant2<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::vec::Vec<(ast::Value<'input>, RegMode, ast::TypedValue<'input>)>, usize)
-- line 4839 ----------------------------------------
-- line 4845 ----------------------------------------
        .               }
        .               fn __pop_Variant8<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::vec::Vec<(ast::Value<'input>, ast::Label<'input>)>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
    1,152 ( 0.00%)              (__l, __Symbol::Variant8(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant12<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::vec::Vec<Type>, usize)
-- line 4861 ----------------------------------------
-- line 4867 ----------------------------------------
        .               }
        .               fn __pop_Variant21<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::vec::Vec<ast::Block<'input>>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
    2,943 ( 0.00%)              (__l, __Symbol::Variant21(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant31<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::vec::Vec<ast::Inst<'input>>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
   20,629 ( 0.00%)              (__l, __Symbol::Variant31(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant14<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::vec::Vec<ast::TypedValue<'input>>, usize)
-- line 4894 ----------------------------------------
-- line 4900 ----------------------------------------
        .               }
        .               fn __pop_Variant41<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::vec::Vec<ast::Unit>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
        8 ( 0.00%)              (__l, __Symbol::Variant41(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant4<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::vec::Vec<ast::Value<'input>>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
       69 ( 0.00%)              (__l, __Symbol::Variant4(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
        .               fn __pop_Variant43<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, ::std::vec::Vec<&'input str>, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
        .                       (__l, __Symbol::Variant43(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
        .               }
   53,332 ( 0.00%)      fn __pop_Variant0<
        .                 'input,
        .               >(
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>
        .               ) -> (usize, &'input str, usize)
        .                {
        .                   match __symbols.pop().unwrap() {
  239,994 ( 0.00%)              (__l, __Symbol::Variant0(__v), __r) => (__l, __v, __r),
        .                       _ => panic!("symbol type mismatch")
        .                   }
   79,998 ( 0.00%)      }
        .               pub(crate) fn __reduce0<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
-- line 4952 ----------------------------------------
-- line 5111 ----------------------------------------
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // ("," <Value>)+ = ",", Value => ActionFn(180);
        .                   let __sym1 = __pop_Variant3(__symbols);
        4 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      562 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (2x)
        2 ( 0.00%)          let __start = __sym0.0.clone();
        .                   let __end = __sym1.2.clone();
        .                   let __nt = super::__action180::<>(input, __sym0, __sym1);
       12 ( 0.00%)          __symbols.push((__start, __Symbol::Variant4(__nt), __end));
        .                   (2, 5)
        .               }
        .               pub(crate) fn __reduce9<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // ("," <Value>)+ = ("," <Value>)+, ",", Value => ActionFn(181);
        .                   let __sym2 = __pop_Variant3(__symbols);
       14 ( 0.00%)          let __sym1 = __pop_Variant0(__symbols);
    1,967 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (7x)
        .                   let __sym0 = __pop_Variant4(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym2.2.clone();
        .                   let __nt = super::__action181::<>(input, __sym0, __sym1, __sym2);
       35 ( 0.00%)          __symbols.push((__start, __Symbol::Variant4(__nt), __end));
        .                   (3, 5)
        .               }
        .               pub(crate) fn __reduce10<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 5152 ----------------------------------------
-- line 5334 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // (<("[" <Value> "," <Label> "]")> ",")+ = "[", Value, ",", Label, "]", "," => ActionFn(195);
      118 ( 0.00%)          let __sym5 = __pop_Variant0(__symbols);
   16,579 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (59x)
      118 ( 0.00%)          let __sym4 = __pop_Variant0(__symbols);
   16,579 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (59x)
        .                   let __sym3 = __pop_Variant32(__symbols);
      118 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
   16,579 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (59x)
        .                   let __sym1 = __pop_Variant3(__symbols);
      118 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
   16,579 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (59x)
       59 ( 0.00%)          let __start = __sym0.0.clone();
       59 ( 0.00%)          let __end = __sym5.2.clone();
        .                   let __nt = super::__action195::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
      354 ( 0.00%)          __symbols.push((__start, __Symbol::Variant8(__nt), __end));
        .                   (6, 12)
        .               }
        .               pub(crate) fn __reduce20<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // (<("[" <Value> "," <Label> "]")> ",")+ = (<("[" <Value> "," <Label> "]")> ",")+, "[", Value, ",", Label, "]", "," => ActionFn(196);
      228 ( 0.00%)          let __sym6 = __pop_Variant0(__symbols);
   32,034 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (114x)
      228 ( 0.00%)          let __sym5 = __pop_Variant0(__symbols);
   32,034 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (114x)
        .                   let __sym4 = __pop_Variant32(__symbols);
      228 ( 0.00%)          let __sym3 = __pop_Variant0(__symbols);
   32,034 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (114x)
        .                   let __sym2 = __pop_Variant3(__symbols);
      228 ( 0.00%)          let __sym1 = __pop_Variant0(__symbols);
   32,034 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (114x)
        .                   let __sym0 = __pop_Variant8(__symbols);
        .                   let __start = __sym0.0.clone();
      114 ( 0.00%)          let __end = __sym6.2.clone();
        .                   let __nt = super::__action196::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
      684 ( 0.00%)          __symbols.push((__start, __Symbol::Variant8(__nt), __end));
        .                   (7, 12)
        .               }
        .               pub(crate) fn __reduce21<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 5384 ----------------------------------------
-- line 5441 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // (<(Type LocalName)> ",")+ = Type, LocalName, "," => ActionFn(203);
        4 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
      562 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (2x)
        .                   let __sym1 = __pop_Variant22(__symbols);
        .                   let __sym0 = __pop_Variant11(__symbols);
        .                   let __start = __sym0.0.clone();
        2 ( 0.00%)          let __end = __sym2.2.clone();
        .                   let __nt = super::__action203::<>(input, __sym0, __sym1, __sym2);
       12 ( 0.00%)          __symbols.push((__start, __Symbol::Variant10(__nt), __end));
        .                   (3, 15)
        .               }
        .               pub(crate) fn __reduce25<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // (<(Type LocalName)> ",")+ = (<(Type LocalName)> ",")+, Type, LocalName, "," => ActionFn(204);
       48 ( 0.00%)          let __sym3 = __pop_Variant0(__symbols);
    6,744 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (24x)
        .                   let __sym2 = __pop_Variant22(__symbols);
        .                   let __sym1 = __pop_Variant11(__symbols);
        .                   let __sym0 = __pop_Variant10(__symbols);
        .                   let __start = __sym0.0.clone();
       24 ( 0.00%)          let __end = __sym3.2.clone();
        .                   let __nt = super::__action204::<>(input, __sym0, __sym1, __sym2, __sym3);
      144 ( 0.00%)          __symbols.push((__start, __Symbol::Variant10(__nt), __end));
        .                   (4, 15)
        .               }
        .               pub(crate) fn __reduce26<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 5485 ----------------------------------------
-- line 5760 ----------------------------------------
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Args = Comma<(Type LocalName)> => ActionFn(13);
        .                   let __sym0 = __pop_Variant17(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym0.2.clone();
        .                   let __nt = super::__action13::<>(input, __sym0);
       10 ( 0.00%)          __symbols.push((__start, __Symbol::Variant17(__nt), __end));
        .                   (1, 25)
        .               }
        .               pub(crate) fn __reduce41<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // BigInt = r#"[-+]?\\d+"# => ActionFn(102);
      904 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
  127,012 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (452x)
      452 ( 0.00%)          let __start = __sym0.0.clone();
      452 ( 0.00%)          let __end = __sym0.2.clone();
    3,164 ( 0.00%)          let __nt = super::__action102::<>(input, __sym0);
  371,772 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__action102 (452x)
    5,876 ( 0.00%)          __symbols.push((__start, __Symbol::Variant18(__nt), __end));
        .                   (1, 26)
        .               }
        .               pub(crate) fn __reduce42<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 5795 ----------------------------------------
-- line 5832 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // BinaryOpcode = "and" => ActionFn(55);
      868 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
  121,954 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (434x)
      434 ( 0.00%)          let __start = __sym0.0.clone();
      434 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action55::<>(input, __sym0);
    1,302 ( 0.00%)          __symbols.push((__start, __Symbol::Variant19(__nt), __end));
        .                   (1, 27)
        .               }
        .               pub(crate) fn __reduce45<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // BinaryOpcode = "or" => ActionFn(56);
      834 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
  117,177 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (417x)
      417 ( 0.00%)          let __start = __sym0.0.clone();
      417 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action56::<>(input, __sym0);
    1,251 ( 0.00%)          __symbols.push((__start, __Symbol::Variant19(__nt), __end));
        .                   (1, 27)
        .               }
        .               pub(crate) fn __reduce46<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 5871 ----------------------------------------
-- line 6041 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // BinaryOpcode = "eq" => ActionFn(66);
      830 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
  116,615 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (415x)
      415 ( 0.00%)          let __start = __sym0.0.clone();
      415 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action66::<>(input, __sym0);
    1,245 ( 0.00%)          __symbols.push((__start, __Symbol::Variant19(__nt), __end));
        .                   (1, 27)
        .               }
        .               pub(crate) fn __reduce56<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // BinaryOpcode = "neq" => ActionFn(67);
        4 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      562 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (2x)
        2 ( 0.00%)          let __start = __sym0.0.clone();
        2 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action67::<>(input, __sym0);
        6 ( 0.00%)          __symbols.push((__start, __Symbol::Variant19(__nt), __end));
        .                   (1, 27)
        .               }
        .               pub(crate) fn __reduce57<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6080 ----------------------------------------
-- line 6136 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // BinaryOpcode = "sge" => ActionFn(71);
       12 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
    1,686 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (6x)
        6 ( 0.00%)          let __start = __sym0.0.clone();
        6 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action71::<>(input, __sym0);
       18 ( 0.00%)          __symbols.push((__start, __Symbol::Variant19(__nt), __end));
        .                   (1, 27)
        .               }
        .               pub(crate) fn __reduce61<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6156 ----------------------------------------
-- line 6193 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // BinaryOpcode = "ule" => ActionFn(74);
        8 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
    1,124 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (4x)
        4 ( 0.00%)          let __start = __sym0.0.clone();
        4 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action74::<>(input, __sym0);
       12 ( 0.00%)          __symbols.push((__start, __Symbol::Variant19(__nt), __end));
        .                   (1, 27)
        .               }
        .               pub(crate) fn __reduce64<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // BinaryOpcode = "uge" => ActionFn(75);
        8 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
    1,124 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (4x)
        4 ( 0.00%)          let __start = __sym0.0.clone();
        4 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action75::<>(input, __sym0);
       12 ( 0.00%)          __symbols.push((__start, __Symbol::Variant19(__nt), __end));
        .                   (1, 27)
        .               }
        .               pub(crate) fn __reduce65<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6232 ----------------------------------------
-- line 6256 ----------------------------------------
        .               ) -> (usize, usize)
        .               {
        .                   // Block = BlockLabel, Comment, Inst+ => ActionFn(238);
        .                   let __sym2 = __pop_Variant31(__symbols);
        .                   let __sym1 = __pop_Variant26(__symbols);
        .                   let __sym0 = __pop_Variant22(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym2.2.clone();
      420 ( 0.00%)          let __nt = super::__action238::<>(input, __sym0, __sym1, __sym2);
    4,620 ( 0.00%)          __symbols.push((__start, __Symbol::Variant20(__nt), __end));
        .                   (3, 28)
        .               }
        .               pub(crate) fn __reduce67<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6273 ----------------------------------------
-- line 6313 ----------------------------------------
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Block+ = Block => ActionFn(143);
        .                   let __sym0 = __pop_Variant20(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym0.2.clone();
        .                   let __nt = super::__action143::<>(input, __sym0);
        6 ( 0.00%)          __symbols.push((__start, __Symbol::Variant21(__nt), __end));
        .                   (1, 30)
        .               }
        .               pub(crate) fn __reduce70<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6329 ----------------------------------------
-- line 6332 ----------------------------------------
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Block+ = Block+, Block => ActionFn(144);
        .                   let __sym1 = __pop_Variant20(__symbols);
        .                   let __sym0 = __pop_Variant21(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym1.2.clone();
    3,352 ( 0.00%)          let __nt = super::__action144::<>(input, __sym0, __sym1);
    2,514 ( 0.00%)          __symbols.push((__start, __Symbol::Variant21(__nt), __end));
        .                   (2, 30)
        .               }
        .               pub(crate) fn __reduce71<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // BlockLabel = r#"%?[a-zA-Z0-9_\\.\\\\]+:"# => ActionFn(99);
      840 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
  118,020 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (420x)
      420 ( 0.00%)          let __start = __sym0.0.clone();
      420 ( 0.00%)          let __end = __sym0.2.clone();
      840 ( 0.00%)          let __nt = super::__action99::<>(input, __sym0);
    2,940 ( 0.00%)          __symbols.push((__start, __Symbol::Variant22(__nt), __end));
        .                   (1, 31)
        .               }
        .               pub(crate) fn __reduce72<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6368 ----------------------------------------
-- line 6390 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Comma<("[" <Value> "," <Label> "]")> = (<("[" <Value> "," <Label> "]")> ",")+, "[", Value, ",", Label, "]" => ActionFn(198);
      118 ( 0.00%)          let __sym5 = __pop_Variant0(__symbols);
   16,579 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (59x)
        .                   let __sym4 = __pop_Variant32(__symbols);
      118 ( 0.00%)          let __sym3 = __pop_Variant0(__symbols);
   16,579 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (59x)
        .                   let __sym2 = __pop_Variant3(__symbols);
      118 ( 0.00%)          let __sym1 = __pop_Variant0(__symbols);
   16,579 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (59x)
        .                   let __sym0 = __pop_Variant8(__symbols);
        .                   let __start = __sym0.0.clone();
       59 ( 0.00%)          let __end = __sym5.2.clone();
        .                   let __nt = super::__action198::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
      354 ( 0.00%)          __symbols.push((__start, __Symbol::Variant23(__nt), __end));
        .                   (6, 32)
        .               }
        .               pub(crate) fn __reduce74<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6415 ----------------------------------------
-- line 6495 ----------------------------------------
        .               {
        .                   // Comma<(Type LocalName)> = (<(Type LocalName)> ",")+, Type, LocalName => ActionFn(217);
        .                   let __sym2 = __pop_Variant22(__symbols);
        .                   let __sym1 = __pop_Variant11(__symbols);
        .                   let __sym0 = __pop_Variant10(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym2.2.clone();
        .                   let __nt = super::__action217::<>(input, __sym0, __sym1, __sym2);
       12 ( 0.00%)          __symbols.push((__start, __Symbol::Variant17(__nt), __end));
        .                   (3, 33)
        .               }
        .               pub(crate) fn __reduce79<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6511 ----------------------------------------
-- line 6684 ----------------------------------------
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Comment =  => ActionFn(251);
        .                   let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default();
        .                   let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone());
        .                   let __nt = super::__action251::<>(input, &__start, &__end);
    9,570 ( 0.00%)          __symbols.push((__start, __Symbol::Variant26(__nt), __end));
        .                   (0, 36)
        .               }
        .               pub(crate) fn __reduce89<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6700 ----------------------------------------
-- line 6854 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // EpsilonTime = r#"[0-9]+e"# => ActionFn(106);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym0.2.clone();
        1 ( 0.00%)          let __nt = super::__action106::<>(input, __sym0);
        4 ( 0.00%)          __symbols.push((__start, __Symbol::Variant0(__nt), __end));
        .                   (1, 41)
        .               }
        .               pub(crate) fn __reduce97<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6874 ----------------------------------------
-- line 6967 ----------------------------------------
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Inst = LocalName, "=", InstWithRequiredResult, Comment => ActionFn(219);
        .                   let __sym3 = __pop_Variant26(__symbols);
        .                   let __sym2 = __pop_Variant30(__symbols);
        2 ( 0.00%)          let __sym1 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        .                   let __sym0 = __pop_Variant22(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym3.2.clone();
        2 ( 0.00%)          let __nt = super::__action219::<>(input, __sym0, __sym1, __sym2, __sym3);
       24 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (4, 44)
        .               }
        .               pub(crate) fn __reduce102<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 6988 ----------------------------------------
-- line 6989 ----------------------------------------
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Inst = LocalName, "=", InstWithResult, Comment => ActionFn(220);
        .                   let __sym3 = __pop_Variant26(__symbols);
        .                   let __sym2 = __pop_Variant30(__symbols);
    3,654 ( 0.00%)          let __sym1 = __pop_Variant0(__symbols);
  513,387 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1,827x)
        .                   let __sym0 = __pop_Variant22(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym3.2.clone();
    3,654 ( 0.00%)          let __nt = super::__action220::<>(input, __sym0, __sym1, __sym2, __sym3);
   43,848 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (4, 44)
        .               }
        .               pub(crate) fn __reduce103<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7010 ----------------------------------------
-- line 7034 ----------------------------------------
        .               ) -> (usize, usize)
        .               {
        .                   // Inst = InstWithoutResult, Comment => ActionFn(222);
        .                   let __sym1 = __pop_Variant26(__symbols);
        .                   let __sym0 = __pop_Variant30(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym1.2.clone();
        .                   let __nt = super::__action222::<>(input, __sym0, __sym1);
   22,536 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (2, 44)
        .               }
        .               pub(crate) fn __reduce105<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7050 ----------------------------------------
-- line 7090 ----------------------------------------
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Inst+ = Inst => ActionFn(145);
        .                   let __sym0 = __pop_Variant30(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym0.2.clone();
        .                   let __nt = super::__action145::<>(input, __sym0);
    2,940 ( 0.00%)          __symbols.push((__start, __Symbol::Variant31(__nt), __end));
        .                   (1, 46)
        .               }
        .               pub(crate) fn __reduce108<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7106 ----------------------------------------
-- line 7109 ----------------------------------------
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Inst+ = Inst+, Inst => ActionFn(146);
        .                   let __sym1 = __pop_Variant30(__symbols);
        .                   let __sym0 = __pop_Variant31(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym1.2.clone();
    4,694 ( 0.00%)          let __nt = super::__action146::<>(input, __sym0, __sym1);
   70,410 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (2,347x)
   14,082 ( 0.00%)          __symbols.push((__start, __Symbol::Variant31(__nt), __end));
        .                   (2, 46)
        .               }
        .               pub(crate) fn __reduce109<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7126 ----------------------------------------
-- line 7169 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithRequiredResult = "[", TypedValue, ("," <Value>)+, "]" => ActionFn(183);
        2 ( 0.00%)          let __sym3 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        .                   let __sym2 = __pop_Variant4(__symbols);
        .                   let __sym1 = __pop_Variant13(__symbols);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym3.2.clone();
        .                   let __nt = super::__action183::<>(input, __sym0, __sym1, __sym2, __sym3);
       27 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (4, 47)
        .               }
        .               pub(crate) fn __reduce112<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7192 ----------------------------------------
-- line 7214 ----------------------------------------
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithResult = "const", IntType, BigInt => ActionFn(19);
        .                   let __sym2 = __pop_Variant18(__symbols);
        .                   let __sym1 = __pop_Variant11(__symbols);
      904 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
  127,012 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (452x)
      452 ( 0.00%)          let __start = __sym0.0.clone();
        .                   let __end = __sym2.2.clone();
    9,492 ( 0.00%)          let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2);
  884,160 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__action19 (452x)
   12,204 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (3, 48)
        .               }
        .               pub(crate) fn __reduce114<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7234 ----------------------------------------
-- line 7235 ----------------------------------------
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithResult = "const", TimeType, TimeValue => ActionFn(20);
        .                   let __sym2 = __pop_Variant37(__symbols);
        .                   let __sym1 = __pop_Variant11(__symbols);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        .                   let __end = __sym2.2.clone();
       13 ( 0.00%)          let __nt = super::__action20::<>(input, __sym0, __sym1, __sym2);
       23 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (3, 48)
        .               }
        .               pub(crate) fn __reduce115<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7255 ----------------------------------------
-- line 7277 ----------------------------------------
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithResult = UnaryOpcode, TypedValue => ActionFn(22);
        .                   let __sym1 = __pop_Variant13(__symbols);
        .                   let __sym0 = __pop_Variant19(__symbols);
        .                   let __start = __sym0.0.clone();
       11 ( 0.00%)          let __end = __sym1.2.clone();
       66 ( 0.00%)          let __nt = super::__action22::<>(input, __sym0, __sym1);
      253 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (2, 48)
        .               }
        .               pub(crate) fn __reduce117<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithResult = BinaryOpcode, TypedValue, ",", Value => ActionFn(23);
        .                   let __sym3 = __pop_Variant3(__symbols);
    2,564 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
  360,242 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1,282x)
        .                   let __sym1 = __pop_Variant13(__symbols);
        .                   let __sym0 = __pop_Variant19(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym3.2.clone();
    6,410 ( 0.00%)          let __nt = super::__action23::<>(input, __sym0, __sym1, __sym2, __sym3);
   29,486 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (4, 48)
        .               }
        .               pub(crate) fn __reduce118<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithResult = ShiftOpcode, TypedValue, ",", TypedValue, ",", TypedValue => ActionFn(24);
        .                   let __sym5 = __pop_Variant13(__symbols);
        6 ( 0.00%)          let __sym4 = __pop_Variant0(__symbols);
      843 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (3x)
        .                   let __sym3 = __pop_Variant13(__symbols);
        6 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
      843 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (3x)
        .                   let __sym1 = __pop_Variant13(__symbols);
        .                   let __sym0 = __pop_Variant19(__symbols);
        .                   let __start = __sym0.0.clone();
        3 ( 0.00%)          let __end = __sym5.2.clone();
       54 ( 0.00%)          let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
       69 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (6, 48)
        .               }
        .               pub(crate) fn __reduce119<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithResult = "mux", TypedValue, ",", TypedValue => ActionFn(25);
        .                   let __sym3 = __pop_Variant13(__symbols);
        2 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        .                   let __sym1 = __pop_Variant13(__symbols);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym3.2.clone();
       12 ( 0.00%)          let __nt = super::__action25::<>(input, __sym0, __sym1, __sym2, __sym3);
       23 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (4, 48)
        .               }
        .               pub(crate) fn __reduce120<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7363 ----------------------------------------
-- line 7428 ----------------------------------------
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithResult = "inss", TypedValue, ",", TypedValue, ",", Usize, ",", Usize => ActionFn(28);
        .                   let __sym7 = __pop_Variant16(__symbols);
       18 ( 0.00%)          let __sym6 = __pop_Variant0(__symbols);
    2,529 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (9x)
        .                   let __sym5 = __pop_Variant16(__symbols);
       18 ( 0.00%)          let __sym4 = __pop_Variant0(__symbols);
    2,529 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (9x)
        .                   let __sym3 = __pop_Variant13(__symbols);
       18 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
    2,529 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (9x)
        .                   let __sym1 = __pop_Variant13(__symbols);
       18 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
    2,529 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (9x)
        9 ( 0.00%)          let __start = __sym0.0.clone();
        .                   let __end = __sym7.2.clone();
      108 ( 0.00%)          let __nt = super::__action28::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
      207 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (8, 48)
        .               }
        .               pub(crate) fn __reduce124<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7454 ----------------------------------------
-- line 7478 ----------------------------------------
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithResult = "exts", Type, ",", TypedValue, ",", Usize, ",", Usize => ActionFn(30);
        .                   let __sym7 = __pop_Variant16(__symbols);
       18 ( 0.00%)          let __sym6 = __pop_Variant0(__symbols);
    2,529 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (9x)
        .                   let __sym5 = __pop_Variant16(__symbols);
       18 ( 0.00%)          let __sym4 = __pop_Variant0(__symbols);
    2,529 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (9x)
        .                   let __sym3 = __pop_Variant13(__symbols);
       18 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
    2,529 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (9x)
        .                   let __sym1 = __pop_Variant11(__symbols);
       18 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
    2,529 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (9x)
        9 ( 0.00%)          let __start = __sym0.0.clone();
        .                   let __end = __sym7.2.clone();
       63 ( 0.00%)          let __nt = super::__action30::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
      207 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (8, 48)
        .               }
        .               pub(crate) fn __reduce126<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7504 ----------------------------------------
-- line 7551 ----------------------------------------
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithResult = "phi", Type, Comma<("[" <Value> "," <Label> "]")> => ActionFn(33);
        .                   let __sym2 = __pop_Variant23(__symbols);
        .                   let __sym1 = __pop_Variant11(__symbols);
      118 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
   16,579 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (59x)
       59 ( 0.00%)          let __start = __sym0.0.clone();
        .                   let __end = __sym2.2.clone();
    1,239 ( 0.00%)          let __nt = super::__action33::<>(input, __sym0, __sym1, __sym2);
   41,599 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__action33 (59x)
    1,593 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (3, 48)
        .               }
        .               pub(crate) fn __reduce129<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7571 ----------------------------------------
-- line 7620 ----------------------------------------
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithoutResult = "drv", TypedValue, ",", Value, ",", Value => ActionFn(39);
        .                   let __sym5 = __pop_Variant3(__symbols);
    1,038 ( 0.00%)          let __sym4 = __pop_Variant0(__symbols);
  145,839 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (519x)
        .                   let __sym3 = __pop_Variant3(__symbols);
    1,038 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
  145,839 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (519x)
        .                   let __sym1 = __pop_Variant13(__symbols);
    1,038 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
  145,839 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (519x)
      519 ( 0.00%)          let __start = __sym0.0.clone();
        .                   let __end = __sym5.2.clone();
   22,836 ( 0.00%)          let __nt = super::__action39::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
  189,001 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__action39 (519x)
   14,532 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (6, 49)
        .               }
        .               pub(crate) fn __reduce132<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7644 ----------------------------------------
-- line 7724 ----------------------------------------
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithoutResult = "br", Label => ActionFn(44);
        .                   let __sym1 = __pop_Variant32(__symbols);
      484 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
   68,002 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (242x)
      242 ( 0.00%)          let __start = __sym0.0.clone();
        .                   let __end = __sym1.2.clone();
        .                   let __nt = super::__action44::<>(input, __sym0, __sym1);
    5,566 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (2, 49)
        .               }
        .               pub(crate) fn __reduce137<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithoutResult = "br", Value, ",", Label, ",", Label => ActionFn(45);
        .                   let __sym5 = __pop_Variant32(__symbols);
      354 ( 0.00%)          let __sym4 = __pop_Variant0(__symbols);
   49,737 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (177x)
        .                   let __sym3 = __pop_Variant32(__symbols);
      354 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
   49,737 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (177x)
        .                   let __sym1 = __pop_Variant3(__symbols);
      354 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
   49,737 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (177x)
      177 ( 0.00%)          let __start = __sym0.0.clone();
        .                   let __end = __sym5.2.clone();
    6,018 ( 0.00%)          let __nt = super::__action45::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
   65,984 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__action45 (177x)
    4,956 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (6, 49)
        .               }
        .               pub(crate) fn __reduce138<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7768 ----------------------------------------
-- line 7834 ----------------------------------------
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // InstWithoutResult = "wait", Label, ("," <Value>)+ => ActionFn(194);
        .                   let __sym2 = __pop_Variant4(__symbols);
        .                   let __sym1 = __pop_Variant32(__symbols);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        .                   let __end = __sym2.2.clone();
        .                   let __nt = super::__action194::<>(input, __sym0, __sym1, __sym2);
       27 ( 0.00%)          __symbols.push((__start, __Symbol::Variant30(__nt), __end));
        .                   (3, 49)
        .               }
        .               pub(crate) fn __reduce142<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // IntType = r#"i\\d+"# => ActionFn(95);
    4,798 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
  674,119 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (2,399x)
    2,399 ( 0.00%)          let __start = __sym0.0.clone();
    2,399 ( 0.00%)          let __end = __sym0.2.clone();
   19,192 ( 0.00%)          let __nt = super::__action95::<>(input, __sym0);
  703,085 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__action95 (2,399x)
    9,596 ( 0.00%)          __symbols.push((__start, __Symbol::Variant11(__nt), __end));
        .                   (1, 50)
        .               }
        .               pub(crate) fn __reduce143<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7873 ----------------------------------------
-- line 7876 ----------------------------------------
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Label = LocalName => ActionFn(83);
        .                   let __sym0 = __pop_Variant22(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym0.2.clone();
        .                   let __nt = super::__action83::<>(input, __sym0);
    4,974 ( 0.00%)          __symbols.push((__start, __Symbol::Variant32(__nt), __end));
        .                   (1, 51)
        .               }
        .               pub(crate) fn __reduce144<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // LocalName = Name => ActionFn(97);
   14,548 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
2,043,994 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (7,274x)
    7,274 ( 0.00%)          let __start = __sym0.0.clone();
    7,274 ( 0.00%)          let __end = __sym0.2.clone();
   50,918 ( 0.00%)          let __nt = super::__action97::<>(input, __sym0);
  947,830 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__action97 (7,274x)
   50,918 ( 0.00%)          __symbols.push((__start, __Symbol::Variant22(__nt), __end));
        .                   (1, 52)
        .               }
        .               pub(crate) fn __reduce145<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7911 ----------------------------------------
-- line 7934 ----------------------------------------
        .               ) -> (usize, usize)
        .               {
        .                   // Module = Unit+, Comment => ActionFn(250);
        .                   let __sym1 = __pop_Variant26(__symbols);
        .                   let __sym0 = __pop_Variant41(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym1.2.clone();
        .                   let __nt = super::__action250::<>(input, __sym0, __sym1);
       12 ( 0.00%)          __symbols.push((__start, __Symbol::Variant33(__nt), __end));
       60 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (2x)
        .                   (2, 53)
        .               }
        .               pub(crate) fn __reduce147<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Name = r#"[@%][a-zA-Z0-9_\\.\\\\]+"# => ActionFn(100);
   14,550 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
2,044,275 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (7,275x)
    7,275 ( 0.00%)          let __start = __sym0.0.clone();
    7,275 ( 0.00%)          let __end = __sym0.2.clone();
    7,275 ( 0.00%)          let __nt = super::__action100::<>(input, __sym0);
   29,100 ( 0.00%)          __symbols.push((__start, __Symbol::Variant0(__nt), __end));
        .                   (1, 54)
        .               }
        .               pub(crate) fn __reduce148<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 7969 ----------------------------------------
-- line 7998 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Process = "proc", UnitName, "(", Args, ")", "->", "(", Args, ")", "{", Comment, Block+, "}" => ActionFn(230);
        2 ( 0.00%)          let __sym12 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        .                   let __sym11 = __pop_Variant21(__symbols);
        .                   let __sym10 = __pop_Variant26(__symbols);
        2 ( 0.00%)          let __sym9 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        2 ( 0.00%)          let __sym8 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        .                   let __sym7 = __pop_Variant17(__symbols);
        2 ( 0.00%)          let __sym6 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        2 ( 0.00%)          let __sym5 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        2 ( 0.00%)          let __sym4 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        .                   let __sym3 = __pop_Variant17(__symbols);
        2 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        .                   let __sym1 = __pop_Variant42(__symbols);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym12.2.clone();
        2 ( 0.00%)          let __nt = super::__action230::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9, __sym10, __sym11, __sym12);
       12 ( 0.00%)          __symbols.push((__start, __Symbol::Variant34(__nt), __end));
      226 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (2x)
        .                   (13, 55)
        .               }
        .               pub(crate) fn __reduce150<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8030 ----------------------------------------
-- line 8124 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // RegularTime = r#"[-+]?\\d+(\\.\\d+)?[afpnumkMGTPE]?s"# => ActionFn(104);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym0.2.clone();
        1 ( 0.00%)          let __nt = super::__action104::<>(input, __sym0);
        4 ( 0.00%)          __symbols.push((__start, __Symbol::Variant0(__nt), __end));
        .                   (1, 57)
        .               }
        .               pub(crate) fn __reduce156<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8144 ----------------------------------------
-- line 8162 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // ShiftOpcode = "shr" => ActionFn(77);
        6 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      843 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (3x)
        3 ( 0.00%)          let __start = __sym0.0.clone();
        3 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action77::<>(input, __sym0);
        9 ( 0.00%)          __symbols.push((__start, __Symbol::Variant19(__nt), __end));
        .                   (1, 58)
        .               }
        .               pub(crate) fn __reduce158<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8182 ----------------------------------------
-- line 8228 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // TimeType = "time" => ActionFn(94);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action94::<>(input, __sym0);
        4 ( 0.00%)          __symbols.push((__start, __Symbol::Variant11(__nt), __end));
        .                   (1, 60)
        .               }
        .               pub(crate) fn __reduce161<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8248 ----------------------------------------
-- line 8288 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // TimeValue = RegularTime, EpsilonTime => ActionFn(235);
        2 ( 0.00%)          let __sym1 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym1.2.clone();
        4 ( 0.00%)          let __nt = super::__action235::<>(input, __sym0, __sym1);
       18 ( 0.00%)          __symbols.push((__start, __Symbol::Variant37(__nt), __end));
        .                   (2, 61)
        .               }
        .               pub(crate) fn __reduce164<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8309 ----------------------------------------
-- line 8369 ----------------------------------------
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Type = IntType => ActionFn(88);
        .                   let __sym0 = __pop_Variant11(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym0.2.clone();
        .                   let __nt = super::__action88::<>(input, __sym0);
    7,788 ( 0.00%)          __symbols.push((__start, __Symbol::Variant11(__nt), __end));
        .                   (1, 62)
        .               }
        .               pub(crate) fn __reduce168<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8385 ----------------------------------------
-- line 8403 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Type = Type, "$" => ActionFn(90);
    1,114 ( 0.00%)          let __sym1 = __pop_Variant0(__symbols);
  156,517 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (557x)
        .                   let __sym0 = __pop_Variant11(__symbols);
        .                   let __start = __sym0.0.clone();
      557 ( 0.00%)          let __end = __sym1.2.clone();
        .                   let __nt = super::__action90::<>(input, __sym0, __sym1);
    2,228 ( 0.00%)          __symbols.push((__start, __Symbol::Variant11(__nt), __end));
        .                   (2, 62)
        .               }
        .               pub(crate) fn __reduce170<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8424 ----------------------------------------
-- line 8443 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Type = "[", Usize, "x", Type, "]" => ActionFn(92);
        2 ( 0.00%)          let __sym4 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        .                   let __sym3 = __pop_Variant11(__symbols);
        2 ( 0.00%)          let __sym2 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        .                   let __sym1 = __pop_Variant16(__symbols);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym4.2.clone();
        1 ( 0.00%)          let __nt = super::__action92::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4);
        4 ( 0.00%)          __symbols.push((__start, __Symbol::Variant11(__nt), __end));
        .                   (5, 62)
        .               }
        .               pub(crate) fn __reduce172<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8467 ----------------------------------------
-- line 8529 ----------------------------------------
        .               ) -> (usize, usize)
        .               {
        .                   // TypedValue = Type, Value => ActionFn(85);
        .                   let __sym1 = __pop_Variant3(__symbols);
        .                   let __sym0 = __pop_Variant11(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym1.2.clone();
        .                   let __nt = super::__action85::<>(input, __sym0, __sym1);
   20,361 ( 0.00%)          __symbols.push((__start, __Symbol::Variant13(__nt), __end));
        .                   (2, 64)
        .               }
        .               pub(crate) fn __reduce176<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8545 ----------------------------------------
-- line 8581 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // UnaryOpcode = "not" => ActionFn(47);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action47::<>(input, __sym0);
        3 ( 0.00%)          __symbols.push((__start, __Symbol::Variant19(__nt), __end));
        .                   (1, 66)
        .               }
        .               pub(crate) fn __reduce179<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8601 ----------------------------------------
-- line 8638 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // UnaryOpcode = "prb" => ActionFn(50);
       20 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
    2,810 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (10x)
       10 ( 0.00%)          let __start = __sym0.0.clone();
       10 ( 0.00%)          let __end = __sym0.2.clone();
        .                   let __nt = super::__action50::<>(input, __sym0);
       30 ( 0.00%)          __symbols.push((__start, __Symbol::Variant19(__nt), __end));
        .                   (1, 66)
        .               }
        .               pub(crate) fn __reduce182<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8658 ----------------------------------------
-- line 8718 ----------------------------------------
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Unit = Comment, Process => ActionFn(224);
        .                   let __sym1 = __pop_Variant34(__symbols);
        .                   let __sym0 = __pop_Variant26(__symbols);
        .                   let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym1.2.clone();
        3 ( 0.00%)          let __nt = super::__action224::<>(input, __sym0, __sym1);
       21 ( 0.00%)          __symbols.push((__start, __Symbol::Variant40(__nt), __end));
      134 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (3x)
        .                   (2, 67)
        .               }
        .               pub(crate) fn __reduce186<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8736 ----------------------------------------
-- line 8818 ----------------------------------------
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Unit+ = Unit => ActionFn(136);
        .                   let __sym0 = __pop_Variant40(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym0.2.clone();
        .                   let __nt = super::__action136::<>(input, __sym0);
        7 ( 0.00%)          __symbols.push((__start, __Symbol::Variant41(__nt), __end));
        .                   (1, 69)
        .               }
        .               pub(crate) fn __reduce191<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8834 ----------------------------------------
-- line 8853 ----------------------------------------
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // UnitName = Name => ActionFn(98);
        2 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
      281 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (1x)
        1 ( 0.00%)          let __start = __sym0.0.clone();
        1 ( 0.00%)          let __end = __sym0.2.clone();
        7 ( 0.00%)          let __nt = super::__action98::<>(input, __sym0);
      145 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__action98 (1x)
       13 ( 0.00%)          __symbols.push((__start, __Symbol::Variant42(__nt), __end));
        .                   (1, 70)
        .               }
        .               pub(crate) fn __reduce193<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
        .                   __states: &mut ::std::vec::Vec<i16>,
        .                   __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Usize = r#"[-+]?\\d+"# => ActionFn(101);
       74 ( 0.00%)          let __sym0 = __pop_Variant0(__symbols);
   10,397 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:llhd::assembly::reader::grammar::__parse__Module::__pop_Variant0 (37x)
       37 ( 0.00%)          let __start = __sym0.0.clone();
       37 ( 0.00%)          let __end = __sym0.2.clone();
       74 ( 0.00%)          let __nt = super::__action101::<>(input, __sym0);
      148 ( 0.00%)          __symbols.push((__start, __Symbol::Variant16(__nt), __end));
        .                   (1, 71)
        .               }
        .               pub(crate) fn __reduce194<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8892 ----------------------------------------
-- line 8895 ----------------------------------------
        .                   _: ::std::marker::PhantomData<(&'input ())>,
        .               ) -> (usize, usize)
        .               {
        .                   // Value = LocalName => ActionFn(84);
        .                   let __sym0 = __pop_Variant22(__symbols);
        .                   let __start = __sym0.0.clone();
        .                   let __end = __sym0.2.clone();
        .                   let __nt = super::__action84::<>(input, __sym0);
   27,534 ( 0.00%)          __symbols.push((__start, __Symbol::Variant3(__nt), __end));
        .                   (1, 72)
        .               }
        .               pub(crate) fn __reduce196<
        .                   'input,
        .               >(
        .                   input: &'input str,
        .                   __action: i16,
        .                   __lookahead_start: Option<&usize>,
-- line 8911 ----------------------------------------
-- line 23525 ----------------------------------------
        .               }
        .           
        .               pub struct __MatcherBuilder {
        .                   regex_set: __regex::RegexSet,
        .                   regex_vec: Vec<__regex::Regex>,
        .               }
        .           
        .               impl __MatcherBuilder {
        6 ( 0.00%)          pub fn new() -> __MatcherBuilder {
       12 ( 0.00%)  => /cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.18/src/probestack.rs:__rust_probestack (1x)
        .                       let __strs: &[&str] = &[
        .                           "^(%?[\\.0-9A-Z\\\\_a-z]+:)",
        .                           "^(;[\u{0}-\t\u{b}-\u{10ffff}]*)",
        .                           "^([\\+\\-]?[0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹０-９𐒠-𐒩𐴰-𐴹𑁦-𑁯𑃰-𑃹𑄶-𑄿𑇐-𑇙𑋰-𑋹𑑐-𑑙𑓐-𑓙𑙐-𑙙𑛀-𑛉𑜰-𑜹𑣠-𑣩𑱐-𑱙𑵐-𑵙𑶠-𑶩𖩠-𖩩𖭐-𖭙𝟎-𝟿𞅀-𞅉𞋰-𞋹𞥐-𞥙]+)",
        .                           "^([\\+\\-]?[0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹０-９𐒠-𐒩𐴰-𐴹𑁦-𑁯𑃰-𑃹𑄶-𑄿𑇐-𑇙𑋰-𑋹𑑐-𑑙𑓐-𑓙𑙐-𑙙𑛀-𑛉𑜰-𑜹𑣠-𑣩𑱐-𑱙𑵐-𑵙𑶠-𑶩𖩠-𖩩𖭐-𖭙𝟎-𝟿𞅀-𞅉𞋰-𞋹𞥐-𞥙]+(\\.[0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹０-９𐒠-𐒩𐴰-𐴹𑁦-𑁯𑃰-𑃹𑄶-𑄿𑇐-𑇙𑋰-𑋹𑑐-𑑙𑓐-𑓙𑙐-𑙙𑛀-𑛉𑜰-𑜹𑣠-𑣩𑱐-𑱙𑵐-𑵙𑶠-𑶩𖩠-𖩩𖭐-𖭙𝟎-𝟿𞅀-𞅉𞋰-𞋹𞥐-𞥙]+)?[EGMPTafkm-npu]?s)",
        .                           "^([0-9]+d)",
        .                           "^([0-9]+e)",
        .                           "^([%@][\\.0-9A-Z\\\\_a-z]+)",
-- line 23541 ----------------------------------------
-- line 23611 ----------------------------------------
        .                           "^(var)",
        .                           "^(void)",
        .                           "^(wait)",
        .                           "^(x)",
        .                           "^(xor)",
        .                           "^(\\{)",
        .                           "^(\\})",
        .                       ];
        3 ( 0.00%)              let __regex_set = __regex::RegexSet::new(__strs).unwrap();
4,434,955 ( 0.01%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_set.rs:regex::re_set::unicode::RegexSet::new (1x)
        1 ( 0.00%)              let __regex_vec = vec![
        4 ( 0.00%)                  __regex::Regex::new("^(%?[\\.0-9A-Z\\\\_a-z]+:)").unwrap(),
  124,837 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(;[\u{0}-\t\u{b}-\u{10ffff}]*)").unwrap(),
  115,074 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^([\\+\\-]?[0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹０-９𐒠-𐒩𐴰-𐴹𑁦-𑁯𑃰-𑃹𑄶-𑄿𑇐-𑇙𑋰-𑋹𑑐-𑑙𑓐-𑓙𑙐-𑙙𑛀-𑛉𑜰-𑜹𑣠-𑣩𑱐-𑱙𑵐-𑵙𑶠-𑶩𖩠-𖩩𖭐-𖭙𝟎-𝟿𞅀-𞅉𞋰-𞋹𞥐-𞥙]+)").unwrap(),
  419,302 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^([\\+\\-]?[0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹０-９𐒠-𐒩𐴰-𐴹𑁦-𑁯𑃰-𑃹𑄶-𑄿𑇐-𑇙𑋰-𑋹𑑐-𑑙𑓐-𑓙𑙐-𑙙𑛀-𑛉𑜰-𑜹𑣠-𑣩𑱐-𑱙𑵐-𑵙𑶠-𑶩𖩠-𖩩𖭐-𖭙𝟎-𝟿𞅀-𞅉𞋰-𞋹𞥐-𞥙]+(\\.[0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹０-９𐒠-𐒩𐴰-𐴹𑁦-𑁯𑃰-𑃹𑄶-𑄿𑇐-𑇙𑋰-𑋹𑑐-𑑙𑓐-𑓙𑙐-𑙙𑛀-𑛉𑜰-𑜹𑣠-𑣩𑱐-𑱙𑵐-𑵙𑶠-𑶩𖩠-𖩩𖭐-𖭙𝟎-𝟿𞅀-𞅉𞋰-𞋹𞥐-𞥙]+)?[EGMPTafkm-npu]?s)").unwrap(),
  799,368 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^([0-9]+d)").unwrap(),
  339,745 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^([0-9]+e)").unwrap(),
  333,573 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^([%@][\\.0-9A-Z\\\\_a-z]+)").unwrap(),
  124,206 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(i[0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹０-９𐒠-𐒩𐴰-𐴹𑁦-𑁯𑃰-𑃹𑄶-𑄿𑇐-𑇙𑋰-𑋹𑑐-𑑙𑓐-𑓙𑙐-𑙙𑛀-𑛉𑜰-𑜹𑣠-𑣩𑱐-𑱙𑵐-𑵙𑶠-𑶩𖩠-𖩩𖭐-𖭙𝟎-𝟿𞅀-𞅉𞋰-𞋹𞥐-𞥙]+)").unwrap(),
  386,602 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(n[0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹０-９𐒠-𐒩𐴰-𐴹𑁦-𑁯𑃰-𑃹𑄶-𑄿𑇐-𑇙𑋰-𑋹𑑐-𑑙𑓐-𑓙𑙐-𑙙𑛀-𑛉𑜰-𑜹𑣠-𑣩𑱐-𑱙𑵐-𑵙𑶠-𑶩𖩠-𖩩𖭐-𖭙𝟎-𝟿𞅀-𞅉𞋰-𞋹𞥐-𞥙]+)").unwrap(),
  381,479 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(\\$)").unwrap(),
   73,857 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(\\()").unwrap(),
   74,066 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(\\))").unwrap(),
   74,904 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(\\*)").unwrap(),
   74,076 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(,)").unwrap(),
   73,640 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(\\->)").unwrap(),
   89,060 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(=)").unwrap(),
   75,388 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(\\[)").unwrap(),
   73,551 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(\\])").unwrap(),
   74,752 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(add)").unwrap(),
  100,249 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(alias)").unwrap(),
  117,515 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(and)").unwrap(),
   97,981 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(both)").unwrap(),
  108,510 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(br)").unwrap(),
   91,395 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(call)").unwrap(),
  108,952 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(con)").unwrap(),
  101,688 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(const)").unwrap(),
  116,677 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(declare)").unwrap(),
  137,081 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(del)").unwrap(),
  100,183 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(drv)").unwrap(),
   97,654 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(entity)").unwrap(),
  124,226 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(eq)").unwrap(),
   91,566 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(extf)").unwrap(),
  108,658 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(exts)").unwrap(),
  110,571 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(fall)").unwrap(),
  109,411 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(for)").unwrap(),
  100,847 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(func)").unwrap(),
  107,766 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(halt)").unwrap(),
  109,664 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(high)").unwrap(),
  108,314 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(insf)").unwrap(),
  110,314 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(inss)").unwrap(),
  109,416 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(inst)").unwrap(),
  109,400 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(ld)").unwrap(),
   89,942 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(low)").unwrap(),
  100,596 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(mux)").unwrap(),
   99,541 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(neg)").unwrap(),
  101,722 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(neq)").unwrap(),
  101,607 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(not)").unwrap(),
  101,371 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(or)").unwrap(),
   91,202 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(phi)").unwrap(),
  100,011 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(prb)").unwrap(),
  101,371 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(proc)").unwrap(),
  108,115 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(reg)").unwrap(),
  101,343 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(ret)").unwrap(),
  100,442 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(rise)").unwrap(),
  109,292 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(sdiv)").unwrap(),
  110,676 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(sge)").unwrap(),
  100,950 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(sgt)").unwrap(),
  100,502 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(shl)").unwrap(),
  101,164 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(shr)").unwrap(),
  100,455 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(sig)").unwrap(),
   99,110 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(sle)").unwrap(),
  100,200 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(slt)").unwrap(),
  101,793 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(smod)").unwrap(),
  109,057 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(smul)").unwrap(),
  109,654 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(srem)").unwrap(),
  108,916 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(st)").unwrap(),
   89,510 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(sub)").unwrap(),
   99,968 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(time)").unwrap(),
  109,705 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(udiv)").unwrap(),
  110,602 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(uge)").unwrap(),
  101,956 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(ugt)").unwrap(),
  101,028 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(ule)").unwrap(),
  100,944 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(ult)").unwrap(),
  100,496 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(umod)").unwrap(),
  108,214 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(umul)").unwrap(),
  109,026 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(urem)").unwrap(),
  110,452 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(var)").unwrap(),
  102,289 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(void)").unwrap(),
  109,550 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(wait)").unwrap(),
  110,765 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(x)").unwrap(),
   75,208 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(xor)").unwrap(),
  101,185 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(\\{)").unwrap(),
   73,750 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        4 ( 0.00%)                  __regex::Regex::new("^(\\})").unwrap(),
   73,361 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::new (1x)
        .                       ];
       11 ( 0.00%)              __MatcherBuilder { regex_set: __regex_set, regex_vec: __regex_vec }
        5 ( 0.00%)          }
        .                   pub fn matcher<'input, 'builder>(&'builder self, s: &'input str) -> __Matcher<'input, 'builder> {
        .                       __Matcher {
        .                           text: s,
        .                           consumed: 0,
        .                           regex_set: &self.regex_set,
        1 ( 0.00%)                  regex_vec: &self.regex_vec,
        .                       }
        .                   }
        .               }
        .           
        .               pub struct __Matcher<'input, 'builder> {
        .                   text: &'input str,
        .                   consumed: usize,
        .                   regex_set: &'builder __regex::RegexSet,
        .                   regex_vec: &'builder Vec<__regex::Regex>,
        .               }
        .           
        .               impl<'input, 'builder> Iterator for __Matcher<'input, 'builder> {
        .                   type Item = Result<(usize, Token<'input>, usize), __lalrpop_util::ParseError<usize,Token<'input>,&'static str>>;
        .           
  174,510 ( 0.00%)          fn next(&mut self) -> Option<Self::Item> {
        .                       #[allow(deprecated)]
   77,560 ( 0.00%)              let __text = self.text.trim_left();
1,196,120 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54//src/libcore/str/mod.rs:core::str::<impl str>::trim_left (19,390x)
   38,780 ( 0.00%)              let __whitespace = self.text.len() - __text.len();
   19,390 ( 0.00%)              let __start_offset = self.consumed + __whitespace;
   19,390 ( 0.00%)              if __text.is_empty() {
        2 ( 0.00%)                  self.text = __text;
        1 ( 0.00%)                  self.consumed = __start_offset;
        2 ( 0.00%)                  None
        .                       } else {
   96,945 ( 0.00%)                  let __matches = self.regex_set.matches(__text);
15,120,876 ( 0.03%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_set.rs:regex::re_set::unicode::RegexSet::matches (19,389x)
   77,556 ( 0.00%)                  if !__matches.matched_any() {
   38,778 ( 0.00%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_set.rs:regex::re_set::unicode::SetMatches::matched_any (19,389x)
        .                               Some(Err(__lalrpop_util::ParseError::InvalidToken {
        .                                   location: __start_offset,
        .                               }))
        .                           } else {
        .                               let mut __longest_match = 0;
        .                               let mut __index = 0;
        .                               for __i in 0 .. 83 {
8,046,435 ( 0.01%)                          if __matches.matched(__i) {
12,874,296 ( 0.02%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_set.rs:regex::re_set::unicode::SetMatches::matched (1,609,287x)
  119,760 ( 0.00%)                              let __match = self.regex_vec[__i].find(__text).unwrap();
10,180,353 ( 0.02%)  => /home/fabian/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-0.2.11/src/re_unicode.rs:regex::re_unicode::Regex::find (19,960x)
        .                                       let __len = __match.end();
   59,880 ( 0.00%)                              if __len >= __longest_match {
        .                                           __longest_match = __len;
        .                                           __index = __i;
        .                                       }
        .                                   }
        .                               }
        .                               let __result = &__text[..__longest_match];
        .                               let __remaining = &__text[__longest_match..];
   19,389 ( 0.00%)                      let __end_offset = __start_offset + __longest_match;
   38,778 ( 0.00%)                      self.text = __remaining;
   19,389 ( 0.00%)                      self.consumed = __end_offset;
  116,334 ( 0.00%)                      Some(Ok((__start_offset, Token(__index, __result), __end_offset)))
        .                           }
        .                       }
  174,510 ( 0.00%)          }
        .               }
        .           }
        .           pub use self::__intern_token::Token;
        .           
        .           #[allow(unused_variables)]
        .           fn __action0<
        .               'input,
        .           >(
-- line 23771 ----------------------------------------
-- line 23794 ----------------------------------------
        .               input: &'input str,
        .               (_, __0, _): (usize, TimeValue, usize),
        .           ) -> TimeValue
        .           {
        .               (__0)
        .           }
        .           
        .           #[allow(unused_variables)]
        8 ( 0.00%)  fn __action3<
        .               'input,
        .           >(
        .               input: &'input str,
        5 ( 0.00%)      (_, units, _): (usize, ::std::vec::Vec<ast::Unit>, usize),
        .               (_, _, _): (usize, (), usize),
        .           ) -> Module
        .           {
        .               {
        1 ( 0.00%)      let mut module = Module::new();
       76 ( 0.00%)  => /home/fabian/code/llhd/src/ir/module.rs:llhd::ir::module::Module::new (1x)
       26 ( 0.00%)      for unit in units {
      225 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (2x)
        .                   let (mu, loc) = match unit {
        .                       ast::Unit::Function(x, loc) => (module.add_function(x), loc),
        1 ( 0.00%)              ast::Unit::Process(x, loc) => (module.add_process(x), loc),
        .                       ast::Unit::Entity(x, loc) => (module.add_entity(x), loc),
        .                       ast::Unit::Declare(name, sig, loc) => (module.declare(name, sig), loc),
        .                   };
        4 ( 0.00%)          module.set_location_hint(mu, loc);
      382 ( 0.00%)  => /home/fabian/code/llhd/src/ir/module.rs:llhd::ir::module::Module::set_location_hint (1x)
       10 ( 0.00%)      }
        1 ( 0.00%)      module.link();
    1,247 ( 0.00%)  => /home/fabian/code/llhd/src/ir/module.rs:llhd::ir::module::Module::link (1x)
        1 ( 0.00%)      module.verify();
8,045,533 ( 0.01%)  => /home/fabian/code/llhd/src/ir/module.rs:llhd::ir::module::Module::verify (1x)
        3 ( 0.00%)      module
       30 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (1x)
        .           }
        8 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        .           fn __action4<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, (), usize),
        .               (_, loc, _): (usize, usize, usize),
-- line 23833 ----------------------------------------
-- line 23942 ----------------------------------------
        .               (_, _, _): (usize, &'input str, usize),
        .           ) -> Function
        .           {
        .               {
        .           
        .               let mut sig = Signature::new();
        .               let args: Vec<_> = args
        .                   .into_iter()
       32 ( 0.00%)          .map(|(ty, name)| (sig.add_input(ty), name))
        .                   .collect();
        .               sig.set_return_type(retty);
        .               let mut func = Function::new(name, sig);
        .               let mut builder = FunctionBuilder::new(&mut func);
        .               let mut context = ast::Context::default();
        .               for (arg, name) in args {
        .                   let v = builder.dfg().arg_value(arg);
        .                   context.value_names.insert(name, v);
-- line 23958 ----------------------------------------
-- line 23963 ----------------------------------------
        .               for block in blocks {
        .                   block.build(&mut builder, &mut context);
        .               }
        .               func
        .           }
        .           }
        .           
        .           #[allow(unused_variables)]
        8 ( 0.00%)  fn __action11<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        4 ( 0.00%)      (_, name, _): (usize, UnitName, usize),
        .               (_, _, _): (usize, &'input str, usize),
        4 ( 0.00%)      (_, input_args, _): (usize, Vec<(Type, ast::LocalName<'input>)>, usize),
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, _, _): (usize, &'input str, usize),
        4 ( 0.00%)      (_, output_args, _): (usize, Vec<(Type, ast::LocalName<'input>)>, usize),
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, _, _): (usize, (), usize),
        4 ( 0.00%)      (_, blocks, _): (usize, ::std::vec::Vec<ast::Block<'input>>, usize),
        .               (_, _, _): (usize, &'input str, usize),
        .           ) -> Process
        .           {
        .               {
        .           
        .               let mut sig = Signature::new();
        3 ( 0.00%)      let input_args: Vec<_> = input_args
        .                   .into_iter()
        .                   .map(|(ty, name)| (sig.add_input(ty), name))
        .                   .collect();
        3 ( 0.00%)      let output_args: Vec<_> = output_args
        .                   .into_iter()
       80 ( 0.00%)          .map(|(ty, name)| (sig.add_output(ty), name))
        .                   .collect();
       25 ( 0.00%)      let mut prok = Process::new(name, sig);
   31,682 ( 0.00%)  => /home/fabian/code/llhd/src/ir/process.rs:llhd::ir::process::Process::new (1x)
        .               let mut builder = ProcessBuilder::new(&mut prok);
        .               let mut context = ast::Context::default();
       24 ( 0.00%)      for (arg, name) in input_args {
        .                   let v = builder.dfg().arg_value(arg);
       72 ( 0.00%)          context.value_names.insert(name, v);
    7,074 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::insert (8x)
       16 ( 0.00%)          if let ast::LocalName::Named(name) = name {
       32 ( 0.00%)              builder.dfg_mut().set_name(v, name.to_owned());
    4,659 ( 0.00%)  => /home/fabian/code/llhd/src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::set_name (8x)
        .                   }
        .               }
       48 ( 0.00%)      for (arg, name) in output_args {
        .                   let v = builder.dfg().arg_value(arg);
      220 ( 0.00%)          context.value_names.insert(name, v);
   11,870 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::insert (20x)
       40 ( 0.00%)          if let ast::LocalName::Named(name) = name {
       80 ( 0.00%)              builder.dfg_mut().set_name(v, name.to_owned());
    6,965 ( 0.00%)  => /home/fabian/code/llhd/src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::set_name (20x)
        .                   }
        .               }
    3,367 ( 0.00%)      for block in blocks {
    4,200 ( 0.00%)          block.build(&mut builder, &mut context);
48,884,466 ( 0.08%)  => /home/fabian/code/llhd/src/assembly/reader.rs:llhd::assembly::reader::Block::build (420x)
        .               }
        3 ( 0.00%)      prok
      112 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (1x)
        .           }
        8 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        .           fn __action12<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, name, _): (usize, UnitName, usize),
-- line 24031 ----------------------------------------
-- line 24156 ----------------------------------------
        .               (_, inst, _): (usize, ast::Inst<'input>, usize),
        .               (_, _, _): (usize, (), usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               inst.location(loc)
        .           }
        .           
        .           #[allow(unused_variables)]
    1,356 ( 0.00%)  fn __action19<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
      904 ( 0.00%)      (_, ty, _): (usize, Type, usize),
    1,808 ( 0.00%)      (_, imm, _): (usize, BigInt, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               ast::Inst::new(Opcode::ConstInt)
    5,424 ( 0.00%)          .data(ast::InstData::ConstInt(IntValue::from_signed(ty.unwrap_int(), imm)))
  762,572 ( 0.00%)  => /home/fabian/code/llhd/src/value/int.rs:llhd::value::int::IntValue::from_signed (452x)
    2,260 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        .           fn __action20<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        1 ( 0.00%)      (_, ty, _): (usize, Type, usize),
        .               (_, imm, _): (usize, TimeValue, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               ast::Inst::new(Opcode::ConstTime)
        .                   .data(ast::InstData::ConstTime(imm))
        .           }
        .           
        .           #[allow(unused_variables)]
-- line 24191 ----------------------------------------
-- line 24215 ----------------------------------------
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action23<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, opc, _): (usize, Opcode, usize),
    5,128 ( 0.00%)      (_, arg0, _): (usize, ast::TypedValue<'input>, usize),
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, arg1, _): (usize, ast::Value<'input>, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               {
    5,128 ( 0.00%)          let arg1 = arg1.ty(arg0.ty.clone());
        .                   ast::Inst::new(opc)
        .                       .data(ast::InstData::Binary(arg0, arg1))
        .               }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action24<
        .               'input,
-- line 24237 ----------------------------------------
-- line 24395 ----------------------------------------
        .               (_, _, _): (usize, &'input str, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               ast::Inst::new(Opcode::Call)
        .                   .data(ast::InstData::Call(retty, unit, args))
        .           }
        .           
        .           #[allow(unused_variables)]
      236 ( 0.00%)  fn __action33<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
      118 ( 0.00%)      (_, ty, _): (usize, Type, usize),
        .               (_, edges, _): (usize, Vec<(ast::Value<'input>, ast::Label<'input>)>, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               {
    2,961 ( 0.00%)          let edges = edges.into_iter().map(|(v, bb)| (v.ty(ty.clone()), bb)).collect();
       59 ( 0.00%)          ast::Inst::new(Opcode::Phi).data(ast::InstData::Phi(ty, edges))
        .               }
      295 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        .           fn __action34<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, length, _): (usize, usize, usize),
-- line 24424 ----------------------------------------
-- line 24427 ----------------------------------------
        .               (_, _, _): (usize, &'input str, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               ast::Inst::new(Opcode::ArrayUniform)
        .                   .data(ast::InstData::Aggregate(length, vec![arg]))
        .           }
        .           
        .           #[allow(unused_variables)]
        3 ( 0.00%)  fn __action35<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        5 ( 0.00%)      (_, head, _): (usize, ast::TypedValue<'input>, usize),
        4 ( 0.00%)      (_, tail, _): (usize, ::std::vec::Vec<ast::Value<'input>>, usize),
        .               (_, _, _): (usize, &'input str, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               {
        1 ( 0.00%)          let ty = head.ty.clone();
        5 ( 0.00%)          let mut args = vec![head];
        8 ( 0.00%)          args.extend(tail.into_iter().map(|a| a.ty(ty.clone())));
        .                   ast::Inst::new(Opcode::Array).data(ast::InstData::Aggregate(0, args))
        .               }
        4 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        .           fn __action36<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, args, _): (usize, Vec<ast::TypedValue<'input>>, usize),
-- line 24459 ----------------------------------------
-- line 24498 ----------------------------------------
        .               (_, _, _): (usize, &'input str, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               ast::Inst::new(Opcode::Inst)
        .                   .data(ast::InstData::Inst(unit, input_args, output_args))
        .           }
        .           
        .           #[allow(unused_variables)]
    3,633 ( 0.00%)  fn __action39<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
    2,076 ( 0.00%)      (_, target, _): (usize, ast::TypedValue<'input>, usize),
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, value, _): (usize, ast::Value<'input>, usize),
        .               (_, _, _): (usize, &'input str, usize),
    2,076 ( 0.00%)      (_, delay, _): (usize, ast::Value<'input>, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               {
    3,114 ( 0.00%)          let value = value.ty(target.ty.unwrap_signal().clone());
    2,076 ( 0.00%)          let delay = delay.ty(time_ty());
        .                   ast::Inst::new(Opcode::Drv)
        .                       .data(ast::InstData::Ternary(target, value, delay))
        .               }
    3,633 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        .           fn __action40<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, target, _): (usize, ast::TypedValue<'input>, usize),
-- line 24532 ----------------------------------------
-- line 24581 ----------------------------------------
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, bb, _): (usize, ast::Label<'input>, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               ast::Inst::new(Opcode::Br)
      968 ( 0.00%)          .data(ast::InstData::Branch(None, bb, None))
        .           }
        .           
        .           #[allow(unused_variables)]
    1,239 ( 0.00%)  fn __action45<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, cond, _): (usize, ast::Value<'input>, usize),
        .               (_, _, _): (usize, &'input str, usize),
      708 ( 0.00%)      (_, bb0, _): (usize, ast::Label<'input>, usize),
        .               (_, _, _): (usize, &'input str, usize),
      708 ( 0.00%)      (_, bb1, _): (usize, ast::Label<'input>, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               {
      708 ( 0.00%)          let cond = cond.ty(int_ty(1));
        .                   ast::Inst::new(Opcode::BrCond)
        .                       .data(ast::InstData::Branch(Some(cond), bb0, Some(bb1)))
        .               }
    1,062 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        6 ( 0.00%)  fn __action46<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        4 ( 0.00%)      (_, bb, _): (usize, ast::Label<'input>, usize),
        1 ( 0.00%)      (_, time, _): (usize, ::std::option::Option<ast::Value<'input>>, usize),
        4 ( 0.00%)      (_, args, _): (usize, ::std::vec::Vec<ast::Value<'input>>, usize),
        .           ) -> ast::Inst<'input>
        .           {
        .               {
        4 ( 0.00%)          let time = time.map(|t| t.ty(time_ty()));
        .                   ast::Inst::new(match time {
        .                       Some(_) => Opcode::WaitTime,
        .                       None => Opcode::Wait,
        .                   }).data(ast::InstData::Wait(bb, time, args))
        .               }
        6 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        .           fn __action47<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, __0, _): (usize, &'input str, usize),
        .           ) -> Opcode
-- line 24638 ----------------------------------------
-- line 25162 ----------------------------------------
        .               input: &'input str,
        .               (_, __0, _): (usize, &'input str, usize),
        .           ) -> Type
        .           {
        .               time_ty()
        .           }
        .           
        .           #[allow(unused_variables)]
    4,798 ( 0.00%)  fn __action95<
        .               'input,
        .           >(
        .               input: &'input str,
    4,798 ( 0.00%)      (_, __0, _): (usize, &'input str, usize),
        .           ) -> Type
        .           {
        .               int_ty(__0[1..].parse().unwrap())
    7,197 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        .           fn __action96<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, __0, _): (usize, &'input str, usize),
        .           ) -> Type
        .           {
        .               enum_ty(__0[1..].parse().unwrap())
        .           }
        .           
        .           #[allow(unused_variables)]
   21,822 ( 0.00%)  fn __action97<
        .               'input,
        .           >(
        .               input: &'input str,
   29,096 ( 0.00%)      (_, name, _): (usize, &'input str, usize),
        .           ) -> ast::LocalName<'input>
        .           {
        .               {
        .               match &name[0..1] {
    7,274 ( 0.00%)          "%" => name[1..].into(),
        .                   _ => panic!("expected local name (`%...`), got `{}`", name),
        .               }
        .           }
   29,096 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        6 ( 0.00%)  fn __action98<
        .               'input,
        .           >(
        .               input: &'input str,
        2 ( 0.00%)      (_, name, _): (usize, &'input str, usize),
        .           ) -> UnitName
        .           {
        .               {
        2 ( 0.00%)      let (first, tail) = (&name[0..1], &name[1..]);
        .               let all_digits = tail.chars().all(|c| c.is_digit(10));
        .               match first {
        1 ( 0.00%)          "@" => UnitName::global(tail),
        2 ( 0.00%)          "%" if all_digits => UnitName::anonymous(tail.parse().unwrap()),
        .                   "%" => UnitName::local(tail),
        .                   _ => unreachable!("regex should not match names starting with `{}`", first),
        .               }
        .           }
        7 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        .           fn __action99<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, __0, _): (usize, &'input str, usize),
        .           ) -> ast::LocalName<'input>
        .           {
        .               {
    2,520 ( 0.00%)      __0.trim_start_matches('%').trim_end_matches(':').into()
   13,020 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/str/mod.rs:core::str::<impl str>::trim_end_matches (420x)
   11,340 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/str/mod.rs:core::str::<impl str>::trim_start_matches (420x)
        .           }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action100<
        .               'input,
        .           >(
        .               input: &'input str,
-- line 25244 ----------------------------------------
-- line 25255 ----------------------------------------
        .               input: &'input str,
        .               (_, __0, _): (usize, &'input str, usize),
        .           ) -> usize
        .           {
        .               __0.parse().unwrap()
        .           }
        .           
        .           #[allow(unused_variables)]
    1,808 ( 0.00%)  fn __action102<
        .               'input,
        .           >(
        .               input: &'input str,
      904 ( 0.00%)      (_, __0, _): (usize, &'input str, usize),
        .           ) -> BigInt
        .           {
        .               __0.parse().unwrap()
    2,260 ( 0.00%)  }
        .           
        .           #[allow(unused_variables)]
        .           fn __action103<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, time, _): (usize, &'input str, usize),
        .               (_, delta, _): (usize, ::std::option::Option<&'input str>, usize),
        .               (_, epsilon, _): (usize, ::std::option::Option<&'input str>, usize),
        .           ) -> TimeValue
        .           {
        .               {
       13 ( 0.00%)      let (v, delta, epsilon) = ast::parse_time_triple(time, delta, epsilon);
    4,003 ( 0.00%)  => /home/fabian/code/llhd/src/assembly/reader.rs:llhd::assembly::reader::parse_time_triple (1x)
        .               TimeValue::new(v, delta, epsilon)
        .           }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action104<
        .               'input,
        .           >(
-- line 25292 ----------------------------------------
-- line 25470 ----------------------------------------
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action120<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, head, _): (usize, ::std::vec::Vec<(ast::Value<'input>, ast::Label<'input>)>, usize),
      767 ( 0.00%)      (_, tail, _): (usize, ::std::option::Option<(ast::Value<'input>, ast::Label<'input>)>, usize),
        .           ) -> Vec<(ast::Value<'input>, ast::Label<'input>)>
        .           {
        .               match tail {
      118 ( 0.00%)      Some(tail) => {
      177 ( 0.00%)          let mut head = head;
      826 ( 0.00%)          head.push(tail);
      177 ( 0.00%)          head
        .               }
        .               None => head,
        .           }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action121<
        .               'input,
-- line 25493 ----------------------------------------
-- line 25495 ----------------------------------------
        .               input: &'input str,
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, __0, _): (usize, ast::Value<'input>, usize),
        .               (_, _, _): (usize, &'input str, usize),
        .               (_, __1, _): (usize, ast::Label<'input>, usize),
        .               (_, _, _): (usize, &'input str, usize),
        .           ) -> (ast::Value<'input>, ast::Label<'input>)
        .           {
      928 ( 0.00%)      (__0, __1)
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action122<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, head, _): (usize, ::std::vec::Vec<ast::TypedValue<'input>>, usize),
-- line 25511 ----------------------------------------
-- line 25560 ----------------------------------------
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action126<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, head, _): (usize, ::std::vec::Vec<(Type, ast::LocalName<'input>)>, usize),
       10 ( 0.00%)      (_, tail, _): (usize, ::std::option::Option<(Type, ast::LocalName<'input>)>, usize),
        .           ) -> Vec<(Type, ast::LocalName<'input>)>
        .           {
        .               match tail {
        4 ( 0.00%)      Some(tail) => {
        6 ( 0.00%)          let mut head = head;
       16 ( 0.00%)          head.push(tail);
        .                   head
        .               }
        .               None => head,
        .           }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action127<
-- line 25582 ----------------------------------------
-- line 25690 ----------------------------------------
        .               v
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action136<
        .               'input,
        .           >(
        .               input: &'input str,
        3 ( 0.00%)      (_, __0, _): (usize, ast::Unit, usize),
      113 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (1x)
        .           ) -> ::std::vec::Vec<ast::Unit>
        .           {
        4 ( 0.00%)      vec![__0]
      113 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (1x)
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action137<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, v, _): (usize, ::std::vec::Vec<ast::Unit>, usize),
-- line 25709 ----------------------------------------
-- line 25771 ----------------------------------------
        .               (__0)
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action143<
        .               'input,
        .           >(
        .               input: &'input str,
        3 ( 0.00%)      (_, __0, _): (usize, ast::Block<'input>, usize),
        .           ) -> ::std::vec::Vec<ast::Block<'input>>
        .           {
        6 ( 0.00%)      vec![__0]
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action144<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, v, _): (usize, ::std::vec::Vec<ast::Block<'input>>, usize),
        .               (_, e, _): (usize, ast::Block<'input>, usize),
        .           ) -> ::std::vec::Vec<ast::Block<'input>>
        .           {
    3,361 ( 0.00%)      { let mut v = v; v.push(e); v }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action145<
        .               'input,
        .           >(
        .               input: &'input str,
    1,260 ( 0.00%)      (_, __0, _): (usize, ast::Inst<'input>, usize),
   12,600 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (420x)
        .           ) -> ::std::vec::Vec<ast::Inst<'input>>
        .           {
    1,680 ( 0.00%)      vec![__0]
   12,600 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (420x)
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action146<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, v, _): (usize, ::std::vec::Vec<ast::Inst<'input>>, usize),
    2,347 ( 0.00%)      (_, e, _): (usize, ast::Inst<'input>, usize),
        .           ) -> ::std::vec::Vec<ast::Inst<'input>>
        .           {
   17,309 ( 0.00%)      { let mut v = v; v.push(e); v }
   70,410 ( 0.00%)  => ???:__memcpy_avx_unaligned_erms (2,347x)
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action147<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, __0, _): (usize, (Type, ast::LocalName<'input>), usize),
-- line 25825 ----------------------------------------
-- line 26014 ----------------------------------------
        .               (__0)
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action164<
        .               'input,
        .           >(
        .               input: &'input str,
        8 ( 0.00%)      (_, __0, _): (usize, ast::Value<'input>, usize),
        .           ) -> ::std::vec::Vec<ast::Value<'input>>
        .           {
        8 ( 0.00%)      vec![__0]
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action165<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, v, _): (usize, ::std::vec::Vec<ast::Value<'input>>, usize),
        .               (_, e, _): (usize, ast::Value<'input>, usize),
        .           ) -> ::std::vec::Vec<ast::Value<'input>>
        .           {
       49 ( 0.00%)      { let mut v = v; v.push(e); v }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action166<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, __0, _): (usize, &'input str, usize),
-- line 26045 ----------------------------------------
-- line 26060 ----------------------------------------
        .               { let mut v = v; v.push(e); v }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action168<
        .               'input,
        .           >(
        .               input: &'input str,
      590 ( 0.00%)      (_, __0, _): (usize, (ast::Value<'input>, ast::Label<'input>), usize),
        .           ) -> ::std::vec::Vec<(ast::Value<'input>, ast::Label<'input>)>
        .           {
      354 ( 0.00%)      vec![__0]
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action169<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, v, _): (usize, ::std::vec::Vec<(ast::Value<'input>, ast::Label<'input>)>, usize),
        .               (_, e, _): (usize, (ast::Value<'input>, ast::Label<'input>), usize),
        .           ) -> ::std::vec::Vec<(ast::Value<'input>, ast::Label<'input>)>
        .           {
    1,603 ( 0.00%)      { let mut v = v; v.push(e); v }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action170<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, __0, _): (usize, ast::TypedValue<'input>, usize),
-- line 26091 ----------------------------------------
-- line 26106 ----------------------------------------
        .               { let mut v = v; v.push(e); v }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action172<
        .               'input,
        .           >(
        .               input: &'input str,
        8 ( 0.00%)      (_, __0, _): (usize, (Type, ast::LocalName<'input>), usize),
        .           ) -> ::std::vec::Vec<(Type, ast::LocalName<'input>)>
        .           {
       10 ( 0.00%)      vec![__0]
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action173<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, v, _): (usize, ::std::vec::Vec<(Type, ast::LocalName<'input>)>, usize),
        .               (_, e, _): (usize, (Type, ast::LocalName<'input>), usize),
        .           ) -> ::std::vec::Vec<(Type, ast::LocalName<'input>)>
        .           {
      176 ( 0.00%)      { let mut v = v; v.push(e); v }
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action174<
        .               'input,
        .           >(
        .               input: &'input str,
        .               (_, __0, _): (usize, Type, usize),
-- line 26137 ----------------------------------------
-- line 26346 ----------------------------------------
        .           {
        .               let __start0 = __2.0.clone();
        .               let __end0 = __2.2.clone();
        .               let __temp0 = __action118(
        .                   input,
        .                   __2,
        .               );
        .               let __temp0 = (__start0, __temp0, __end0);
        1 ( 0.00%)      __action35(
      749 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:_ZN4llhd8assembly6reader7grammar10__action3517hec641520fa75daa7E.llvm.6713649935165807986 (1x)
        .                   input,
        .                   __0,
        6 ( 0.00%)          __1,
        9 ( 0.00%)          __temp0,
        .                   __3,
        .               )
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action184<
        .               'input,
        .           >(
-- line 26366 ----------------------------------------
-- line 26400 ----------------------------------------
        .           {
        .               let __start0 = __3.0.clone();
        .               let __end0 = __3.2.clone();
        .               let __temp0 = __action118(
        .                   input,
        .                   __3,
        .               );
        .               let __temp0 = (__start0, __temp0, __end0);
        1 ( 0.00%)      __action46(
      122 ( 0.00%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:_ZN4llhd8assembly6reader7grammar10__action4617h34c84397000edeceE.llvm.6713649935165807986 (1x)
        .                   input,
        .                   __0,
        6 ( 0.00%)          __1,
        3 ( 0.00%)          __2,
       10 ( 0.00%)          __temp0,
        .               )
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action186<
        .               'input,
        .           >(
        .               input: &'input str,
-- line 26421 ----------------------------------------
-- line 26426 ----------------------------------------
        .               __4: (usize, &'input str, usize),
        .           ) -> ::std::option::Option<(ast::Value<'input>, ast::Label<'input>)>
        .           {
        .               let __start0 = __0.0.clone();
        .               let __end0 = __4.2.clone();
        .               let __temp0 = __action121(
        .                   input,
        .                   __0,
      177 ( 0.00%)          __1,
        .                   __2,
        .                   __3,
        .                   __4,
        .               );
        .               let __temp0 = (__start0, __temp0, __end0);
        .               __action159(
        .                   input,
      649 ( 0.00%)          __temp0,
        .               )
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action187<
        .               'input,
        .           >(
        .               input: &'input str,
-- line 26450 ----------------------------------------
-- line 26456 ----------------------------------------
        .               __5: (usize, &'input str, usize),
        .           ) -> (ast::Value<'input>, ast::Label<'input>)
        .           {
        .               let __start0 = __0.0.clone();
        .               let __end0 = __4.2.clone();
        .               let __temp0 = __action121(
        .                   input,
        .                   __0,
      519 ( 0.00%)          __1,
        .                   __2,
        .                   __3,
        .                   __4,
        .               );
        .               let __temp0 = (__start0, __temp0, __end0);
        .               __action163(
        .                   input,
    1,557 ( 0.00%)          __temp0,
        .                   __5,
        .               )
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action188<
        .               'input,
        .           >(
-- line 26480 ----------------------------------------
-- line 27614 ----------------------------------------
        .           {
        .               let __start0 = __11.0.clone();
        .               let __end0 = __11.2.clone();
        .               let __temp0 = __action131(
        .                   input,
        .                   __11,
        .               );
        .               let __temp0 = (__start0, __temp0, __end0);
        1 ( 0.00%)      __action11(
48,995,720 ( 0.08%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:_ZN4llhd8assembly6reader7grammar10__action1117hfcfedabd9eaea786E.llvm.6713649935165807986 (1x)
        .                   input,
        .                   __0,
        6 ( 0.00%)          __1,
        .                   __2,
        6 ( 0.00%)          __3,
        .                   __4,
        .                   __5,
        .                   __6,
        6 ( 0.00%)          __7,
        .                   __8,
        .                   __9,
        .                   __10,
        9 ( 0.00%)          __temp0,
        .                   __12,
        .               )
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action231<
        .               'input,
        .           >(
-- line 27643 ----------------------------------------
-- line 28137 ----------------------------------------
        .           {
        .               let __start0 = __0.0.clone();
        .               let __end0 = __0.2.clone();
        .               let __temp0 = __action135(
        .                   input,
        .                   __0,
        .               );
        .               let __temp0 = (__start0, __temp0, __end0);
        2 ( 0.00%)      __action3(
8,049,264 ( 0.01%)  => /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs:_ZN4llhd8assembly6reader7grammar9__action317h556b48f69ea0de1dE.llvm.6713649935165807986 (1x)
        .                   input,
        5 ( 0.00%)          __temp0,
        .                   __1,
        .               )
        .           }
        .           
        .           #[allow(unused_variables)]
        .           fn __action251<
        .               'input,
        .           >(
-- line 28155 ----------------------------------------

2,675,107 ( 0.00%)  <counts for unidentified lines in /var/fabian/cargo-target/release/build/llhd-b2af02032ed2aa52/out/assembly/grammar.rs>

--------------------------------------------------------------------------------
-- Auto-annotated source: src/pass/gcse.rs
--------------------------------------------------------------------------------
Ir                   

-- line 14 ----------------------------------------
          .           /// Global Common Subexpression Elimination
          .           ///
          .           /// This pass implements global common subexpression elimination. It tries to
          .           /// eliminate redundant instructions.
          .           pub struct GlobalCommonSubexprElim;
          .           
          .           impl Pass for GlobalCommonSubexprElim {
          .               fn run_on_cfg(_ctx: &PassContext, unit: &mut impl UnitBuilder) -> bool {
          9 ( 0.00%)          info!("GCSE [{}]", unit.unit().name());
          2 ( 0.00%)  => /home/fabian/code/llhd/src/ir/process.rs:<llhd::ir::process::Process as llhd::ir::unit::Unit>::name (1x)
          2 ( 0.00%)  => /home/fabian/code/llhd/src/ir/process.rs:<llhd::ir::process::ProcessBuilder as llhd::ir::unit::UnitBuilder>::unit (1x)
          .           
          .                   // Build the predecessor table and dominator tree.
          3 ( 0.00%)          let pred = PredecessorTable::new(unit.dfg(), unit.func_layout());
  1,594,393 ( 0.00%)  => src/pass/gcse.rs:llhd::pass::gcse::PredecessorTable::new (1x)
          2 ( 0.00%)          let dt = DominatorTree::new(unit.func_layout(), &pred);
8,092,182,342 (13.99%)  => src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::new (1x)
          .           
          .                   // Build the temporal predecessor table and dominator tree.
          3 ( 0.00%)          let temp_pt = PredecessorTable::new_temporal(unit.dfg(), unit.func_layout());
  1,632,539 ( 0.00%)  => src/pass/gcse.rs:llhd::pass::gcse::PredecessorTable::new_temporal (1x)
          2 ( 0.00%)          let temp_dt = DominatorTree::new(unit.func_layout(), &temp_pt);
8,815,919,026 (15.24%)  => src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::new (1x)
          .           
          .                   // Compute the TRG to allow for `prb` instructions to be eliminated.
          3 ( 0.00%)          let trg = TemporalRegionGraph::new(unit.dfg(), unit.func_layout());
  1,094,557 ( 0.00%)  => /home/fabian/code/llhd/src/pass/tcm.rs:llhd::pass::tcm::TemporalRegionGraph::new (1x)
          .           
          .                   // Collect instructions.
          .                   let mut insts = vec![];
          2 ( 0.00%)          for bb in unit.func_layout().blocks() {
          5 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::blocks (1x)
      1,680 ( 0.00%)              for inst in unit.func_layout().insts(bb) {
     86,170 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::insts (420x)
          .                           insts.push(inst);
          .                       }
          .                   }
          .           
          .                   // Perform GCSE.
          .                   let mut modified = false;
          .                   let mut values = HashMap::<InstData, HashSet<Value>>::new();
          7 ( 0.00%)          'outer: for inst in insts {
          .                       // Don't mess with instructions that produce no result or have side
          .                       // effects.
     16,115 ( 0.00%)              let opcode = unit.dfg()[inst].opcode();
    601,071 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:<llhd::ir::dfg::DataFlowGraph as core::ops::index::Index<llhd::ir::Inst>>::index (3,223x)
      6,446 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::opcode (3,223x)
     20,683 ( 0.00%)              if !unit.dfg().has_result(inst)
    585,351 ( 0.00%)  => /home/fabian/code/llhd/src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::has_result (3,223x)
          .                           || opcode == Opcode::Ld
          .                           || opcode == Opcode::Var
          .                           || opcode == Opcode::Sig
          .                       {
          .                           continue;
          .                       }
      6,852 ( 0.00%)              let value = unit.dfg().inst_result(inst);
    450,095 ( 0.00%)  => /home/fabian/code/llhd/src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::inst_result (2,284x)
          .                       trace!("Examining {}", inst.dump(unit.dfg(), unit.try_cfg()));
          .           
          .                       // Try the candidates.
     18,272 ( 0.00%)              if let Some(aliases) = values.get_mut(&unit.dfg()[inst]) {
    426,185 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:<llhd::ir::dfg::DataFlowGraph as core::ops::index::Index<llhd::ir::Inst>>::index (2,284x)
  1,091,172 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::get_mut (2,284x)
      1,912 ( 0.00%)                  'inner: for &cv in aliases.iter() {
          .                               trace!("  Trying {}", cv.dump(unit.dfg()));
      1,434 ( 0.00%)                      let cv_inst = unit.dfg().value_inst(cv);
     92,254 ( 0.00%)  => /home/fabian/code/llhd/src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::value_inst (478x)
      1,434 ( 0.00%)                      let inst_bb = unit.func_layout().inst_block(inst).unwrap();
     78,202 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::inst_block (478x)
      1,912 ( 0.00%)                      let cv_bb = unit.func_layout().inst_block(cv_inst).unwrap();
     77,021 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::inst_block (478x)
          .           
          .                               // Make sure that we don't merge `prb` instructions in
          .                               // different temporal regions.
      3,824 ( 0.00%)                      if trg[inst_bb] != trg[cv_bb] {
    152,580 ( 0.00%)  => /home/fabian/code/llhd/src/pass/tcm.rs:<llhd::pass::tcm::TemporalRegionGraph as core::ops::index::Index<llhd::ir::Block>>::index (956x)
          .                                   trace!("    Skipping because in other temporal region");
          .                                   continue;
          .                               }
          .           
          .                               // Decide which dominator tree to use.
          .                               let which_dt = if opcode == Opcode::Prb { &temp_dt } else { &dt };
          .           
          .                               // Replace the current inst with the recorded value if the
          .                               // latter dominates the former.
      3,332 ( 0.00%)                      if which_dt.dominates(cv_bb, inst_bb) {
    161,456 ( 0.00%)  => src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::dominates (476x)
          .                                   debug!(
          .                                       "Replace {} with {}",
          .                                       inst.dump(unit.dfg(), unit.try_cfg()),
          .                                       cv.dump(unit.dfg()),
          .                                   );
      1,852 ( 0.00%)                          unit.dfg_mut().replace_use(value, cv);
 59,803,741 ( 0.10%)  => /home/fabian/code/llhd/src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::replace_use (463x)
      1,389 ( 0.00%)                          unit.prune_if_unused(inst);
659,204,448 ( 1.14%)  => /home/fabian/code/llhd/src/ir/unit.rs:llhd::ir::unit::UnitBuilder::prune_if_unused (463x)
          .                                   modified = true;
          .                                   continue 'outer;
          .                               }
          .           
          .                               // Replace the recorded value with the current inst if the
          .                               // latter dominates the former.
         65 ( 0.00%)                      if which_dt.dominates(inst_bb, cv_bb) {
      4,351 ( 0.00%)  => src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::dominates (13x)
          .                                   debug!(
          .                                       "Replace {} with {}",
          .                                       cv.dump(unit.dfg()),
          .                                       value.dump(unit.dfg()),
          .                                   );
          .                                   unit.dfg_mut().replace_use(cv, value);
          .                                   unit.prune_if_unused(cv_inst);
          .                                   aliases.remove(&cv); // crazy that this works; NLL <3
-- line 102 ----------------------------------------
-- line 111 ----------------------------------------
          .                               // which is only possible if they are both dominated by the
          .                               // args.
          .           
          .                               trace!(
          .                                   "    Intersect(Dom({}), Dom({})):",
          .                                   inst_bb.dump(unit.cfg()),
          .                                   cv_bb.dump(unit.cfg())
          .                               );
         26 ( 0.00%)                      for bb in which_dt
      2,210 ( 0.00%)  => src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::dominators (13x)
          .                                   .dominators(inst_bb)
         13 ( 0.00%)                          .intersection(&which_dt.dominators(cv_bb))
      2,210 ( 0.00%)  => src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::dominators (13x)
          .                               {
          .                                   trace!("      {}", bb.dump(unit.cfg()));
          .                               }
         13 ( 0.00%)                      let target_bb = which_dt
      2,210 ( 0.00%)  => src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::dominators (13x)
          .                                   .dominators(inst_bb)
         13 ( 0.00%)                          .intersection(which_dt.dominators(cv_bb))
      2,210 ( 0.00%)  => src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::dominators (13x)
          .                                   .max_by(|&&bb_a, &&bb_b| {
        827 ( 0.00%)                              if which_dt.dominates(bb_a, bb_b) {
    278,388 ( 0.00%)  => src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::dominates (827x)
          .                                           std::cmp::Ordering::Less
          .                                       } else {
          .                                           std::cmp::Ordering::Greater
          .                                       }
          .                                   });
          .                               let target_bb = match target_bb {
         39 ( 0.00%)                          Some(&bb) => bb,
          .                                   None => continue,
          .                               };
          .                               trace!(
          .                                   "    Latest common dominator: {}",
          .                                   target_bb.dump(unit.cfg())
          .                               );
          .           
          .                               // Hoist the instruction up into the target block.
          .                               debug!(
          .                                   "Hoist {} up into {}",
          .                                   inst.dump(unit.dfg(), unit.try_cfg()),
          .                                   target_bb.dump(unit.cfg())
          .                               );
          .                               let fl = unit.func_layout_mut();
         39 ( 0.00%)                      let term = fl.terminator(target_bb);
      2,574 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::terminator (13x)
         39 ( 0.00%)                      fl.remove_inst(inst);
     13,986 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::remove_inst (13x)
         52 ( 0.00%)                      fl.insert_inst_before(inst, term);
     20,499 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::insert_inst_before (13x)
          .           
          .                               // Replace all uses of the recorded value with the inst.
          .                               debug!(
          .                                   "Replace {} with {}",
          .                                   cv.dump(unit.dfg()),
          .                                   value.dump(unit.dfg()),
          .                               );
         52 ( 0.00%)                      unit.dfg_mut().replace_use(cv, value);
  1,677,114 ( 0.00%)  => /home/fabian/code/llhd/src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::replace_use (13x)
         52 ( 0.00%)                      unit.prune_if_unused(cv_inst);
 35,774,215 ( 0.06%)  => /home/fabian/code/llhd/src/ir/unit.rs:llhd::ir::unit::UnitBuilder::prune_if_unused (13x)
          .                               aliases.remove(&cv); // crazy that this works; NLL <3
          .                               modified = true;
          .                               break 'inner;
          .                           }
          .                       }
          .           
          .                       // Insert the instruction into the table.
          .                       // trace!("Recording {}", inst.dump(unit.dfg(), unit.try_cfg()));
     18,210 ( 0.00%)              values
  2,827,331 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::entry (1,821x)
  1,102,434 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/set.rs:std::collections::hash::set::HashSet<T,S>::insert (1,821x)
    185,109 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::Entry<K,V>::or_insert_with (1,821x)
     10,926 ( 0.00%)                  .entry(unit.dfg()[inst].clone())
    338,990 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:<llhd::ir::dfg::DataFlowGraph as core::ops::index::Index<llhd::ir::Inst>>::index (1,821x)
    116,221 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:<llhd::ir::inst::InstData as core::clone::Clone>::clone (1,821x)
          .                           .or_insert_with(Default::default)
          .                           .insert(value);
          .                   }
          1 ( 0.00%)          modified
          2 ( 0.00%)      }
    349,766 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/ptr/mod.rs:core::ptr::real_drop_in_place (2x)
          .           
          .               fn run_on_entity(_ctx: &PassContext, unit: &mut EntityBuilder) -> bool {
          .                   info!("GCSE [{}]", unit.unit().name());
          .           
          .                   // Collect instructions.
          .                   let mut insts = vec![];
          .                   for inst in unit.inst_layout().insts() {
          .                       insts.push(inst);
-- line 185 ----------------------------------------
-- line 224 ----------------------------------------
          .           #[derive(Debug, Clone)]
          .           pub struct PredecessorTable {
          .               pred: HashMap<Block, HashSet<Block>>,
          .               succ: HashMap<Block, HashSet<Block>>,
          .           }
          .           
          .           impl PredecessorTable {
          .               /// Compute the predecessor table for a function or process.
        140 ( 0.00%)      pub fn new(dfg: &DataFlowGraph, layout: &FunctionLayout) -> Self {
          .                   let mut pred = HashMap::new();
          .                   let mut succ = HashMap::new();
          .                   for bb in layout.blocks() {
     18,635 ( 0.00%)              pred.insert(bb, HashSet::new());
  2,136,882 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::insert (3,727x)
          .                   }
          .                   for bb in layout.blocks() {
          .                       let term = layout.terminator(bb);
     11,181 ( 0.00%)              for to_bb in dfg[term].blocks() {
     43,976 ( 0.00%)                  pred.get_mut(&to_bb).unwrap().insert(bb);
  3,273,374 ( 0.01%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/set.rs:std::collections::hash::set::HashSet<T,S>::insert (5,497x)
    874,987 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::get_mut (5,497x)
          .                       }
     26,089 ( 0.00%)              succ.insert(bb, dfg[term].blocks().iter().cloned().collect());
  1,960,112 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::insert (3,727x)
  2,764,237 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/traits/iterator.rs:core::iter::traits::iterator::Iterator::collect (3,727x)
          .                   }
        294 ( 0.00%)          Self { pred, succ }
        112 ( 0.00%)      }
          .           
          .               /// Compute the temporal predecessor table for a process.
          .               ///
          .               /// This is a special form of predecessor table which ignores edges in the
          .               /// CFG that cross a temporal instruction. As such all connected blocks in
          .               /// the table are guaranteed to execute within the same instant of time.
         50 ( 0.00%)      pub fn new_temporal(dfg: &DataFlowGraph, layout: &FunctionLayout) -> Self {
          .                   let mut pred = HashMap::new();
          .                   let mut succ = HashMap::new();
          .                   for bb in layout.blocks() {
      6,260 ( 0.00%)              pred.insert(bb, HashSet::new());
    658,540 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::insert (1,252x)
          .                   }
          .                   for bb in layout.blocks() {
          .                       let term = layout.terminator(bb);
          .                       if !dfg[term].opcode().is_temporal() {
      3,741 ( 0.00%)                  for to_bb in dfg[term].blocks() {
     14,568 ( 0.00%)                      pred.get_mut(&to_bb).unwrap().insert(bb);
  1,085,811 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/set.rs:std::collections::hash::set::HashSet<T,S>::insert (1,821x)
    289,812 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::get_mut (1,821x)
          .                           }
      8,729 ( 0.00%)                  succ.insert(bb, dfg[term].blocks().iter().cloned().collect());
    612,768 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::insert (1,247x)
    918,727 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/traits/iterator.rs:core::iter::traits::iterator::Iterator::collect (1,247x)
          .                       }
          .                   }
        105 ( 0.00%)          Self { pred, succ }
         40 ( 0.00%)      }
          .           
          .               /// Get the predecessors of a block.
          .               pub fn pred_set(&self, bb: Block) -> &HashSet<Block> {
          .                   &self.pred[&bb]
          .               }
          .           
          .               /// Get the successors of a block.
          .               pub fn succ_set(&self, bb: Block) -> &HashSet<Block> {
          .                   &self.succ[&bb]
          .               }
          .           
          .               /// Get the predecessors of a block.
    825,228 ( 0.00%)      pub fn pred(&self, bb: Block) -> impl Iterator<Item = Block> + Clone + '_ {
          .                   self.pred[&bb].iter().cloned()
    550,152 ( 0.00%)      }
          .           
          .               /// Get the successors of a block.
     28,424 ( 0.00%)      pub fn succ(&self, bb: Block) -> impl Iterator<Item = Block> + Clone + '_ {
      7,686 ( 0.00%)          self.succ[&bb].iter().cloned()
     28,424 ( 0.00%)      }
          .           
          .               /// Check if a block is the sole predecessor of another block.
     54,510 ( 0.00%)      pub fn is_sole_pred(&self, bb: Block, pred_of: Block) -> bool {
          .                   self.pred(pred_of).all(|x| x == bb)
     36,340 ( 0.00%)      }
          .           
          .               /// Check if a block is the sole successor of another block.
      2,900 ( 0.00%)      pub fn is_sole_succ(&self, bb: Block, succ_of: Block) -> bool {
          .                   self.succ(succ_of).all(|x| x == bb)
      2,320 ( 0.00%)      }
          .           }
          .           
          .           /// A block dominator tree.
          .           ///
          .           /// Records for every block which other blocks in the CFG *have* to be traversed
          .           /// to reach it. And vice versa, which blocks a block precedeces in all cases.
          .           #[derive(Debug, Clone)]
          .           pub struct DominatorTree {
-- line 307 ----------------------------------------
-- line 308 ----------------------------------------
          .               /// Map from a block to the blocks it dominates.
          .               dominates: HashMap<Block, HashSet<Block>>,
          .               /// Map from a block to the blocks that dominate it.
          .               dominated: HashMap<Block, HashSet<Block>>,
          .           }
          .           
          .           impl DominatorTree {
          .               /// Compute the dominator tree of a function or process.
        100 ( 0.00%)      pub fn new(layout: &FunctionLayout, pred: &PredecessorTable) -> Self {
          .                   // This is a pretty inefficient implementation, but it gets the job done
          .                   // for now.
          .                   let all_blocks: HashSet<Block> = layout.blocks().collect();
          .                   let mut dominated = HashMap::<Block, HashSet<Block>>::new();
          .           
          .                   // Dominator of the entry block is the block itself.
          .                   let entry_bb = layout.entry();
         20 ( 0.00%)          dominated.insert(entry_bb, Some(entry_bb).into_iter().collect());
      4,450 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::insert (10x)
          .           
          .                   // For all other blocks, set all blocks as the dominators.
          .                   for &bb in all_blocks.iter().filter(|&&bb| bb != entry_bb) {
     13,775 ( 0.00%)              dominated.insert(bb, all_blocks.clone());
  1,418,493 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::insert (2,755x)
          .                   }
          .           
          .                   // Iteratively eliminate nodes that are not dominators.
          .                   loop {
          .                       let mut changes = false;
    165,540 ( 0.00%)              for &bb in all_blocks.iter().filter(|&&bb| bb != entry_bb) {
          .                           // Intersect all Dom(p), where p in pred(bb).
          .                           let mut isect = HashMap::<Block, usize>::new();
 42,449,611 ( 0.07%)                  for &p in pred.pred(bb).flat_map(|p| dominated[&p].iter()) {
210,592,655 ( 0.36%)                      *isect.entry(p).or_insert_with(Default::default) += 1;
14,486,430,096 (25.04%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::entry (42,118,531x)
          .                           }
    662,160 ( 0.00%)                  let isect = isect
          .                               .into_iter()
 86,550,894 ( 0.15%)                      .filter(|&(_, c)| c == pred.pred_set(bb).len())
          .                               .map(|(bb, _)| bb);
          .           
          .                           // Add the block back in an update the entry Dom(bb).
    165,540 ( 0.00%)                  let new_dom: HashSet<Block> = isect.chain(once(bb)).collect();
          .                           if dominated[&bb] != new_dom {
          .                               changes |= true;
     36,673 ( 0.00%)                      dominated.insert(bb, new_dom);
    556,164 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::insert (2,821x)
          .                           }
          .                       }
      1,196 ( 0.00%)              if !changes {
          .                           break;
          .                       }
          .                   }
          .           
          .                   // Invert the tree.
          .                   let mut dominates: HashMap<Block, HashSet<Block>> =
          .                       all_blocks.iter().map(|&bb| (bb, HashSet::new())).collect();
     11,060 ( 0.00%)          for (&bb, dom) in &dominated {
    341,118 ( 0.00%)              for d in dom {
  1,193,913 ( 0.00%)                  dominates.get_mut(d).unwrap().insert(bb);
 71,966,691 ( 0.12%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/set.rs:std::collections::hash::set::HashSet<T,S>::insert (170,559x)
 27,158,519 ( 0.05%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::get_mut (170,559x)
          .                       }
          .                   }
          .           
         80 ( 0.00%)          Self {
         90 ( 0.00%)              dominates,
          .                       dominated,
          .                   }
         90 ( 0.00%)      }
          .           
          .               /// Check if a block dominates another.
      6,810 ( 0.00%)      pub fn dominates(&self, dominator: Block, follower: Block) -> bool {
      1,362 ( 0.00%)          self.dominates
    222,535 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6b6fd461a030e4b5E.llvm.9596227050773274023 (1,362x)
          .                       .get(&dominator)
      4,086 ( 0.00%)              .map(|d| d.contains(&follower))
    211,330 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/set.rs:std::collections::hash::set::HashSet<T,S>::contains (1,362x)
          .                       .unwrap_or(false)
      5,448 ( 0.00%)      }
          .           
          .               /// Get the dominators of a block.
     24,290 ( 0.00%)      pub fn dominators(&self, follower: Block) -> &HashSet<Block> {
     12,145 ( 0.00%)          &self.dominated[&follower]
     24,290 ( 0.00%)      }
          .           
          .               /// Get the followers of a block, i.e. the blocks it dominates.
      6,438 ( 0.00%)      pub fn dominated_by(&self, dominator: Block) -> &HashSet<Block> {
          .                   &self.dominates[&dominator]
      4,292 ( 0.00%)      }
          .           }

184,957,242 ( 0.32%)  <counts for unidentified lines in src/pass/gcse.rs>

--------------------------------------------------------------------------------
-- Auto-annotated source: src/ir/inst.rs
--------------------------------------------------------------------------------
Ir                   

-- line 17 ----------------------------------------
          .           pub struct InstBuilder<B> {
          .               builder: B,
          .               name: Option<String>,
          .           }
          .           
          .           impl<B> InstBuilder<B> {
          .               /// Create a new instruction builder that inserts into `builder`.
          .               pub fn new(builder: B) -> Self {
     23,955 ( 0.00%)          Self {
          .                       builder,
          .                       name: None,
          .                   }
          .               }
          .           
          .               /// Assign a name to the instruction being built.
          .               pub fn name(mut self, name: impl Into<String>) -> Self {
          .                   self.name = Some(name.into());
-- line 33 ----------------------------------------
-- line 36 ----------------------------------------
          .           }
          .           
          .           impl<B: UnitBuilder> InstBuilder<&mut B> {
          .               /// Construct the zero value for a type.
          .               ///
          .               /// This is a convenience function that creates the appropriate instruction
          .               /// sequence to generate the given zero value. Note that arrays and structs
          .               /// emit multiple instructions.
         21 ( 0.00%)      pub fn const_zero(&mut self, ty: &Type) -> Value {
          .                   use crate::ty::TypeKind::*;
          .                   match ty.as_ref() {
         12 ( 0.00%)              TimeType => self.const_time(TimeValue::zero()),
          6 ( 0.00%)              IntType(w) => self.const_int(IntValue::zero(*w)),
         18 ( 0.00%)  => /home/fabian/code/llhd/src/value/int.rs:llhd::value::int::IntValue::zero (3x)
          .                       ArrayType(l, ty) => {
          .                           let name = self.name.take();
          .                           let elem = self.const_zero(ty);
          .                           self.name = name;
          .                           self.array_uniform(*l, elem)
          .                       }
          .                       StructType(tys) => {
          .                           let name = self.name.take();
          .                           let elems = tys.iter().map(|ty| self.const_zero(ty)).collect();
          .                           self.name = name;
          .                           self.strukt(elems)
          .                       }
          .                       _ => panic!("no zero value for {}", ty),
          .                   }
         18 ( 0.00%)      }
          .           
      1,808 ( 0.00%)      pub fn const_int(&mut self, value: impl Into<IntValue>) -> Value {
      2,744 ( 0.00%)          let value = value.into();
        444 ( 0.00%)          let ty = value.ty();
        762 ( 0.00%)  => /home/fabian/code/llhd/src/value/int.rs:llhd::value::int::IntValue::ty (3x)
      3,584 ( 0.00%)          let data = InstData::ConstInt {
          .                       opcode: Opcode::ConstInt,
          .                       imm: value,
          .                   };
      9,844 ( 0.00%)          let inst = self.build(data, ty);
  1,708,471 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (452x)
          .                   self.inst_result(inst)
      1,808 ( 0.00%)      }
          .           
          3 ( 0.00%)      pub fn const_time(&mut self, value: impl Into<TimeValue>) -> Value {
         10 ( 0.00%)          let value = value.into();
          .                   let ty = value.ty();
         10 ( 0.00%)          let data = InstData::ConstTime {
          .                       opcode: Opcode::ConstTime,
          .                       imm: value,
          .                   };
         17 ( 0.00%)          let inst = self.build(data, ty);
      2,487 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (1x)
          .                   self.inst_result(inst)
          3 ( 0.00%)      }
          .           
          .               pub fn alias(&mut self, x: Value) -> Value {
          .                   let ty = self.value_type(x);
          .                   let inst = self.build_unary(Opcode::Alias, ty, x);
          .                   self.inst_result(inst)
          .               }
          .           
          .               pub fn array_uniform(&mut self, imm: usize, x: Value) -> Value {
-- line 93 ----------------------------------------
-- line 98 ----------------------------------------
          .                           imms: [imm],
          .                           args: [x],
          .                       },
          .                       ty,
          .                   );
          .                   self.inst_result(inst)
          .               }
          .           
     14,160 ( 0.00%)      pub fn array(&mut self, args: Vec<Value>) -> Value {
      2,360 ( 0.00%)          assert!(!args.is_empty());
      9,437 ( 0.00%)          let ty = array_ty(args.len(), self.value_type(args[0]));
    193,184 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::array_ty (2,359x)
      9,439 ( 0.00%)          let inst = self.build(
  5,807,307 ( 0.01%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17ha292c40f3942ce9aE.llvm.2025656437333679551 (2,359x)
      1,624 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (1x)
     16,520 ( 0.00%)              InstData::Aggregate {
          .                           opcode: Opcode::Array,
          .                           args: args,
          .                       },
          .                       ty,
          .                   );
          .                   self.inst_result(inst)
          6 ( 0.00%)      }
          .           
          .               pub fn strukt(&mut self, args: Vec<Value>) -> Value {
          .                   let ty = struct_ty(
          .                       args.iter()
          .                           .cloned()
          .                           .map(|arg| self.value_type(arg))
          .                           .collect(),
          .                   );
-- line 125 ----------------------------------------
-- line 128 ----------------------------------------
          .                           opcode: Opcode::Struct,
          .                           args: args,
          .                       },
          .                       ty,
          .                   );
          .                   self.inst_result(inst)
          .               }
          .           
          5 ( 0.00%)      pub fn not(&mut self, x: Value) -> Value {
          .                   let ty = self.value_type(x);
          .                   let inst = self.build_unary(Opcode::Not, ty, x);
          .                   self.inst_result(inst)
          4 ( 0.00%)      }
          .           
          .               pub fn neg(&mut self, x: Value) -> Value {
          .                   let ty = self.value_type(x);
          .                   let inst = self.build_unary(Opcode::Neg, ty, x);
          .                   self.inst_result(inst)
          .               }
          .           
          .               pub fn add(&mut self, x: Value, y: Value) -> Value {
-- line 148 ----------------------------------------
-- line 152 ----------------------------------------
          .               }
          .           
          .               pub fn sub(&mut self, x: Value, y: Value) -> Value {
          .                   let ty = self.value_type(x);
          .                   let inst = self.build_binary(Opcode::Sub, ty, x, y);
          .                   self.inst_result(inst)
          .               }
          .           
      3,038 ( 0.00%)      pub fn and(&mut self, x: Value, y: Value) -> Value {
          .                   let ty = self.value_type(x);
          .                   let inst = self.build_binary(Opcode::And, ty, x, y);
          .                   self.inst_result(inst)
      2,170 ( 0.00%)      }
          .           
      2,919 ( 0.00%)      pub fn or(&mut self, x: Value, y: Value) -> Value {
          .                   let ty = self.value_type(x);
          .                   let inst = self.build_binary(Opcode::Or, ty, x, y);
          .                   self.inst_result(inst)
      2,085 ( 0.00%)      }
          .           
          .               pub fn xor(&mut self, x: Value, y: Value) -> Value {
          .                   let ty = self.value_type(x);
          .                   let inst = self.build_binary(Opcode::Xor, ty, x, y);
          .                   self.inst_result(inst)
          .               }
          .           
          .               pub fn smul(&mut self, x: Value, y: Value) -> Value {
-- line 178 ----------------------------------------
-- line 274 ----------------------------------------
          .               }
          .           
          .               pub fn shl(&mut self, x: Value, y: Value, z: Value) -> Value {
          .                   let ty = self.value_type(x);
          .                   let inst = self.build_ternary(Opcode::Shl, ty, x, y, z);
          .                   self.inst_result(inst)
          .               }
          .           
         27 ( 0.00%)      pub fn shr(&mut self, x: Value, y: Value, z: Value) -> Value {
          .                   let ty = self.value_type(x);
          .                   let inst = self.build_ternary(Opcode::Shr, ty, x, y, z);
          .                   self.inst_result(inst)
         18 ( 0.00%)      }
          .           
     21,238 ( 0.00%)      pub fn mux(&mut self, x: Value, y: Value) -> Value {
      2,360 ( 0.00%)          let ty = self.value_type(x);
      9,437 ( 0.00%)          assert!(ty.is_array(), "argument to `mux` must be of array type");
      7,077 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::TypeKind::is_array (2,359x)
      7,078 ( 0.00%)          let ty = ty.unwrap_array().1.clone();
     21,231 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::TypeKind::unwrap_array (2,359x)
          .                   let inst = self.build_binary(Opcode::Mux, ty, x, y);
          .                   self.inst_result(inst)
     18,878 ( 0.00%)      }
          .           
          .               pub fn reg(&mut self, x: Value, data: Vec<(Value, RegMode, Value)>) -> Value {
          .                   let ty = self.value_type(x);
          .                   let mut args = vec![x];
          .                   let mut modes = vec![];
          .                   args.extend(data.iter().map(|x| x.0));
          .                   args.extend(data.iter().map(|x| x.2));
          .                   modes.extend(data.iter().map(|x| x.1));
-- line 302 ----------------------------------------
-- line 320 ----------------------------------------
          .                           args: [x, y],
          .                           imms: [imm, 0],
          .                       },
          .                       ty,
          .                   );
          .                   self.inst_result(inst)
          .               }
          .           
         99 ( 0.00%)      pub fn ins_slice(&mut self, x: Value, y: Value, imm0: usize, imm1: usize) -> Value {
          .                   let ty = self.value_type(x);
         30 ( 0.00%)          let inst = self.build(
     16,222 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (9x)
         99 ( 0.00%)              InstData::InsExt {
          .                           opcode: Opcode::InsSlice,
          .                           args: [x, y],
          .                           imms: [imm0, imm1],
          .                       },
          .                       ty,
          .                   );
          .                   self.inst_result(inst)
         63 ( 0.00%)      }
          .           
          .               pub fn ext_field(&mut self, x: Value, imm: usize) -> Value {
          .                   let ty = with_unpacked_sigptr(self.value_type(x), |ty| {
          .                       if ty.is_struct() {
          .                           let fields = ty.unwrap_struct();
          .                           assert!(imm < fields.len(), "field index in `extf` out of range");
          .                           fields[imm].clone()
          .                       } else if ty.is_array() {
-- line 347 ----------------------------------------
-- line 356 ----------------------------------------
          .                           args: [x, Value::invalid()],
          .                           imms: [imm, 0],
          .                       },
          .                       ty,
          .                   );
          .                   self.inst_result(inst)
          .               }
          .           
        165 ( 0.00%)      pub fn ext_slice(&mut self, x: Value, imm0: usize, imm1: usize) -> Value {
        111 ( 0.00%)          let ty = with_unpacked_sigptr(self.value_type(x), |ty| {
         42 ( 0.00%)              if ty.is_array() {
         18 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::TypeKind::is_array (6x)
          .                           array_ty(imm1, ty.unwrap_array().1.clone())
         24 ( 0.00%)              } else if ty.is_int() {
         18 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::TypeKind::is_int (6x)
         18 ( 0.00%)                  int_ty(imm1)
      1,287 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::int_ty (6x)
          .                       } else {
          .                           panic!("argument to `exts` must be of array or integer type");
          .                       }
         90 ( 0.00%)          });
         51 ( 0.00%)          let inst = self.build(
     32,965 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17ha292c40f3942ce9aE.llvm.2025656437333679551 (6x)
     18,623 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (9x)
         90 ( 0.00%)              InstData::InsExt {
          .                           opcode: Opcode::ExtSlice,
          6 ( 0.00%)                  args: [x, Value::invalid()],
         12 ( 0.00%)  => /home/fabian/code/llhd/src/ir/mod.rs:llhd::ir::Block::invalid (6x)
          .                           imms: [imm0, imm1],
          .                       },
          .                       ty,
          .                   );
          .                   self.inst_result(inst)
         72 ( 0.00%)      }
          .           
          .               pub fn con(&mut self, x: Value, y: Value) -> Inst {
          .                   self.build_binary(Opcode::Con, void_ty(), x, y)
          .               }
          .           
          .               pub fn del(&mut self, x: Value, y: Value) -> Inst {
          .                   let ty = self.value_type(x);
          .                   self.build_binary(Opcode::Del, ty, x, y)
-- line 391 ----------------------------------------
-- line 416 ----------------------------------------
          .           
          .               pub fn sig(&mut self, x: Value) -> Value {
          .                   let ty = self.value_type(x);
          .                   let ty = if ty.is_signal() { ty } else { signal_ty(ty) };
          .                   let inst = self.build_unary(Opcode::Sig, ty, x);
          .                   self.inst_result(inst)
          .               }
          .           
         50 ( 0.00%)      pub fn prb(&mut self, x: Value) -> Value {
         10 ( 0.00%)          let ty = self.value_type(x);
         10 ( 0.00%)          assert!(ty.is_signal(), "argument to `prb` must be of signal type");
         10 ( 0.00%)          let ty = ty.unwrap_signal().clone();
          .                   let inst = self.build_unary(Opcode::Prb, ty, x);
          .                   self.inst_result(inst)
         50 ( 0.00%)      }
          .           
          .               pub fn drv(&mut self, x: Value, y: Value, z: Value) -> Inst {
      2,099 ( 0.00%)          self.build_ternary(Opcode::Drv, void_ty(), x, y, z)
    144,831 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::void_ty (2,099x)
          .               }
          .           
          .               pub fn var(&mut self, x: Value) -> Value {
          .                   let ty = pointer_ty(self.value_type(x));
          .                   let inst = self.build_unary(Opcode::Var, ty, x);
          .                   self.inst_result(inst)
          .               }
          .           
-- line 441 ----------------------------------------
-- line 458 ----------------------------------------
          .               pub fn ret(&mut self) -> Inst {
          .                   self.build_nullary(Opcode::Ret)
          .               }
          .           
          .               pub fn ret_value(&mut self, x: Value) -> Inst {
          .                   self.build_unary(Opcode::RetValue, void_ty(), x)
          .               }
          .           
        620 ( 0.00%)      pub fn phi(&mut self, args: Vec<Value>, bbs: Vec<Block>) -> Value {
        291 ( 0.00%)          assert!(args.len() > 0);
        409 ( 0.00%)          assert_eq!(args.len(), bbs.len());
         97 ( 0.00%)          let ty = self.value_type(args[0]);
        388 ( 0.00%)          let data = InstData::Phi {
          .                       opcode: Opcode::Phi,
          .                       args,
          .                       bbs,
          .                   };
      1,434 ( 0.00%)          let inst = self.build(data, ty);
     99,146 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17ha292c40f3942ce9aE.llvm.2025656437333679551 (38x)
     97,502 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (59x)
          .                   self.inst_result(inst)
        295 ( 0.00%)      }
          .           
          .               pub fn br(&mut self, bb: Block) -> Inst {
          .                   let data = InstData::Jump {
          .                       opcode: Opcode::Br,
          .                       bbs: [bb],
          .                   };
      2,837 ( 0.00%)          self.build(data, void_ty())
      1,294 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17ha292c40f3942ce9aE.llvm.2025656437333679551 (1x)
         69 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::void_ty (1x)
          .               }
          .           
          .               pub fn br_cond(&mut self, x: Value, bb0: Block, bb1: Block) -> Inst {
        531 ( 0.00%)          let data = InstData::Branch {
          .                       opcode: Opcode::BrCond,
          .                       args: [x],
          .                       bbs: [bb0, bb1],
          .                   };
        885 ( 0.00%)          self.build(data, void_ty())
    307,750 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (177x)
          .               }
          .           
          .               pub fn wait(&mut self, bb: Block, args: Vec<Value>) -> Inst {
          .                   let data = InstData::Wait {
          .                       opcode: Opcode::Wait,
          .                       bbs: [bb],
          .                       args: args,
          .                   };
          8 ( 0.00%)          self.build(data, void_ty())
      1,283 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (1x)
          .               }
          .           
          .               pub fn wait_time(&mut self, bb: Block, time: Value, mut args: Vec<Value>) -> Inst {
          .                   args.insert(0, time);
          .                   let data = InstData::Wait {
          .                       opcode: Opcode::WaitTime,
          .                       bbs: [bb],
          .                       args: args,
-- line 510 ----------------------------------------
-- line 519 ----------------------------------------
          .               fn build_nullary(&mut self, opcode: Opcode) -> Inst {
          .                   let data = InstData::Nullary { opcode };
          .                   self.build(data, void_ty())
          .               }
          .           
          .               /// `a = opcode type x`
          .               fn build_unary(&mut self, opcode: Opcode, ty: Type, x: Value) -> Inst {
          .                   let data = InstData::Unary { opcode, args: [x] };
         55 ( 0.00%)          self.build(data, ty)
     35,998 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (10x)
          .               }
          .           
          .               /// `a = opcode type x, y`
          .               fn build_binary(&mut self, opcode: Opcode, ty: Type, x: Value, y: Value) -> Inst {
          .                   let data = InstData::Binary {
          .                       opcode,
          .                       args: [x, y],
          .                   };
     22,283 ( 0.00%)          self.build(data, ty)
  1,058,929 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (417x)
          .               }
          .           
          .               /// `a = opcode type x, y, z`
          .               fn build_ternary(&mut self, opcode: Opcode, ty: Type, x: Value, y: Value, z: Value) -> Inst {
          .                   let data = InstData::Ternary {
          .                       opcode,
          .                       args: [x, y, z],
          .                   };
     25,123 ( 0.00%)          self.build(data, ty)
      4,872 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$5build17h2ba95936e2491901E.llvm.18289095127343064313 (3x)
          .               }
          .           }
          .           
          .           /// Fundamental convenience forwards to the wrapped builder.
          .           impl<B: UnitBuilder> InstBuilder<&mut B> {
          .               /// Convenience forward to `UnitBuilder`.
     82,037 ( 0.00%)      fn build(&mut self, data: InstData, ty: Type) -> Inst {
      7,578 ( 0.00%)          let has_result = !ty.is_void();
     22,734 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::TypeKind::is_void (7,578x)
    162,753 ( 0.00%)          let inst = self.builder.build_inst(data, ty);
 23,639,942 ( 0.04%)  => /home/fabian/code/llhd/src/ir/process.rs:<llhd::ir::process::ProcessBuilder as llhd::ir::unit::UnitBuilder>::build_inst (7,578x)
     20,690 ( 0.00%)          if let Some(name) = self.name.take() {
          .                       if has_result {
          .                           let value = self.inst_result(inst);
          .                           self.builder.dfg_mut().set_name(value, name);
          .                       }
          .                   }
          .                   inst
     69,648 ( 0.00%)      }
          .           
          .               /// Convenience forward to `Unit`.
          .               fn value_type(&self, value: Value) -> Type {
     11,364 ( 0.00%)          self.builder.unit().value_type(value)
      4,718 ( 0.00%)  => /home/fabian/code/llhd/src/ir/process.rs:<llhd::ir::process::ProcessBuilder as llhd::ir::unit::UnitBuilder>::unit (2,359x)
          .               }
          .           
          .               /// Convenience forward to `Unit`.
          .               fn inst_result(&self, inst: Inst) -> Value {
     14,074 ( 0.00%)          self.builder.unit().inst_result(inst)
      4,718 ( 0.00%)  => /home/fabian/code/llhd/src/ir/process.rs:<llhd::ir::process::ProcessBuilder as llhd::ir::unit::UnitBuilder>::unit (2,359x)
          .               }
          .           
          .               /// Assign another value's name plus a suffix to the instruction being
          .               /// built.
          .               ///
          .               /// If `value` has a name, the instruction's name will be
          .               /// `<value>.<suffix>`. Otherwise it will just be `<suffix>`.
          .               pub fn suffix<'a>(mut self, value: Value, suffix: impl Into<Cow<'a, str>>) -> Self {
-- line 579 ----------------------------------------
-- line 584 ----------------------------------------
          .                       Some(suffix.into_owned())
          .                   };
          .                   self
          .               }
          .           }
          .           
          .           /// An instruction format.
          .           #[allow(missing_docs)]
    205,152 ( 0.00%)  #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
          .           pub enum InstData {
          .               /// `a = const iN imm`
      3,195 ( 0.00%)      ConstInt { opcode: Opcode, imm: IntValue },
          .               /// `a = const time imm`
         22 ( 0.00%)      ConstTime { opcode: Opcode, imm: TimeValue },
          .               /// `opcode imm, type x`
          .               Array {
          .                   opcode: Opcode,
          .                   imms: [usize; 1],
          .                   args: [Value; 1],
          .               },
          .               /// `opcode args`
         10 ( 0.00%)      Aggregate { opcode: Opcode, args: Vec<Value> },
          .               /// `opcode`
          .               Nullary { opcode: Opcode },
          .               /// `opcode type x`
         30 ( 0.00%)      Unary { opcode: Opcode, args: [Value; 1] },
          .               /// `opcode type x, y`
      6,448 ( 0.00%)      Binary { opcode: Opcode, args: [Value; 2] },
          .               /// `opcode type x, y, z`
         18 ( 0.00%)      Ternary { opcode: Opcode, args: [Value; 3] },
          .               /// `opcode bb`
          .               Jump { opcode: Opcode, bbs: [Block; 1] },
          .               /// `opcode type [x, bb],*`
          .               Phi {
        431 ( 0.00%)          opcode: Opcode,
          2 ( 0.00%)          args: Vec<Value>,
          .                   bbs: Vec<Block>,
          .               },
          .               /// `opcode x, bb0, bb1`
          .               Branch {
          .                   opcode: Opcode,
          .                   args: [Value; 1],
          .                   bbs: [Block; 2],
          .               },
-- line 627 ----------------------------------------
-- line 635 ----------------------------------------
          .               Call {
          .                   opcode: Opcode,
          .                   unit: ExtUnit,
          .                   ins: u16,
          .                   args: Vec<Value>,
          .               },
          .               /// `a = opcode type x, y, imm0, imm1`
          .               InsExt {
        117 ( 0.00%)          opcode: Opcode,
         21 ( 0.00%)          args: [Value; 2],
        102 ( 0.00%)          imms: [usize; 2],
          .               },
          .               /// `a = reg type x (, data mode trigger)*`
          .               Reg {
          .                   opcode: Opcode,
          .                   args: Vec<Value>,
          .                   modes: Vec<RegMode>,
          .               },
          .           }
-- line 653 ----------------------------------------
-- line 667 ----------------------------------------
          .                       InstData::Phi { opcode, .. } => opcode,
          .                       InstData::Jump { opcode, .. } => opcode,
          .                       InstData::Branch { opcode, .. } => opcode,
          .                       InstData::Wait { opcode, .. } => opcode,
          .                       InstData::Call { opcode, .. } => opcode,
          .                       InstData::InsExt { opcode, .. } => opcode,
          .                       InstData::Reg { opcode, .. } => opcode,
          .                   }
    739,637 ( 0.00%)      }
          .           
          .               /// Get the arguments of an instruction.
          .               pub fn args(&self) -> &[Value] {
          .                   match self {
462,718,450 ( 0.80%)              InstData::ConstInt { .. } => &[],
          .                       InstData::ConstTime { .. } => &[],
          .                       InstData::Array { args, .. } => args,
          .                       InstData::Aggregate { args, .. } => args,
          .                       InstData::Nullary { .. } => &[],
          .                       InstData::Unary { args, .. } => args,
      4,354 ( 0.00%)              InstData::Binary { args, .. } => args,
     38,590 ( 0.00%)              InstData::Ternary { args, .. } => args,
          .                       InstData::Phi { args, .. } => args,
          .                       InstData::Jump { .. } => &[],
          .                       InstData::Branch { args, .. } => args,
          .                       InstData::Wait { args, .. } => args,
          .                       InstData::Call { args, .. } => args,
          .                       InstData::InsExt {
    492,165 ( 0.00%)                  opcode: Opcode::ExtField,
          .                           args,
          .                           ..
          .                       }
          .                       | InstData::InsExt {
          .                           opcode: Opcode::ExtSlice,
          .                           args,
          .                           ..
          .                       } => &args[0..1],
          .                       InstData::InsExt { args, .. } => args,
          .                       InstData::Reg { args, .. } => args,
          .                   }
    183,364 ( 0.00%)      }
          .           
          .               /// Mutable access to the arguments of an instruction.
          .               pub fn args_mut(&mut self) -> &mut [Value] {
          .                   match self {
 11,218,583 ( 0.02%)              InstData::ConstInt { .. } => &mut [],
          .                       InstData::ConstTime { .. } => &mut [],
          .                       InstData::Array { args, .. } => args,
          .                       InstData::Aggregate { args, .. } => args,
          .                       InstData::Nullary { .. } => &mut [],
          .                       InstData::Unary { args, .. } => args,
     53,545 ( 0.00%)              InstData::Binary { args, .. } => args,
     23,724 ( 0.00%)              InstData::Ternary { args, .. } => args,
          .                       InstData::Phi { args, .. } => args,
          .                       InstData::Jump { .. } => &mut [],
          .                       InstData::Branch { args, .. } => args,
          .                       InstData::Wait { args, .. } => args,
          .                       InstData::Call { args, .. } => args,
          .                       InstData::InsExt {
    122,135 ( 0.00%)                  opcode: Opcode::ExtField,
          .                           args,
          .                           ..
          .                       }
          .                       | InstData::InsExt {
          .                           opcode: Opcode::ExtSlice,
          .                           args,
          .                           ..
          .                       } => &mut args[0..1],
          .                       InstData::InsExt { args, .. } => args,
          .                       InstData::Reg { args, .. } => args,
          .                   }
    116,035 ( 0.00%)      }
          .           
          .               /// Get the immediates of an instruction.
          .               pub fn imms(&self) -> &[usize] {
          .                   match self {
        522 ( 0.00%)              InstData::ConstInt { .. } => &[],
          .                       InstData::ConstTime { .. } => &[],
          .                       InstData::Array { imms, .. } => imms,
          .                       InstData::Aggregate { .. } => &[],
          .                       InstData::Nullary { .. } => &[],
          .                       InstData::Unary { .. } => &[],
          .                       InstData::Binary { .. } => &[],
          .                       InstData::Ternary { .. } => &[],
          .                       InstData::Phi { .. } => &[],
          .                       InstData::Jump { .. } => &[],
          .                       InstData::Branch { .. } => &[],
          .                       InstData::Wait { .. } => &[],
          .                       InstData::Call { .. } => &[],
          .                       InstData::InsExt {
        635 ( 0.00%)                  opcode: Opcode::InsField,
          .                           imms,
          .                           ..
          .                       }
          .                       | InstData::InsExt {
          .                           opcode: Opcode::ExtField,
          .                           imms,
          .                           ..
          .                       } => &imms[0..1],
         47 ( 0.00%)              InstData::InsExt { imms, .. } => imms,
          .                       InstData::Reg { .. } => &[],
          .                   }
         47 ( 0.00%)      }
          .           
          .               /// Get the input arguments of a call instruction.
          .               pub fn input_args(&self) -> &[Value] {
          .                   match *self {
          .                       InstData::Call { ref args, ins, .. } => &args[0..ins as usize],
          .                       _ => &[],
          .                   }
          .               }
-- line 776 ----------------------------------------
-- line 805 ----------------------------------------
          .                       InstData::Reg { modes, .. } => modes,
          .                       _ => &[],
          .                   }
          .               }
          .           
          .               /// Get the BBs of an instruction.
          .               pub fn blocks(&self) -> &[Block] {
          .                   match self {
  1,109,292 ( 0.00%)              InstData::ConstInt { .. } => &[],
          .                       InstData::ConstTime { .. } => &[],
          .                       InstData::Array { .. } => &[],
          .                       InstData::Aggregate { .. } => &[],
          .                       InstData::Nullary { .. } => &[],
          .                       InstData::Unary { .. } => &[],
          .                       InstData::Binary { .. } => &[],
          .                       InstData::Ternary { .. } => &[],
          .                       InstData::Phi { bbs, .. } => bbs,
          .                       InstData::Jump { bbs, .. } => bbs,
    147,235 ( 0.00%)              InstData::Branch { bbs, .. } => bbs,
          .                       InstData::Wait { bbs, .. } => bbs,
          .                       InstData::Call { .. } => &[],
          .                       InstData::InsExt { .. } => &[],
          .                       InstData::Reg { .. } => &[],
          .                   }
    142,056 ( 0.00%)      }
          .           
          .               /// Mutable access to the BBs of an instruction.
          .               pub fn blocks_mut(&mut self) -> &mut [Block] {
          .                   match self {
  1,504,205 ( 0.00%)              InstData::ConstInt { .. } => &mut [],
          .                       InstData::ConstTime { .. } => &mut [],
          .                       InstData::Array { .. } => &mut [],
          .                       InstData::Aggregate { .. } => &mut [],
          .                       InstData::Nullary { .. } => &mut [],
          .                       InstData::Unary { .. } => &mut [],
          .                       InstData::Binary { .. } => &mut [],
          .                       InstData::Ternary { .. } => &mut [],
          .                       InstData::Phi { bbs, .. } => bbs,
          .                       InstData::Jump { bbs, .. } => bbs,
     97,969 ( 0.00%)              InstData::Branch { bbs, .. } => bbs,
          .                       InstData::Wait { bbs, .. } => bbs,
          .                       InstData::Call { .. } => &mut [],
          .                       InstData::InsExt { .. } => &mut [],
          .                       InstData::Reg { .. } => &mut [],
          .                   }
          .               }
          .           
          .               /// Replace all uses of a value with another.
          .               pub fn replace_value(&mut self, from: Value, to: Value) -> usize {
          .                   let mut count = 0;
    116,035 ( 0.00%)          for arg in self.args_mut() {
  1,193,900 ( 0.00%)  => src/ir/inst.rs:llhd::ir::inst::InstData::args_mut (116,035x)
 36,132,293 ( 0.06%)              if *arg == from {
     20,850 ( 0.00%)                  *arg = to;
      2,531 ( 0.00%)                  count += 1;
          .                       }
          .                   }
          .                   count
      2,398 ( 0.00%)      }
          .           
          .               /// Replace all uses of a block with another.
          .               pub fn replace_block(&mut self, from: Block, to: Block) -> usize {
          .                   let mut count = 0;
          .                   for bb in self.blocks_mut() {
  2,977,460 ( 0.01%)              if *bb == from {
        359 ( 0.00%)                  *bb = to;
        375 ( 0.00%)                  count += 1;
          .                       }
          .                   }
          .                   count
          1 ( 0.00%)      }
          .           
          .               /// Remove all uses of a block.
  1,564,161 ( 0.00%)      pub fn remove_block(&mut self, block: Block) -> usize {
          .                   match self {
  4,692,483 ( 0.01%)              InstData::Phi { bbs, args, .. } => {
          .                           let mut count = 0;
     21,930 ( 0.00%)                  for i in 0..bbs.len() {
    141,468 ( 0.00%)                      if i >= bbs.len() {
          .                                   break;
          .                               }
     46,302 ( 0.00%)                      if bbs[i] == block {
          .                                   bbs.swap_remove(i);
          .                                   args.swap_remove(i);
         58 ( 0.00%)                          count += 1;
          .                               }
          .                           }
          .                           count
          .                       }
          .                       _ => self.replace_block(block, Block::invalid()),
          .                   }
  3,128,322 ( 0.01%)      }
          .           
          .               /// Return the const int constructed by this instruction.
        440 ( 0.00%)      pub fn get_const_int(&self) -> Option<&IntValue> {
          .                   match self {
     10,404 ( 0.00%)              InstData::ConstInt { imm, .. } => Some(imm),
          .                       _ => None,
          .                   }
        440 ( 0.00%)      }
          .           
          .               /// Return the const time constructed by this instruction.
          1 ( 0.00%)      pub fn get_const_time(&self) -> Option<&TimeValue> {
          .                   match self {
          3 ( 0.00%)              InstData::ConstTime { imm, .. } => Some(imm),
          .                       _ => None,
          .                   }
          1 ( 0.00%)      }
          .           
          .               /// Return the external unit being called or instantiated by this
          .               /// instruction.
          .               pub fn get_ext_unit(&self) -> Option<ExtUnit> {
          .                   match self {
          .                       InstData::Call { unit, .. } => Some(*unit),
          .                       _ => None,
          .                   }
          .               }
          .           }
          .           
     22,964 ( 0.00%)  bitflags! {
          .               /// A set of flags identifying a unit.
          .               #[derive(Default, Serialize, Deserialize)]
          .               pub struct UnitFlags: u8 {
          .                   const FUNCTION = 0b001;
          .                   const PROCESS = 0b010;
          .                   const ENTITY = 0b100;
          .                   const ALL = 0b111;
          .               }
-- line 931 ----------------------------------------
-- line 957 ----------------------------------------
          .                   }
          .               }
          .           }
          .           
          .           /// An instruction opcode.
          .           ///
          .           /// This enum represents the actual instruction, whereas `InstData` covers the
          .           /// format and arguments of the instruction.
     24,555 ( 0.00%)  #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
          .           pub enum Opcode {
          .               ConstInt,
          .               ConstTime,
          .               Alias,
          .               ArrayUniform,
          .               Array,
          .               Struct,
          .           
-- line 973 ----------------------------------------
-- line 1027 ----------------------------------------
          .               Phi,
          .               Br,
          .               BrCond,
          .               Wait,
          .               WaitTime,
          .           }
          .           
          .           impl std::fmt::Display for Opcode {
      7,176 ( 0.00%)      fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
      7,176 ( 0.00%)          write!(
  1,380,488 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54//src/libcore/fmt/mod.rs:core::fmt::Formatter::write_fmt (3,588x)
          .                       f,
     10,764 ( 0.00%)              "{}",
          .                       match *self {
     14,352 ( 0.00%)                  Opcode::ConstInt => "const",
          .                           Opcode::ConstTime => "const",
          .                           Opcode::Alias => "alias",
          .                           Opcode::ArrayUniform => "array",
          .                           Opcode::Array => "array",
          .                           Opcode::Struct => "struct",
          .                           Opcode::Not => "not",
          .                           Opcode::Neg => "neg",
          .                           Opcode::Add => "add",
-- line 1048 ----------------------------------------
-- line 1091 ----------------------------------------
          .                           Opcode::RetValue => "ret",
          .                           Opcode::Phi => "phi",
          .                           Opcode::Br => "br",
          .                           Opcode::BrCond => "br",
          .                           Opcode::Wait => "wait",
          .                           Opcode::WaitTime => "wait",
          .                       }
          .                   )
      7,176 ( 0.00%)      }
          .           }
          .           
          .           impl Opcode {
          .               /// Return a set of flags where this instruction is valid.
          .               pub fn valid_in(self) -> UnitFlags {
          .                   match self {
     50,184 ( 0.00%)              Opcode::Halt => UnitFlags::PROCESS,
          .                       Opcode::Wait => UnitFlags::PROCESS,
          .                       Opcode::WaitTime => UnitFlags::PROCESS,
          .                       Opcode::Ret => UnitFlags::FUNCTION,
          .                       Opcode::RetValue => UnitFlags::FUNCTION,
          .                       Opcode::Phi => UnitFlags::FUNCTION | UnitFlags::PROCESS,
          .                       Opcode::Br => UnitFlags::FUNCTION | UnitFlags::PROCESS,
          .                       Opcode::BrCond => UnitFlags::FUNCTION | UnitFlags::PROCESS,
          .                       Opcode::Con => UnitFlags::ENTITY,
-- line 1114 ----------------------------------------
-- line 1141 ----------------------------------------
          .                       Opcode::ConstTime => true,
          .                       _ => false,
          .                   }
          .               }
          .           
          .               /// Check if this instruction is a phi node.
          .               pub fn is_phi(self) -> bool {
          .                   match self {
  1,110,792 ( 0.00%)              Opcode::Phi => true,
          .                       _ => false,
          .                   }
    555,396 ( 0.00%)      }
          .           
          .               /// Check if this instruction is a terminator.
          .               pub fn is_terminator(self) -> bool {
          .                   match self {
     19,457 ( 0.00%)              Opcode::Halt
          .                       | Opcode::Ret
          .                       | Opcode::RetValue
          .                       | Opcode::Br
          .                       | Opcode::BrCond
          .                       | Opcode::Wait
          .                       | Opcode::WaitTime => true,
          .                       _ => false,
          .                   }
      2,316 ( 0.00%)      }
          .           
          .               /// Check if this is a return instruction.
          .               pub fn is_return(self) -> bool {
          .                   match self {
          .                       Opcode::Ret | Opcode::RetValue => true,
          .                       _ => false,
          .                   }
          .               }
          .           
          .               /// Check if this is a temporal instruction.
          .               pub fn is_temporal(self) -> bool {
          .                   match self {
      5,458 ( 0.00%)              Opcode::Halt | Opcode::Wait | Opcode::WaitTime => true,
          .                       _ => false,
          .                   }
          .               }
          .           }
          .           
          .           impl Inst {
          .               pub fn dump<'a>(
          .                   self,
-- line 1187 ----------------------------------------
-- line 1287 ----------------------------------------
          .                           _ => (),
          .                       }
          .                   }
          .                   Ok(())
          .               }
          .           }
          .           
          .           fn with_unpacked_sigptr(ty: Type, f: impl FnOnce(Type) -> Type) -> Type {
         60 ( 0.00%)      if ty.is_pointer() {
         18 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::TypeKind::is_pointer (6x)
          .                   pointer_ty(f(ty.unwrap_pointer().clone()))
         24 ( 0.00%)      } else if ty.is_signal() {
         18 ( 0.00%)  => /home/fabian/code/llhd/src/ty.rs:llhd::ty::TypeKind::is_signal (6x)
          .                   signal_ty(f(ty.unwrap_signal().clone()))
          .               } else {
         36 ( 0.00%)          f(ty)
      1,491 ( 0.00%)  => src/ir/inst.rs:_ZN4llhd2ir4inst32InstBuilder$LT$$RF$mut$u20$B$GT$9ext_slice28_$u7b$$u7b$closure$u7d$$u7d$17h1f328a54a7cb3107E.llvm.2025656437333679551 (6x)
        783 ( 0.00%)  => src/ir/inst.rs:llhd::ir::inst::InstBuilder<&mut B>::ext_slice::{{closure}} (9x)
          .               }
          .           }

328,835,855 ( 0.57%)  <counts for unidentified lines in src/ir/inst.rs>

--------------------------------------------------------------------------------
-- Auto-annotated source: src/ir/dfg.rs
--------------------------------------------------------------------------------
Ir                   

-- line 13 ----------------------------------------
          .           };
          .           use std::collections::HashMap;
          .           
          .           /// A data flow graph.
          .           ///
          .           /// This is the main container for instructions, values, and the relationship
          .           /// between them. Every `Function`, `Process`, and `Entity` has an associated
          .           /// data flow graph.
         62 ( 0.00%)  #[derive(Default, Serialize, Deserialize)]
          .           pub struct DataFlowGraph {
          .               /// The instructions in the graph.
          .               pub(crate) insts: PrimaryTable<Inst, InstData>,
          .               /// The result values produced by instructions.
          .               pub(crate) results: SecondaryTable<Inst, Value>,
          .               /// The values in the graph.
          .               pub(crate) values: PrimaryTable<Value, ValueData>,
          .               /// The argument values.
-- line 29 ----------------------------------------
-- line 39 ----------------------------------------
          .           }
          .           
          .           impl_table_indexing!(DataFlowGraph, insts, Inst, InstData);
          .           impl_table_indexing!(DataFlowGraph, values, Value, ValueData);
          .           impl_table_indexing!(DataFlowGraph, ext_units, ExtUnit, ExtUnitData);
          .           
          .           impl DataFlowGraph {
          .               /// Create a new data flow graph.
          5 ( 0.00%)      pub fn new() -> Self {
          .                   Default::default()
          6 ( 0.00%)      }
          .           
          .               /// Add a placeholder value.
          .               ///
          .               /// This function is intended to be used when constructing PHI nodes.
          .               pub fn add_placeholder(&mut self, ty: Type) -> Value {
        348 ( 0.00%)          self.values.add(ValueData::Placeholder { ty })
     35,468 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:llhd::table::PrimaryTable<I,V>::add (58x)
          .               }
          .           
          .               /// Remove a placeholder value.
        464 ( 0.00%)      pub fn remove_placeholder(&mut self, value: Value) {
         58 ( 0.00%)          assert!(!self.has_uses(value));
         58 ( 0.00%)          assert!(self[value].is_placeholder());
        464 ( 0.00%)          self.values.remove(value);
     14,049 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:llhd::table::PrimaryTable<I,V>::remove (58x)
          .               }
          .           
          .               /// Check if a value is a placeholder.
          .               pub fn is_placeholder(&self, value: Value) -> bool {
          .                   self[value].is_placeholder()
          .               }
          .           
          .               /// Add an instruction.
          .               pub fn add_inst(&mut self, data: InstData, ty: Type) -> Inst {
    144,830 ( 0.00%)          let inst = self.insts.add(data);
  4,991,119 ( 0.01%)  => /home/fabian/code/llhd/src/table.rs:llhd::table::PrimaryTable<I,V>::add (10,345x)
     10,345 ( 0.00%)          if !ty.is_void() {
     42,240 ( 0.00%)              let result = self.values.add(ValueData::Inst { ty, inst });
  4,319,771 ( 0.01%)  => /home/fabian/code/llhd/src/table.rs:llhd::table::PrimaryTable<I,V>::add (7,040x)
      7,040 ( 0.00%)              self.results.add(inst, result);
          .                   }
          .                   inst
          .               }
          .           
          .               /// Remove an instruction.
     34,192 ( 0.00%)      pub fn remove_inst(&mut self, inst: Inst) {
     12,822 ( 0.00%)          if self.has_result(inst) {
    766,772 ( 0.00%)  => src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::has_result (4,274x)
          .                       let value = self.inst_result(inst);
      1,100 ( 0.00%)              assert!(!self.has_uses(value));
      3,300 ( 0.00%)              self.values.remove(value);
    335,286 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:llhd::table::PrimaryTable<I,V>::remove (1,100x)
          .                   }
     12,822 ( 0.00%)          self.insts.remove(inst);
  1,244,410 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:llhd::table::PrimaryTable<I,V>::remove (4,274x)
     17,096 ( 0.00%)          self.results.remove(inst);
    810,136 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:llhd::table::SecondaryTable<I,V>::remove (4,274x)
     29,918 ( 0.00%)      }
          .           
          .               /// Returns whether an instruction produces a result.
    161,536 ( 0.00%)      pub fn has_result(&self, inst: Inst) -> bool {
          .                   self.results.storage.contains_key(&inst.index())
    161,536 ( 0.00%)      }
          .           
          .               /// Returns the result of an instruction.
     28,719 ( 0.00%)      pub fn inst_result(&self, inst: Inst) -> Value {
     83,293 ( 0.00%)          self.results[inst]
     57,438 ( 0.00%)      }
          .           
          .               /// Returns the value of an argument.
         28 ( 0.00%)      pub fn arg_value(&self, arg: Arg) -> Value {
        140 ( 0.00%)          self.args[arg]
         56 ( 0.00%)      }
          .           
          .               /// Create values for the arguments in a signature.
          9 ( 0.00%)      pub(crate) fn make_args_for_signature(&mut self, sig: &Signature) {
        110 ( 0.00%)          for arg in sig.args() {
        168 ( 0.00%)              let value = self.values.add(ValueData::Arg {
     12,749 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:llhd::table::PrimaryTable<I,V>::add (28x)
          .                           ty: sig.arg_type(arg),
          .                           arg: arg,
          .                       });
          .                       self.args.add(arg, value);
          .                   }
          8 ( 0.00%)      }
          .           
          .               /// Returns the type of a value.
     15,470 ( 0.00%)      pub fn value_type(&self, value: Value) -> Type {
          .                   match &self[value] {
    141,526 ( 0.00%)              ValueData::Inst { ty, .. } => ty.clone(),
          .                       ValueData::Arg { ty, .. } => ty.clone(),
          .                       ValueData::Placeholder { ty, .. } => ty.clone(),
          .                   }
     30,940 ( 0.00%)      }
          .           
          .               /// Returns the type of an instruction.
     51,075 ( 0.00%)      pub fn inst_type(&self, inst: Inst) -> Type {
     30,645 ( 0.00%)          if self.has_result(inst) {
  1,871,949 ( 0.00%)  => src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::has_result (10,215x)
          .                       self.value_type(self.inst_result(inst))
          .                   } else {
          .                       void_ty()
          .                   }
     40,860 ( 0.00%)      }
          .           
          .               /// Return the instruction that produces `value`.
      5,003 ( 0.00%)      pub fn get_value_inst(&self, value: Value) -> Option<Inst> {
          .                   match self[value] {
     30,696 ( 0.00%)              ValueData::Inst { inst, .. } => Some(inst),
          .                       _ => None,
          .                   }
     15,009 ( 0.00%)      }
          .           
          .               /// Return the instruction that produces `value`, or panic.
        962 ( 0.00%)      pub fn value_inst(&self, value: Value) -> Inst {
          .                   match self.get_value_inst(value) {
      2,309 ( 0.00%)              Some(inst) => inst,
          .                       None => panic!("value {} not the result of an instruction", value),
          .                   }
        962 ( 0.00%)      }
          .           
          .               /// Return the name of a value.
     38,844 ( 0.00%)      pub fn get_name(&self, value: Value) -> Option<&str> {
          .                   self.names.get(&value).map(AsRef::as_ref)
     32,370 ( 0.00%)      }
          .           
          .               /// Set the name of a value.
        306 ( 0.00%)      pub fn set_name(&mut self, value: Value, name: String) {
         34 ( 0.00%)          self.names.insert(value, name);
        272 ( 0.00%)      }
          .           
          .               /// Clear the name of a value.
          .               pub fn clear_name(&mut self, value: Value) -> Option<String> {
          .                   self.names.remove(&value)
          .               }
          .           
          .               /// Return the anonymous name hint of a value.
          .               pub fn get_anonymous_hint(&self, value: Value) -> Option<u32> {
          .                   self.anonymous_hints.get(&value).cloned()
          .               }
          .           
          .               /// Set the anonymous name hint of a value.
     18,220 ( 0.00%)      pub fn set_anonymous_hint(&mut self, value: Value, hint: u32) {
      1,822 ( 0.00%)          self.anonymous_hints.insert(value, hint);
     14,576 ( 0.00%)      }
          .           
          .               /// Clear the anonymous name hint of a value.
          .               pub fn clear_anonymous_hint(&mut self, value: Value) -> Option<u32> {
          .                   self.anonymous_hints.remove(&value)
          .               }
          .           
          .               /// Replace all uses of a value with another.
          .               ///
          .               /// Returns how many uses were replaced.
      4,548 ( 0.00%)      pub fn replace_use(&mut self, from: Value, to: Value) -> usize {
          .                   let mut count = 0;
          .                   for inst in self.insts.storage.values_mut() {
  3,463,184 ( 0.01%)              count += inst.replace_value(from, to);
          .                   }
          .                   count
      5,685 ( 0.00%)      }
          .           
          .               /// Iterate over all uses of a value.
    141,220 ( 0.00%)      pub fn uses(&self, value: Value) -> impl Iterator<Item = (Inst, usize)> {
          .                   let mut uses = vec![];
          .                   for inst in self.insts.keys() {
          .                       for (i, arg) in self[inst].args().iter().cloned().enumerate() {
118,282,127 ( 0.20%)                  if arg == value {
          .                               uses.push((inst, i));
          .                           }
          .                       }
          .                   }
          .                   uses.into_iter()
    112,976 ( 0.00%)      }
          .           
          .               /// Check if a value is used.
     77,748 ( 0.00%)      pub fn has_uses(&self, value: Value) -> bool {
     43,506 ( 0.00%)          self.uses(value).count() > 0
14,628,910,671 (25.29%)  => src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::uses (12,958x)
     51,832 ( 0.00%)      }
          .           
          .               /// Check if a value has exactly one use.
          .               pub fn has_one_use(&self, value: Value) -> bool {
          .                   self.uses(value).count() == 1
          .               }
          .           
          .               /// Replace all uses of a block with another.
          .               ///
          .               /// Returns how many blocks were replaced.
      1,268 ( 0.00%)      pub fn replace_block_use(&mut self, from: Block, to: Block) -> usize {
          .                   let mut count = 0;
          .                   for inst in self.insts.storage.values_mut() {
  1,504,199 ( 0.00%)              count += inst.replace_block(from, to);
          .                   }
          .                   count
      1,585 ( 0.00%)      }
          .           
          .               /// Remove all uses of a block.
          .               ///
          .               /// Replaces all uses of the block with an invalid block placeholder, and
          .               /// removes phi node entries for the block.
          .               ///
          .               /// Returns how many blocks were replaced.
          .               pub fn remove_block_use(&mut self, block: Block) -> usize {
          .                   let mut count = 0;
          .                   for inst in self.insts.storage.values_mut() {
  3,128,322 ( 0.01%)              count += inst.remove_block(block);
 20,147,587 ( 0.03%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::remove_block (1,564,161x)
          .                   }
          .                   count
          .               }
          .           
          .               /// Resolve a constant value.
          .               ///
          .               /// Returns `None` if the value is not constant. Note that this *does not*
          .               /// perform constant folding. Rather, the value must resolve to an
-- line 243 ----------------------------------------
-- line 264 ----------------------------------------
          .                   self[inst].get_const_time()
          .               }
          .           
          .               /// Resolve a constant integer value.
          .               ///
          .               /// Returns `None` if the value is not constant. Note that this *does not*
          .               /// perform constant folding. Rather, the value must resolve to an
          .               /// instruction which produces a constant value.
      6,076 ( 0.00%)      pub fn get_const_int(&self, value: Value) -> Option<&crate::IntValue> {
      3,038 ( 0.00%)          let inst = self.get_value_inst(value)?;
          .                   self[inst].get_const_int()
      6,076 ( 0.00%)      }
          .           
          .               /// Resolve a constant array value.
          .               ///
          .               /// Returns `None` if the value is not constant. Note that this *does not*
          .               /// perform constant folding. Rather, the value must resolve to an
          .               /// instruction which produces a constant value.
          .               pub fn get_const_array(&self, value: Value) -> Option<crate::ArrayValue> {
          .                   use super::Opcode;
-- line 283 ----------------------------------------
-- line 318 ----------------------------------------
          .                       }
          .                       _ => None,
          .                   }
          .               }
          .           
          .               /// Add a location hint to an instruction.
          .               ///
          .               /// Annotates the byte offset of an instruction in the input file.
     27,670 ( 0.00%)      pub fn set_location_hint(&mut self, inst: Inst, loc: usize) {
      2,767 ( 0.00%)          self.location_hints.insert(inst, loc);
     22,136 ( 0.00%)      }
          .           
          .               /// Get the location hint associated with an instruction.
          .               ///
          .               /// Returns the byte offset of the instruction in the input file, or None if there
          .               /// is no hint for the instruction.
          .               pub fn location_hint(&self, inst: Inst) -> Option<usize> {
          .                   self.location_hints.get(&inst).cloned()
          .               }
-- line 336 ----------------------------------------

291,197,850 ( 0.50%)  <counts for unidentified lines in src/ir/dfg.rs>

--------------------------------------------------------------------------------
-- Auto-annotated source: src/table.rs
--------------------------------------------------------------------------------
Ir                   

-- line 22 ----------------------------------------
          .           
          .           /// Generate a new opaque table key struct.
          .           #[macro_export]
          .           macro_rules! impl_table_key {
          .               ($($(#[$m:meta])* struct $name:ident($ity:ty) as $display_prefix:expr;)*) => {
          .                   $(
          .                       $(#[$m])*
          .                       #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
303,565,678 ( 0.52%)              pub struct $name($ity);
          .           
          .                       impl std::fmt::Display for $name {
          .                           fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
          .                               write!(f, "{}{}", $display_prefix, self.0)
          .                           }
          .                       }
          .           
          .                       impl std::fmt::Debug for $name {
-- line 38 ----------------------------------------
-- line 42 ----------------------------------------
          .                       }
          .           
          .                       impl $crate::table::TableKey for $name {
          .                           fn new(index: usize) -> Self {
          .                               $name(index as $ity)
          .                           }
          .           
          .                           fn index(self) -> usize {
 67,795,327 ( 0.12%)                      self.0 as usize
          .                           }
          .                       }
          .                   )*
          .               };
          .           }
          .           
          .           /// Generate the `Index` and `IndexMut` operations for a contained table.
          .           #[macro_export]
          .           macro_rules! impl_table_indexing {
          .               ($target:path, $($field:ident).+, $key:ty, $value:ty) => {
          .                   impl std::ops::Index<$key> for $target {
          .                       type Output = $value;
          .           
          .                       fn index(&self, idx: $key) -> &$value {
 67,053,042 ( 0.12%)                  &self.$($field).*[idx]
      8,464 ( 0.00%)  => src/table.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::Index<I>>::index (46x)
          .                       }
          .                   }
          .           
          .                   impl std::ops::IndexMut<$key> for $target {
          .                       fn index_mut(&mut self, idx: $key) -> &mut $value {
      3,615 ( 0.00%)                  &mut self.$($field).*[idx]
    443,815 ( 0.00%)  => src/table.rs:<llhd::table::PrimaryTable<I,V> as core::ops::index::IndexMut<I>>::index_mut (2,399x)
          .                       }
          .                   }
          .               };
          .           }
          .           
          .           /// A primary table that provides dense key-based storage.
          .           #[derive(Clone, Serialize, Deserialize)]
          .           pub struct PrimaryTable<I, V> {
-- line 79 ----------------------------------------
-- line 80 ----------------------------------------
          .               next: usize,
          .               pub(crate) storage: HashMap<usize, V>,
          .               unused: PhantomData<I>,
          .           }
          .           
          .           impl<I, V> PrimaryTable<I, V> {
          .               /// Create a new primary table.
          .               pub fn new() -> Self {
         38 ( 0.00%)          Self {
          .                       next: 0,
          .                       storage: Default::default(),
          .                       unused: PhantomData,
          .                   }
          .               }
          .           }
          .           
          .           impl<I, V> Default for PrimaryTable<I, V> {
-- line 96 ----------------------------------------
-- line 98 ----------------------------------------
          .                   PrimaryTable::new()
          .               }
          .           }
          .           
          .           impl<I: TableKey, V> PrimaryTable<I, V> {
          .               /// Add a new entry to the table.
          .               ///
          .               /// Returns the key under which the entry can be accessed again.
    143,368 ( 0.00%)      pub fn add(&mut self, value: V) -> I {
     17,921 ( 0.00%)          let index = self.next;
     35,842 ( 0.00%)          self.next += 1;
     17,921 ( 0.00%)          self.storage.insert(index, value);
          .                   I::new(index)
    161,288 ( 0.00%)      }
          .           
          .               /// Remove an entry from the table.
          .               ///
          .               /// Panics if the entry does not exist.
     29,035 ( 0.00%)      pub fn remove(&mut self, key: I) {
      4,274 ( 0.00%)          self.storage.remove(&key.index()).expect("key not in table");
     95,900 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/ptr/mod.rs:core::ptr::real_drop_in_place (4,274x)
     29,035 ( 0.00%)      }
          .           
          .               /// Return an iterator over the keys and values in the table.
          .               pub fn iter<'a>(&'a self) -> impl Iterator<Item = (I, &'a V)> + 'a {
          .                   self.storage.iter().map(|(&k, v)| (I::new(k), v))
          .               }
          .           
          .               /// Return an iterator over the keys in the table.
          .               pub fn keys<'a>(&'a self) -> impl Iterator<Item = I> + 'a {
-- line 126 ----------------------------------------
-- line 131 ----------------------------------------
          .               pub fn values<'a>(&'a self) -> impl Iterator<Item = &'a V> + 'a {
          .                   self.storage.values()
          .               }
          .           }
          .           
          .           impl<I: TableKey, V> Index<I> for PrimaryTable<I, V> {
          .               type Output = V;
          .           
267,340,204 ( 0.46%)      fn index(&self, idx: I) -> &V {
          .                   self.storage.get(&idx.index()).expect("key not in table")
267,340,204 ( 0.46%)      }
          .           }
          .           
          .           impl<I: TableKey, V> IndexMut<I> for PrimaryTable<I, V> {
     10,812 ( 0.00%)      fn index_mut(&mut self, idx: I) -> &mut V {
          .                   self.storage
          .                       .get_mut(&idx.index())
          .                       .expect("key not in table")
     10,812 ( 0.00%)      }
          .           }
          .           
          .           /// A secondary table that associates additional information with entries in a
          .           /// primary table.
          .           #[derive(Clone, Serialize, Deserialize)]
          .           pub struct SecondaryTable<I, V> {
          .               pub(crate) storage: HashMap<usize, V>,
          .               unused: PhantomData<I>,
          .           }
          .           
          .           impl<I, V> SecondaryTable<I, V> {
          .               /// Create a new empty table.
          .               pub fn new() -> Self {
      2,965 ( 0.00%)          Self {
          .                       storage: Default::default(),
          .                       unused: PhantomData,
          .                   }
          .               }
          .           }
          .           
          .           impl<I: TableKey, V> SecondaryTable<I, V> {
          .               /// Add an entry to the table.
          .               ///
          .               /// The user must provide the key with which the information is associated.
     72,859 ( 0.00%)      pub fn add(&mut self, key: I, value: V) {
     28,300 ( 0.00%)          if self.storage.insert(key.index(), value).is_some() {
     12,261 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$6insert17hbbd1b058b2caa165E.llvm.6713649935165807986 (28x)
          .                       panic!("key already in table");
          .                   }
     72,859 ( 0.00%)      }
          .           
          .               /// Remove an entry from the table.
     60,927 ( 0.00%)      pub fn remove(&mut self, key: I) -> Option<V> {
          .                   self.storage.remove(&key.index())
     60,927 ( 0.00%)      }
          .           
          .               /// Check whether an entry exists in the table.
          .               pub fn contains(&self, key: I) -> bool {
          .                   self.storage.contains_key(&key.index())
          .               }
          .           
          .               /// Get an entry from the table, if one exists.
          .               pub fn get(&self, key: I) -> Option<&V> {
-- line 191 ----------------------------------------
-- line 203 ----------------------------------------
          .                   SecondaryTable::new()
          .               }
          .           }
          .           
          .           impl<I: TableKey, V> Index<I> for SecondaryTable<I, V> {
          .               type Output = V;
          .           
          .               fn index(&self, idx: I) -> &V {
     41,946 ( 0.00%)          self.storage
      5,208 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:_ZN3std11collections4hash3map24HashMap$LT$K$C$V$C$S$GT$3get17h6d920f5ce7e96d5aE.llvm.6713649935165807986 (28x)
    913,625 ( 0.00%)              .get(&idx.index())
          .                       .expect("key not in secondary table")
          .               }
          .           }
          .           
          .           impl<I: TableKey, V> IndexMut<I> for SecondaryTable<I, V> {
    177,084 ( 0.00%)      fn index_mut(&mut self, idx: I) -> &mut V {
          .                   self.storage
          .                       .get_mut(&idx.index())
          .                       .expect("key not in secondary table")
    177,084 ( 0.00%)      }
          .           }

    806,396 ( 0.00%)  <counts for unidentified lines in src/table.rs>

--------------------------------------------------------------------------------
-- Auto-annotated source: src/pass/cfs.rs
--------------------------------------------------------------------------------
Ir                  

-- line 18 ----------------------------------------
         .           /// - Simplify phi nodes whose values dominate the node
         .           /// - Eliminate phi nodes where the result is constant across all incoming edges
         .           /// - Merge basic blocks with only one successor
         .           ///
         .           pub struct ControlFlowSimplification;
         .           
         .           impl Pass for ControlFlowSimplification {
         .               fn run_on_cfg(ctx: &PassContext, unit: &mut impl UnitBuilder) -> bool {
         9 ( 0.00%)          info!("CFS [{}]", unit.unit().name());
         2 ( 0.00%)  => /home/fabian/code/llhd/src/ir/process.rs:<llhd::ir::process::ProcessBuilder as llhd::ir::unit::UnitBuilder>::unit (1x)
         2 ( 0.00%)  => /home/fabian/code/llhd/src/ir/process.rs:<llhd::ir::process::Process as llhd::ir::unit::Unit>::name (1x)
         .                   let mut modified = false;
         .           
         .                   // Build the predecessor table and dominator tree.
         3 ( 0.00%)          let pt = PredecessorTable::new(unit.dfg(), unit.func_layout());
 1,025,706 ( 0.00%)  => /home/fabian/code/llhd/src/pass/gcse.rs:llhd::pass::gcse::PredecessorTable::new (1x)
         2 ( 0.00%)          let dt = DominatorTree::new(unit.func_layout(), &pt);
2,849,564,830 ( 4.93%)  => /home/fabian/code/llhd/src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::new (1x)
         3 ( 0.00%)          let bn = BlockNumbering::new(unit.dfg(), unit.func_layout());
   658,342 ( 0.00%)  => src/pass/cfs.rs:llhd::pass::cfs::BlockNumbering::new (1x)
         .           
         .                   // Collect the phi instructions. We do this by gathering the values a
         .                   // phi node can produce, and noting which edges lead to this value, then
         .                   // transitively do this for nested phi nodes.
         .                   let mut phi_ways = vec![];
         2 ( 0.00%)          for block in unit.func_layout().blocks() {
         5 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::blocks (1x)
       723 ( 0.00%)              let imm_dom = match dt
    40,996 ( 0.00%)  => /home/fabian/code/llhd/src/pass/gcse.rs:llhd::pass::gcse::DominatorTree::dominators (241x)
         .                           .dominators(block)
         .                           .iter()
         .                           .cloned()
         .                           .filter(|&bb| bb != block)
    54,420 ( 0.00%)                  .max_by_key(|&bb| bn[bb])
 2,272,035 ( 0.00%)  => src/pass/cfs.rs:<llhd::pass::cfs::BlockNumbering as core::ops::index::Index<llhd::ir::Block>>::index (13,605x)
         .                       {
         .                           Some(bb) => bb,
         .                           None => continue,
         .                       };
       960 ( 0.00%)              for inst in unit.func_layout().insts(block) {
    49,095 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::insts (240x)
     2,691 ( 0.00%)                  if !unit.dfg()[inst].opcode().is_phi() {
    55,614 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:<llhd::ir::dfg::DataFlowGraph as core::ops::index::Index<llhd::ir::Inst>>::index (299x)
       897 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::Opcode::is_phi (299x)
       598 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::opcode (299x)
         .                               continue;
         .                           }
         .                           let ways = prepare_phi(ctx, unit, block, inst, &pt, imm_dom);
       156 ( 0.00%)                  phi_ways.push((inst, ways));
         .                       }
         .                   }
         .           
         .                   // Build the discrimination tree for each phi node and replace all
         .                   // covered values with the discriminator, which is now control-flow
         .                   // independent.
       357 ( 0.00%)          for (inst, ways) in phi_ways {
         .                       trace!(
         .                           "Implementing {} as multiplexer",
         .                           inst.dump(unit.dfg(), unit.try_cfg()),
         .                       );
        39 ( 0.00%)              unit.insert_before(inst);
       117 ( 0.00%)  => /home/fabian/code/llhd/src/ir/process.rs:<llhd::ir::process::ProcessBuilder as llhd::ir::unit::UnitBuilder>::insert_before (39x)
       156 ( 0.00%)              let disc = build_discriminator(ctx, unit, &ways);
1,721,115,895 ( 2.98%)  => src/pass/cfs.rs:llhd::pass::cfs::build_discriminator (39x)
    17,137 ( 0.00%)              for (v, _) in ways {
    16,786 ( 0.00%)                  unit.dfg_mut()[inst].replace_value(v, disc);
   823,476 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::replace_value (2,398x)
   446,028 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:<llhd::ir::dfg::DataFlowGraph as core::ops::index::IndexMut<llhd::ir::Inst>>::index_mut (2,398x)
         .                       }
         .                       modified |= true;
         .                   }
         .           
         .                   // Finally simplify phi nodes which produce the same value irrelevant of
         .                   // the incoming edge.
         .                   let mut elide_phis = vec![];
         2 ( 0.00%)          for block in unit.func_layout().blocks() {
         5 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::blocks (1x)
       964 ( 0.00%)              for inst in unit.func_layout().insts(block) {
    49,299 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::insts (241x)
    55,638 ( 0.00%)                  if !unit.dfg()[inst].opcode().is_phi() {
 1,152,622 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:<llhd::ir::dfg::DataFlowGraph as core::ops::index::Index<llhd::ir::Inst>>::index (6,182x)
    18,546 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::Opcode::is_phi (6,182x)
    12,364 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::opcode (6,182x)
         .                               continue;
         .                           }
        78 ( 0.00%)                  if let Some(with) = maybe_elide_phi(ctx, unit, inst) {
         .                               elide_phis.push((inst, with));
         .                           }
         .                       }
         .                   }
         5 ( 0.00%)          for (inst, with) in elide_phis {
         .                       trace!(
         .                           "Replace {} with {}",
         .                           inst.dump(unit.dfg(), unit.try_cfg()),
         .                           with.dump(unit.dfg()),
         .                       );
       117 ( 0.00%)              let inst_value = unit.dfg().inst_result(inst);
     7,683 ( 0.00%)  => /home/fabian/code/llhd/src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::inst_result (39x)
       117 ( 0.00%)              unit.dfg_mut().replace_use(inst_value, with);
12,106,188 ( 0.02%)  => /home/fabian/code/llhd/src/ir/dfg.rs:llhd::ir::dfg::DataFlowGraph::replace_use (39x)
        78 ( 0.00%)              unit.prune_if_unused(inst);
3,597,344,693 ( 6.22%)  => /home/fabian/code/llhd/src/ir/unit.rs:llhd::ir::unit::UnitBuilder::prune_if_unused (39x)
         .                       modified |= true;
         .                   }
         .           
         .                   modified
         .               }
         .           }
         .           
         .           // Find the preconditions for the values a phi node can produce. The resulting
-- line 103 ----------------------------------------
-- line 116 ----------------------------------------
         .                   block.dump(unit.cfg()),
         .                   immediate_dominator.dump(unit.cfg())
         .               );
         .           
         .               // Try to find the transitive branch condition that leads to control flow in
         .               // `immediate_dominator` to reach `block` via each of the edges in the phi
         .               // node.
         .               let mut ways = vec![];
       117 ( 0.00%)      let data = &unit.dfg()[inst];
     7,254 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:<llhd::ir::dfg::DataFlowGraph as core::ops::index::Index<llhd::ir::Inst>>::index (39x)
     7,230 ( 0.00%)      for (&bb, &arg) in data.blocks().iter().zip(data.args().iter()) {
       390 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::args (39x)
       390 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::blocks (39x)
         .                   trace!("  Checking from {}", bb.dump(unit.cfg()));
    18,864 ( 0.00%)          let routes = justify_edge(ctx, unit, bb, block, immediate_dominator, &mut vec![], pt);
175,978,748 ( 0.30%)  => src/pass/cfs.rs:llhd::pass::cfs::justify_edge (2,358x)
    11,870 ( 0.00%)          ways.extend(routes.into_iter().map(|route| (arg, route)));
         .               }
         .           
         .               trace!("    Found {:?}", ways);
       156 ( 0.00%)      ways
         .           }
         .           
         .           // Find the chain of conditions that must be true to arrive at the `to` block,
         .           // coming from the `from` block, ultimately originating in the `target` block.
 1,819,168 ( 0.00%)  fn justify_edge(
         .               ctx: &PassContext,
         .               unit: &impl UnitBuilder,
         .               from: Block,
         .               to: Block,
         .               target: Block,
         .               seen: &mut Vec<Block>,
         .               pt: &PredecessorTable,
         .           ) -> Vec<Vec<Cond>> {
-- line 145 ----------------------------------------
-- line 146 ----------------------------------------
         .               trace!(
         .                   "    Justifying {} -> {}",
         .                   from.dump(unit.cfg()),
         .                   to.dump(unit.cfg())
         .               );
         .           
         .               // Investigate the terminator of the `from` block to see under what
         .               // condition it transfers control to `to`.
   699,680 ( 0.00%)      let from_term = unit.func_layout().terminator(from);
   468,084 ( 0.00%)  => /home/fabian/code/llhd/src/ir/layout.rs:llhd::ir::layout::FunctionLayout::terminator (2,358x)
   559,744 ( 0.00%)      let data = &unit.dfg()[from_term];
   438,588 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:<llhd::ir::dfg::DataFlowGraph as core::ops::index::Index<llhd::ir::Inst>>::index (2,358x)
   279,872 ( 0.00%)      let cond = match data.opcode() {
     4,716 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::opcode (2,358x)
         .                   // Unconditional branches and waits are trivial, since the transfer
         .                   // control flow in any case.
 1,254,548 ( 0.00%)          Opcode::Br | Opcode::Wait | Opcode::WaitTime => None,
         .           
         .                   // Conditional branches need further inspection.
 1,362,985 ( 0.00%)          Opcode::BrCond if data.blocks()[0] == to => Some(Cond::Neg(data.args()[0])),
 1,512,478 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::blocks (137,498x)
 1,486,089 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::args (135,099x)
    23,990 ( 0.00%)          Opcode::BrCond if data.blocks()[1] == to => Some(Cond::Pos(data.args()[0])),
    26,389 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::blocks (2,399x)
    26,389 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::args (2,399x)
         .           
         .                   _ => unreachable!("weird terminator found"),
         .               };
         .           
         .               // If we have arrived at the target then we are done.
   142,296 ( 0.00%)      if from == target {
         .                   return vec![cond.into_iter().collect()];
         .               }
         .           
         .               // Gather the conditions to arrive from each of the predecessors to the from
         .               // block.
         .               let mut routes = vec![];
         .               seen.push(to);
   275,076 ( 0.00%)      for bb in pt.pred(from) {
   457,452 ( 0.00%)  => /home/fabian/code/llhd/src/pass/gcse.rs:llhd::pass::gcse::PredecessorTable::pred (2,358x)
         .                   if seen.contains(&bb) {
         .                       continue;
         .                   }
 3,974,894 ( 0.01%)          for mut route in justify_edge(ctx, unit, bb, from, target, seen, pt) {
173,445,433 ( 0.30%)  => src/pass/cfs.rs:llhd::pass::cfs::justify_edge'2 (2,398x)
         .                       if let Some(cond) = cond {
         .                           route.push(cond);
         .                       }
   685,412 ( 0.00%)              routes.push(route);
         .                   }
         .               }
         .               seen.pop();
   825,228 ( 0.00%)      routes
 1,119,488 ( 0.00%)  }
         .           
21,979,206 ( 0.04%)  #[derive(Debug, Clone, Copy, PartialEq, Eq)]
         .           enum Cond {
         .               Pos(Value),
         .               Neg(Value),
         .           }
         .           
    57,084 ( 0.00%)  fn build_discriminator(
         .               ctx: &PassContext,
         .               unit: &mut impl UnitBuilder,
         .               ways: &[(Value, Vec<Cond>)],
         .           ) -> Value {
         .               trace!("  Discriminating {:?}", ways);
         .           
         .               // Short cut the easy cases where there is nothing to discriminate.
     9,514 ( 0.00%)      if ways.len() == 1 {
     4,796 ( 0.00%)          return ways[0].0;
         .               }
         .           
         .               // Find the largest discriminating factor of each way.
         .               let mut table = HashMap::<Value, (usize, isize)>::new();
         .               for (_, conds) in ways {
 5,375,618 ( 0.01%)          for &cond in conds {
         .                       let (v, tick) = match cond {
16,126,854 ( 0.03%)                  Cond::Pos(v) => (v, 1),
         .                           Cond::Neg(v) => (v, -1),
         .                       };
16,126,854 ( 0.03%)              let e = table.entry(v).or_insert((0, 0));
27,298,189 ( 0.05%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::entry (137,498x)
32,253,708 ( 0.06%)              e.0 += 1;
         .                       e.1 += tick;
         .                   }
         .               }
    11,795 ( 0.00%)      let (disc, (_uses, _imbalance)) = table
         .                   .into_iter()
         .                   .map(|(v, (n, tick))| (v, (n, -tick.abs())))
         .                   .max_by_key(|&(_, x)| x)
         .                   .expect("some discriminator must be present");
         .               trace!("    Discriminator is {} ({})", disc, disc.dump(unit.dfg()));
         .           
         .               // Split the ways over the discriminator.
     9,436 ( 0.00%)      let mux_conds = [Cond::Neg(disc), Cond::Pos(disc)];
         .               let mux_values: Vec<_> = mux_conds
         .                   .iter()
     9,436 ( 0.00%)          .map(|&cond| {
     9,436 ( 0.00%)              let mux_ways: Vec<_> = ways
         .                           .iter()
         .                           .flat_map(|(v, conds)| -> Option<(Value, Vec<Cond>)> {
 1,720,904 ( 0.00%)                      if conds.contains(&cond) {
21,261,264 ( 0.04%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/slice/mod.rs:_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8contains17ha71c33a63db98477E.llvm.7114256693327014882 (274,996x)
 6,195,888 ( 0.01%)                          Some((*v, conds.iter().cloned().filter(|&c| c != cond).collect()))
         .                               } else {
         .                                   None
         .                               }
         .                           })
         .                           .collect();
         .                       trace!("      {:?}: {:?}", cond, mux_ways);
    28,308 ( 0.00%)              build_discriminator(ctx, unit, &mux_ways)
52,353,517,236 (90.50%)  => src/pass/cfs.rs:llhd::pass::cfs::build_discriminator'2 (4,718x)
         .                   })
         .                   .collect();
         .           
         .               // Build the multiplexer which picks among the values.
    11,795 ( 0.00%)      let arr = unit.ins().array(mux_values);
   244,685 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstBuilder<&mut B>::array (39x)
     9,436 ( 0.00%)      let mux = unit.ins().mux(arr, disc);
   112,243 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstBuilder<&mut B>::mux (39x)
         .               mux
    42,813 ( 0.00%)  }
         .           
         .           /// Check if a phi node can be elided because it produces the same value no
         .           /// matter what the incoming edge is.
         .           fn maybe_elide_phi(_ctx: &PassContext, unit: &impl UnitBuilder, inst: Inst) -> Option<Value> {
       312 ( 0.00%)      let set: HashSet<Value> = unit.dfg()[inst].args().iter().cloned().collect();
     7,254 ( 0.00%)  => /home/fabian/code/llhd/src/table.rs:<llhd::ir::dfg::DataFlowGraph as core::ops::index::Index<llhd::ir::Inst>>::index (39x)
   411,869 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/traits/iterator.rs:core::iter::traits::iterator::Iterator::collect (39x)
       390 ( 0.00%)  => /home/fabian/code/llhd/src/ir/inst.rs:llhd::ir::inst::InstData::args (39x)
        78 ( 0.00%)      if set.len() == 1 {
        78 ( 0.00%)          set.into_iter().next()
         .               } else {
         .                   None
         .               }
         .           }
         .           
         .           /// An ordering and numbering of the basic blocks in control-flow order.
         .           pub struct BlockNumbering {
         .               numbers: HashMap<Block, usize>,
         .               order: Vec<Block>,
         .           }
         .           
         .           impl BlockNumbering {
         .               /// Compute a block order and numbering.
        10 ( 0.00%)      pub fn new(dfg: &DataFlowGraph, layout: &FunctionLayout) -> Self {
         .                   let mut numbers = HashMap::<Block, usize>::new();
         .                   let mut order = vec![];
         .                   let mut done = HashSet::<Block>::new();
         .                   let mut pending = HashSet::<Block>::new();
         .                   let entry = layout.entry();
         2 ( 0.00%)          pending.insert(entry);
       839 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/set.rs:std::collections::hash::set::HashSet<T,S>::insert (1x)
         .                   numbers.insert(entry, 0);
         .           
       723 ( 0.00%)          while let Some(&block) = pending.iter().next() {
         .                       pending.remove(&block);
       723 ( 0.00%)              done.insert(block);
   117,596 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/set.rs:std::collections::hash::set::HashSet<T,S>::insert (241x)
         .                       order.push(block);
         .                       let term = layout.terminator(block);
         .                       if dfg[term].opcode().is_terminator() {
         .                           pending.extend(
         .                               dfg[term]
         .                                   .blocks()
         .                                   .iter()
         .                                   .cloned()
         .                                   .filter(|bb| !done.contains(bb)),
         .                           );
       241 ( 0.00%)                  let next_number = numbers[&block] + 1;
         .                           for bb in dfg[term].blocks().iter().cloned() {
     1,077 ( 0.00%)                      numbers.entry(bb).or_insert(next_number);
   137,764 ( 0.00%)  => /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs:std::collections::hash::map::HashMap<K,V,S>::entry (359x)
         .                           }
         .                       }
         .                   }
         .           
        13 ( 0.00%)          BlockNumbering { numbers, order }
         9 ( 0.00%)      }
         .           
         .               /// Get the number associated with a block.
         .               pub fn number(&self, block: Block) -> usize {
         .                   self.numbers[&block]
         .               }
         .           
         .               /// Get the number associated with a block.
         .               pub fn get_number(&self, block: Block) -> Option<usize> {
-- line 313 ----------------------------------------
-- line 322 ----------------------------------------
         .               /// Get the control flow ordering of the blocks as a slice.
         .               pub fn order_slice(&self) -> &[Block] {
         .                   &self.order
         .               }
         .           }
         .           
         .           impl Index<Block> for BlockNumbering {
         .               type Output = usize;
    13,605 ( 0.00%)      fn index(&self, idx: Block) -> &usize {
         .                   &self.numbers[&idx]
    27,210 ( 0.00%)      }
         .           }

40,417,270 ( 0.07%)  <counts for unidentified lines in src/pass/cfs.rs>

--------------------------------------------------------------------------------
The following files chosen for auto-annotation could not be found:
--------------------------------------------------------------------------------
  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/map.rs
  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/bitmask.rs
  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/raw/mod.rs
  /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.4.0/src/rustc_entry.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54//src/libstd/sys/unix/alloc.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/liballoc/raw_vec.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/liballoc/vec.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/../stdarch/crates/core_arch/src/x86/sse2.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/alloc.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/cmp.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/mod.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/hash/sip.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/intrinsics.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/adapters/flatten.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/adapters/mod.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/iter/traits/iterator.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/num/mod.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/option.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/ptr/mod.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/result.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/slice/mod.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/map.rs
  /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/collections/hash/set.rs

--------------------------------------------------------------------------------
Ir                     
--------------------------------------------------------------------------------
2,103,556,183 ( 3.64%)  events annotated

