find-slp-tree ( insns uses -- tree/f )


Vocabulary
compiler.cfg.slp

Inputs
insnsan object
usesan object


Outputs
tree/fan object


Definition


:: find-slp-tree ( insns uses -- tree/f )
H{ } clone :> definitions insns [
dup slp-arithmetic?
[ dup dst>> definitions set-at ] [ drop ] if
] each definitions assoc-size dup 20 >= swap 256 <= and [
insns reverse [| b |
b insns index insns swap head reverse [| a |
a b insns slp-root-pair? [
a dst>> b dst>> 2array
definitions uses t make-slp-tree
dup slp-profitable? [ ] [ drop f ] if
] [ f ] if
] map-find drop
] map-find drop
] [ f ] if ;