compiler.cfg.dependence: if node subclasses identity-tuple it doesn't need the number slot
parent
eb9ca1c6fe
commit
9d0379b9ba
|
@ -4,23 +4,10 @@ grouping kernel math namespaces random sequences tools.test vectors ;
|
|||
IN: compiler.cfg.dependence.tests
|
||||
FROM: sets => members set= ;
|
||||
|
||||
{
|
||||
V{
|
||||
T{ node
|
||||
{ number 1 }
|
||||
{ insn T{ ##inc-r } }
|
||||
{ precedes H{ } }
|
||||
}
|
||||
T{ node
|
||||
{ number 2 }
|
||||
{ insn T{ ##inc-d } }
|
||||
{ precedes H{ } }
|
||||
}
|
||||
}
|
||||
} [
|
||||
0 node-number set-global
|
||||
{ t } [
|
||||
V{ T{ ##inc-r } T{ ##inc-d } } [ <node> ] map dup
|
||||
build-dependence-graph
|
||||
first2 [ insn>> ##inc-r? ] [ insn>> ##inc-d? ] bi* and
|
||||
] unit-test
|
||||
|
||||
{ 0 } [
|
||||
|
@ -28,11 +15,11 @@ FROM: sets => members set= ;
|
|||
] unit-test
|
||||
|
||||
: 2node-tree ( -- tree )
|
||||
2 iota [ node new swap >>number ] map first2 over attach-parent ;
|
||||
2 [ node new ] replicate first2 over attach-parent ;
|
||||
|
||||
! 0 -> 1 -> 2
|
||||
: 3node-tree ( -- tree )
|
||||
3 iota [ node new swap >>number ] map first3
|
||||
3 [ node new ] replicate first3
|
||||
over attach-parent over attach-parent ;
|
||||
|
||||
! Verification tests
|
||||
|
@ -73,7 +60,7 @@ ERROR: node-missing-children trees nodes ;
|
|||
] unit-test
|
||||
|
||||
: dummy-node ( number -- node )
|
||||
node new over >>number ##allot new rot >>insn# >>insn ;
|
||||
##allot new swap >>insn# node new swap >>insn ;
|
||||
|
||||
! No parent because it has +control+
|
||||
{ f } [
|
||||
|
@ -121,7 +108,7 @@ ERROR: node-missing-children trees nodes ;
|
|||
] unit-test
|
||||
|
||||
: test-some-kind-of-dep ( -- insns )
|
||||
0 node-number set-global
|
||||
! 0 node-number set-global
|
||||
V{
|
||||
T{ ##peek { dst 275 } { loc D 2 } }
|
||||
T{ ##load-tagged { dst 277 } { val 0 } }
|
||||
|
@ -178,9 +165,9 @@ ERROR: node-missing-children trees nodes ;
|
|||
[ parent-index>> -1/0. = ] count
|
||||
] unit-test
|
||||
|
||||
{ V{ 1 4 7 8 } } [
|
||||
{ V{ 0 6 12 14 } } [
|
||||
test-some-kind-of-dep
|
||||
dup build-dependence-graph
|
||||
dup build-fan-in-trees
|
||||
[ parent-index>> -1/0. = ] filter [ number>> ] map
|
||||
[ parent-index>> -1/0. = ] filter [ insn>> insn#>> ] map
|
||||
] unit-test
|
||||
|
|
|
@ -6,20 +6,13 @@ namespaces sequences sorting make math math.vectors sets vectors ;
|
|||
FROM: namespaces => set ;
|
||||
IN: compiler.cfg.dependence
|
||||
|
||||
SYMBOL: node-number
|
||||
|
||||
SYMBOL: +data+
|
||||
SYMBOL: +control+
|
||||
|
||||
TUPLE: node number insn precedes children registers parent-index ;
|
||||
|
||||
M: node equal? over node? [ [ number>> ] same? ] [ 2drop f ] if ;
|
||||
|
||||
M: node hashcode* nip number>> ;
|
||||
TUPLE: node < identity-tuple insn precedes children registers parent-index ;
|
||||
|
||||
: <node> ( insn -- node )
|
||||
node new
|
||||
node-number counter >>number
|
||||
swap >>insn
|
||||
H{ } clone >>precedes ;
|
||||
|
||||
|
|
|
@ -160,15 +160,13 @@ IN: compiler.cfg.scheduling.tests
|
|||
] unit-test
|
||||
|
||||
{ t f } [
|
||||
0 node-number set-global test-some-kind-of-dep [ <node> ] map
|
||||
dup build-dependence-graph
|
||||
|
||||
! Anyone preceding node number 8?
|
||||
test-some-kind-of-dep dup build-dependence-graph
|
||||
! Anyone preceding insn# 14?
|
||||
[
|
||||
[ precedes>> keys [ number>> ] map 8 swap member? ] any?
|
||||
[ precedes>> keys [ insn>> insn#>> ] map 14 swap member? ] any?
|
||||
]
|
||||
[
|
||||
unclip-last over swap remove-node
|
||||
[ precedes>> keys [ number>> ] map 8 swap member? ] any?
|
||||
[ precedes>> keys [ insn>> insn#>> ] map 14 swap member? ] any?
|
||||
] bi
|
||||
] unit-test
|
||||
|
|
Loading…
Reference in New Issue