summaryrefslogtreecommitdiff
path: root/compiler/nativeGen/MachInstrs.hs
Commit message (Collapse)AuthorAgeFilesLines
* NCG: Rename MachRegs, MachInstrs -> Regs, Instrs to reflect arch specific namingBen.Lippmeier@anu.edu.au2009-02-041-97/+0
|
* NCG: Split MachInstrs into arch specific modulesBen.Lippmeier@anu.edu.au2009-02-031-672/+34
|
* SPARC NCG: Keep track of destinations when doing a tabled jumpBen.Lippmeier@anu.edu.au2009-01-231-0/+7
|
* SPARC NCG: Add support for hardware divideBen.Lippmeier@anu.edu.au2009-01-201-1/+15
|
* Start fixing the SPARC native code generatorBen.Lippmeier@anu.edu.au2009-01-141-5/+13
| | | | | | | * Use BlockIds in branch instructions instead of Imms. * Assign FP values returned from C calls to the right regs * Fix loading of F32s * Add a SPARC version of the FreeRegs map to the linear allcator.
* Merging in the new codegen branchdias@eecs.harvard.edu2008-08-141-109/+63
| | | | | | | | | | | | | | | | | | This merge does not turn on the new codegen (which only compiles a select few programs at this point), but it does introduce some changes to the old code generator. The high bits: 1. The Rep Swamp patch is finally here. The highlight is that the representation of types at the machine level has changed. Consequently, this patch contains updates across several back ends. 2. The new Stg -> Cmm path is here, although it appears to have a fair number of bugs lurking. 3. Many improvements along the CmmCPSZ path, including: o stack layout o some code for infotables, half of which is right and half wrong o proc-point splitting
* Fix to i386_insert_ffrees (#2724, #1944)Simon Marlow2008-11-111-12/+12
| | | | | | | | | | The i386 native code generator has to arrange that the FPU stack is clear on exit from any function that uses the FPU. Unfortunately it was getting this wrong (and has been ever since this code was written, I think): it was looking for basic blocks that used the FPU and adding the code to clear the FPU stack on any non-local exit from the block. In fact it should be doing this on a whole-function basis, rather than individual basic blocks.
* Replacing copyins and copyouts with data-movement instructionsdias@eecs.harvard.edu2008-05-291-0/+1
| | | | | | | | | | | | | | o Moved BlockId stuff to a new file to avoid module recursion o Defined stack areas for parameter-passing locations and spill slots o Part way through replacing copy in and copy out nodes - added movement instructions for stack pointer - added movement instructions for call and return parameters (but not with the proper calling conventions) o Inserting spills and reloads for proc points is now procpoint-aware (it was relying on the presence of a CopyIn node as a proxy for procpoint knowledge) o Changed ZipDataflow to expect AGraphs (instead of being polymorphic in the type of graph)
* Fix sin/cos/tan on x86; trac #2059Ian Lynagh2008-05-031-4/+4
| | | | | If the value is > 2^63 then we need to work out its value mod 2pi, and apply the operation to that instead.
* Move OPTIONS pragmas above commentsIan Lynagh2007-09-211-7/+7
| | | | Fixes building with -Werror (i.e. validate) and GHC < 6.6
* change of representation for GenCmm, GenCmmTop, CmmProcNorman Ramsey2007-09-051-2/+2
| | | | | | | | | The type parameter to a C-- procedure now represents a control-flow graph, not a single instruction. The newtype ListGraph preserves the current representation while enabling other representations and a sensible way of prettyprinting. Except for a few changes in the prettyprinter the new compiler binary should be bit-for-bit identical to the old.
* Fix CodingStyle#Warnings URLsIan Lynagh2007-09-041-1/+1
|
* Use OPTIONS rather than OPTIONS_GHC for pragmasIan Lynagh2007-09-031-2/+2
| | | | | | | Older GHCs can't parse OPTIONS_GHC. This also changes the URL referenced for the -w options from WorkingConventions#Warnings to CodingStyle#Warnings for the compiler modules.
* Add {-# OPTIONS_GHC -w #-} and some blurb to all compiler modulesIan Lynagh2007-09-011-0/+7
|
* Add spill/reload pseudo instrs to MachInstrsBen.Lippmeier@anu.edu.au2007-08-231-0/+3
| | | | | | | Spiller can now insert spill/reload instrs without having to worry about the current stack delta. Generation of actual machine instructions for spills/reloads is deferred until after register allocation proper.
* First pass at implementing info tables for CPSMichael D. Adams2007-06-271-2/+2
| | | | | | | | | | | | | | | | This is a fairly complete implementation, however two 'panic's have been placed in the critical path where the implementation is still a bit lacking so do not expect it to run quite yet. One call to panic is because we still need to create a GC block for procedures that don't have them yet. (cmm/CmmCPS.hs:continuationToProc) The other is due to the need to convert from a ContinuationInfo to a CmmInfo. (codeGen/CgInfoTbls.hs:emitClosureCodeAndInfoTable) (codeGen/CgInfoTbls.hs:emitReturnTarget)
* Fix truncate on amd64 NCG; fixes arith005.Ian Lynagh2007-05-031-2/+2
| | | | | cvts[sd]2siq? -> cvtts[sd]2siq?
* optimisation: shortcut branches when possible (x86/x86_64 only for now)mrchebas@gmail.com2007-01-221-0/+1
| | | | | This is only turned on with -O, and probably won't make much difference at the moment, but it will be important for semi-tagging.
* PowerPC NCG: support conditional branches outside +-32KBwolfgang.thaller@gmx.net2006-12-131-1/+18
| | | | | | | | | | | Work around the PowerPC architecture's +-32KB limitation for conditional branches by conditionally skipping an unconditional branch instead (unconditional branches have a +-32MB range). This requires an extra pass over the basic blocks for each CmmTop after block sequencing, to determine which branches are "far". Fixes ticket #709, "Fixup too large" error with -fasm on PowerPC
* Support MO_WriteBarrier in PowerPC NCG (lwsync instruction)wolfgang.thaller@gmx.net2006-12-111-0/+1
|
* Module header tidyup #2Simon Marlow2006-10-111-1/+1
| | | | Push this further along, and fix build problems in the first patch.
* Reorganisation of the source treeSimon Marlow2006-04-071-0/+722
Most of the other users of the fptools build system have migrated to Cabal, and with the move to darcs we can now flatten the source tree without losing history, so here goes. The main change is that the ghc/ subdir is gone, and most of what it contained is now at the top level. The build system now makes no pretense at being multi-project, it is just the GHC build system. No doubt this will break many things, and there will be a period of instability while we fix the dependencies. A straightforward build should work, but I haven't yet fixed binary/source distributions. Changes to the Building Guide will follow, too.