compiler.cfg.ssa.destruction: add some unit tests
parent
c61b729125
commit
b5a978d4e5
|
@ -0,0 +1,119 @@
|
||||||
|
USING: compiler.cfg.instructions compiler.cfg.registers cpu.architecture
|
||||||
|
compiler.cfg.debugger arrays accessors kernel namespaces sequences assocs
|
||||||
|
compiler.cfg.predecessors compiler.cfg.ssa.destruction tools.test
|
||||||
|
compiler.cfg vectors ;
|
||||||
|
IN: compiler.cfg.ssa.destruction.tests
|
||||||
|
|
||||||
|
! This needs way more tests
|
||||||
|
|
||||||
|
! Untested code path
|
||||||
|
V{
|
||||||
|
T{ ##peek f V int-regs 0 D 0 }
|
||||||
|
} 0 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##peek f V int-regs 1 D 0 }
|
||||||
|
} 1 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##replace f V int-regs 0 D 0 }
|
||||||
|
} 2 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##branch }
|
||||||
|
} 3 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##phi f V int-regs 2 H{ { 2 V int-regs 1 } { 3 V int-regs 0 } } }
|
||||||
|
} 4 test-bb
|
||||||
|
|
||||||
|
0 { 1 3 } edges
|
||||||
|
1 2 edge
|
||||||
|
2 4 edge
|
||||||
|
3 4 edge
|
||||||
|
|
||||||
|
: test-destruction ( -- )
|
||||||
|
cfg new 0 get >>entry compute-predecessors destruct-ssa drop ;
|
||||||
|
|
||||||
|
[ ] [ test-destruction ] unit-test
|
||||||
|
|
||||||
|
! "Virtual swap" problem
|
||||||
|
V{
|
||||||
|
T{ ##peek f V int-regs 0 D 0 }
|
||||||
|
T{ ##peek f V int-regs 1 D 1 }
|
||||||
|
} 0 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##branch }
|
||||||
|
} 1 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##branch }
|
||||||
|
} 2 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##phi f V int-regs 2 H{ { 1 V int-regs 0 } { 2 V int-regs 1 } } }
|
||||||
|
T{ ##phi f V int-regs 3 H{ { 1 V int-regs 1 } { 2 V int-regs 0 } } }
|
||||||
|
} 3 test-bb
|
||||||
|
|
||||||
|
0 { 1 2 } edges
|
||||||
|
1 3 edge
|
||||||
|
2 3 edge
|
||||||
|
|
||||||
|
[ ] [ test-destruction ] unit-test
|
||||||
|
|
||||||
|
! How to test?
|
||||||
|
|
||||||
|
! Reduction of suffix-arrays regression
|
||||||
|
V{
|
||||||
|
T{ ##peek f V int-regs 48 D 0 }
|
||||||
|
T{ ##peek f V int-regs 47 D 0 }
|
||||||
|
T{ ##branch }
|
||||||
|
} 0 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##branch }
|
||||||
|
} 1 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##branch }
|
||||||
|
} 2 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##branch }
|
||||||
|
} 3 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##phi f V int-regs 94 H{ { 1 V int-regs 48 } { 2 V int-regs 47 } } }
|
||||||
|
T{ ##branch }
|
||||||
|
} 4 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##branch }
|
||||||
|
} 5 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##branch }
|
||||||
|
} 6 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##branch }
|
||||||
|
} 7 test-bb
|
||||||
|
|
||||||
|
V{
|
||||||
|
T{ ##phi f V int-regs 56 H{ { 3 V int-regs 48 } { 6 V int-regs 94 } { 7 V int-regs 94 } { 5 V int-regs 47 } } }
|
||||||
|
T{ ##branch }
|
||||||
|
} 8 test-bb
|
||||||
|
|
||||||
|
0 { 1 2 } edges
|
||||||
|
1 { 3 4 } edges
|
||||||
|
2 { 4 5 } edges
|
||||||
|
4 { 6 7 } edges
|
||||||
|
3 8 edge
|
||||||
|
6 8 edge
|
||||||
|
7 8 edge
|
||||||
|
5 8 edge
|
||||||
|
|
||||||
|
[ ] [ test-destruction ] unit-test
|
||||||
|
|
||||||
|
[ f ] [ 0 get instructions>> first2 [ dst>> ] bi@ = ] unit-test
|
Loading…
Reference in New Issue