1 USING: assocs compiler.cfg.def-use compiler.cfg.instructions
2 compiler.cfg.registers compiler.cfg.ssa.destruction.coalescing
3 compiler.cfg.ssa.destruction.leaders
4 compiler.cfg.ssa.interference compiler.cfg.utilities
5 compiler.utilities cpu.architecture grouping kernel make
6 namespaces random sequences tools.test ;
7 IN: compiler.cfg.ssa.destruction.coalescing.tests
19 { { 45 46 } { 47 100 } { 20 30 } { 30 100 } }
20 [ first2 eliminatable-copy? ] map
23 ! initial-class-elements
28 { T{ vreg-info { vreg 77 } { value 77 } { bb "bb2" } } }
42 H{ { 123 "bb1" } { 77 "bb2" } } defs set
43 initial-class-elements
48 H{ { 65 65 } { 99 99 } { 62 62 } { 303 303 } }
53 { val B{ 0 0 0 0 0 0 0 64 0 0 0 0 0 0 52 64 } }
74 { T{ ##phi { dst 118 } { inputs H{ { 4 120 } { 2 119 } } } } }
75 [ insns>cfg compute-defs ] [ init-coalescing ] bi
81 10 10 f try-eliminate-copy
87 T{ ##copy { src 1 } { dst 2 } { rep int-rep } } coalesce-later
91 { V{ { 3 4 } { 7 8 } } } [
93 T{ ##parallel-copy { values V{ { 3 4 } { 7 8 } } } } coalesce-later
97 ! All this work to make the 'values' order non-deterministic.
98 : make-phi-inputs ( -- assoc )
101 10 iota 1 sample first rot set-at
107 { 2286 2287 2288 } unique leader-map set
108 2286 make-phi-inputs ##phi new-insn
111 ] replicate all-equal?