• Ben.Lippmeier@anu.edu.au's avatar
    NCG: Split up the native code generator into arch specific modules · b04a210e
    Ben.Lippmeier@anu.edu.au authored
      - nativeGen/Instruction defines a type class for a generic
        instruction set. Each of the instruction sets we have, 
        X86, PPC and SPARC are instances of it.
      
      - The register alloctors use this type class when they need
        info about a certain register or instruction, such as
        regUsage, mkSpillInstr, mkJumpInstr, patchRegs..
      
      - nativeGen/Platform defines some data types enumerating
        the architectures and operating systems supported by the 
        native code generator.
      
      - DynFlags now keeps track of the current build platform, and 
        the PositionIndependentCode module uses this to decide what
        to do instead of relying of #ifdefs.
      
      - It's not totally retargetable yet. Some info info about the
        build target is still hardwired, but I've tried to contain
        most of it to a single module, TargetRegs.
      
      - Moved the SPILL and RELOAD instructions into LiveInstr.
      
      - Reg and RegClass now have their own modules, and are shared
        across all architectures.
    b04a210e
SpillClean.hs 14.2 KB