Changes between Version 9 and Version 10 of Status/Nov07


Ignore:
Timestamp:
Dec 4, 2007 2:28:02 PM (8 years ago)
Author:
simonmar
Comment:

back end

Legend:

Unmodified
Added
Removed
Modified
  • Status/Nov07

    v9 v10  
    132132== Back end stuff ==
    133133
    134  * Ben Lippmeir spent his internship building a graph-colouring,
    135   coalescing register allocator for GHC's native code generator.
    136         SIMON SAY MORE
     134GHC's back end code generator has long been known to generate poor code, particularly
     135for tight loops of the kind that are cropping up more and more in highly optimised
     136Haskell code.  So in typical GHC style, rather than patch the immediate problem, we're redesigning
     137the entire back end.
     138
     139What we want to do:
     140
     141 * split the STG-to-C-- code generator (`codeGen`) into two: one pass
     142   generating C-- with functions and calls, and a second pass ("CPS") to
     143   manifest the stack and calling/return conventions.
     144
     145 * Redesign the calling and return conventions, so that we can use more
     146   registers for parameter passing (this will entail decommissioning the
     147   via-C code generator, but the native code generator will outperform it).
     148
     149 * Give the back end more opportunity to do low-level transformation and
     150   optimisation, e.g. by exposing loops at the C-- level.
     151
     152 * Implement more optimisations over C--.
     153
     154 * Plug in a better register allocator.
     155
     156What we've done so far:
    137157
    138158 * Michael Adams came for an internship and built a CPS converter
     
    143163  dataflow framework so that you can write new dataflow analyses in
    144164  30 mins. 
     165
     166 * Ben Lippmeir spent his internship building a graph-colouring,
     167  coalescing register allocator for GHC's native code generator.
    145168
    146169As a result, we now have *lots* of new code.  Some of it is working;