1. Input -> SSA block parameter form 2. First ABI lowering 3. Boolean expression to branch conditions wherever possible (also sort operands wherever possible? so instead of 5 + i2 it becomes i2 + 5 or something?) 4. SCCVN (+ weak value range instead of just constant propagation?) 5. Register allocation 6. Instruction selection (pattern matching?)