gvn(*);
phi-elim(*);
dce(*);

let out = auto-outline(*);
gpu(out.matmul, out.tiled_64_matmul);

ip-sroa(*);
sroa(*);
dce(*);
gvn(*);
phi-elim(*);
dce(*);

fixpoint panic after 20 {
  forkify(out.matmul);
  fork-guard-elim(out.matmul);
}
gvn(out.matmul);
phi-elim(out.matmul);
dce(out.matmul);

fixpoint panic after 20 {
  reduce-slf(out.matmul);
  slf(out.matmul);
  infer-schedules(out.matmul);
}
fork-coalesce(out.matmul);
dce(out.matmul);

gcm(*);
float-collections(*);
dce(*);
gcm(*);