# Scan Canonicalization & Lowering ###### tags: `functional cycle 8` shaped by: Felix appetite: see below, 1 developer (Felix) + support for design ## Canonicalization of Iterator IR and Lowering for Simple Case appetite: rest of cycle ### Motivation The C++ backend knows how to deal with stencil-like computations and how to deal with vertical sweeps (scans and folds). However, there is no mixed execution strategy; that is, each fencil has to be canonicalized into a form where each closure is representing either a stencil-like or a scan-like computation. ### Steps 1. Defining the required canonical form 2. Finding a transformation that can put any valid IR into this form (probably similar to the lifts-to-temporary transform) 3. Implementing and testing the transformation 4. Lowering to the C++ backend: only support special case of single prologue 5. Optional: Expand special lowering to the general case. ### Status Core work done, some open questions with respect to IR.