futhark-0.16.3: An optimising compiler for a functional, array-oriented language.
Safe HaskellNone



Sequentialise any remaining SOACs. It is very important that this is run *after* any access-pattern-related optimisation, because this pass will destroy information.

This pass conceptually contains three subpasses:

  1. Sequentialise Stream operations, leaving other SOACs intact.
  2. Apply whole-program simplification.
  3. Sequentialise remaining SOACs.

This is because sequentialisation of streams creates many SOACs operating on single-element arrays, which can be efficiently simplified away, but only *before* they are turned into loops. In principle this pass could be split into multiple, but for now it is kept together.



unstream :: Pass Kernels Kernels Source #

The pass definition.