Skip to content
Snippets Groups Projects

More optimizations

Merged rarbore2 requested to merge more_opt3 into main
1 file
+ 1
3
Compare changes
  • Side-by-side
  • Inline
@@ -10,13 +10,14 @@ macro simpl!(X) {
@@ -10,13 +10,14 @@ macro simpl!(X) {
phi-elim(bfs);
phi-elim(bfs);
no-memset(bfs@cost);
no-memset(bfs@cost);
outline(bfs@cost_init);
let init = outline(bfs@cost_init);
let loop1 = outline(bfs@loop1);
let traverse = outline(bfs@loop1);
let loop2 = outline(bfs@loop2);
let collect = outline(bfs@loop2);
simpl!(*);
simpl!(*);
predication(*);
predication(*);
const-inline(*);
const-inline(*);
 
loop-bound-canon(*);
simpl!(*);
simpl!(*);
fixpoint {
fixpoint {
forkify(*);
forkify(*);
@@ -25,6 +26,37 @@ fixpoint {
@@ -25,6 +26,37 @@ fixpoint {
simpl!(*);
simpl!(*);
predication(*);
predication(*);
simpl!(*);
simpl!(*);
 
reduce-slf(*);
 
simpl!(*);
 
slf(*);
 
simpl!(*);
 
 
fixpoint {
 
forkify(collect);
 
fork-guard-elim(collect);
 
}
 
simpl!(collect);
 
 
parallel-fork(traverse, collect);
 
parallel-reduce(traverse, collect);
unforkify(*);
fork-tile[32, 0, false, true](traverse, collect);
 
let (outer, inner) = fork-reshape[[1], [0]](traverse);
 
let traverse_body = outline(inner);
 
let (outer, inner) = fork-reshape[[1], [0]](collect);
 
let collect_body = outline(inner);
 
 
let init_body = init;
 
// Following code seems to generate breaking RT code
 
//fork-tile[32, 0, false, true](init);
 
//let (outer, inner) = fork-reshape[[1], [0]](init);
 
//let init_body = outline(inner);
 
//inline(bfs@cost_init);
 
 
inline(bfs@loop1, bfs@loop2);
 
delete-uncalled(*);
 
const-inline(*);
 
 
unforkify(init_body, traverse_body, collect_body);
 
simpl!(*);
gcm(*);
gcm(*);
Loading