summaryrefslogtreecommitdiff
path: root/compiler/nativeGen/MachCodeGen.hs
Commit message (Collapse)AuthorAgeFilesLines
...
* Warning PoliceMichael D. Adams2007-07-051-1/+0
|
* fix compilation for x86_64Simon Marlow2007-06-281-2/+2
|
* Implemented and fixed bugs in CmmInfo handlingMichael D. Adams2007-06-271-2/+2
|
* First pass at implementing info tables for CPSMichael D. Adams2007-06-271-1/+1
| | | | | | | | | | | | | | | | 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)
* Added an SRT to each CmmCall and added the current SRT to the CgMonadMichael D. Adams2007-06-271-3/+4
|
* Added pointerhood to LocalRegMichael D. Adams2007-06-271-13/+13
| | | | | | This version should compile but is still incomplete as it introduces potential bugs at the places marked 'TODO FIXME NOW'. It is being recorded to help keep track of changes.
* Moved global register saving from the backend to codeGenMichael D. Adams2007-05-251-17/+16
| | | | | | | | | | | | | | | | | This frees the Cmm data type from keeping a list of live global registers in CmmCall which helps prepare for the CPS conversion phase. CPS conversion does its own liveness analysis and takes input that should not directly refer to parameter registers (e.g. R1, F5, D3, L2). Since these are the only things which could occur in the live global register list, CPS conversion makes that field of the CmmCall constructor obsolite. Once the CPS conversion pass is fully implemented, global register saving will move from codeGen into the CPS pass. Until then, this patch is worth scrutinizing and testing to ensure it doesn't cause any performance or correctness problems as the code passed to the backends by the CPS converting will look very similar to the code that this patch makes codeGen pass to the backend.
* add missing case for compiling 64-bit operations on x86Simon Marlow2007-06-261-0/+11
|
* I didn't quite fix #1424 completely - hopefully this gets it rightSimon Marlow2007-06-131-2/+2
|
* FIX #1424: x86_64 NCG generated wrong code for foreign call with >8 double argsSimon Marlow2007-06-131-2/+2
| | | | I guess we have a missing test... I'll add one
* FIX #1052 (NCG doesn't realise shift instructions trash shifted input)Simon Marlow2007-05-181-5/+19
| | | | See comments with shift_code
* Fix truncate on amd64 NCG; fixes arith005.Ian Lynagh2007-05-031-1/+3
| | | | | cvts[sd]2siq? -> cvtts[sd]2siq?
* further improvements to the x86/x86_64 NCGSimon Marlow2007-03-011-0/+22
|
* Use the most complex form of addressing modes on x86Simon Marlow2007-03-011-9/+22
| | | | | We had a pattern that matched (base+(index<<N)), but not (base+(index<<N)+M).
* is64BitInteger: truncate to 64 bits before testingSimon Marlow2007-03-011-1/+7
| | | | | | We weren't catching some literals that actually fit in 32 bits before, because e.g. -1 was sometimes represented as 0xffffffffffffffff in CmmInt.
* x86: disable assertion that conditionals are not on I8; they can bemrchebas@gmail.com2007-01-191-1/+1
|
* Unbreak x86_64 PIC patch, part 3wolfgang.thaller@gmx.net2006-12-111-1/+1
| | | | | | | | This time, the PowerPC NCG suffered from a typo. (I've really grown to hate all those #if foo_TARGET_ARCH lines. I need to build GHC for at least four different platforms just to make sure that there are no typos...)
* Support MO_WriteBarrier in PowerPC NCG (lwsync instruction)wolfgang.thaller@gmx.net2006-12-111-0/+4
|
* x86_64: support PIC and therefore, Mac OS X in the NCGwolfgang.thaller@gmx.net2006-12-071-10/+43
| | | | | | | | | | Supporting x86_64-apple-darwin in the NCG basically boils down to supporting position-independent code in the NCG. PIC code works almost exactly the same as on x86_64-linux, while position-dependent code is not supported at all. This patch implements -fPIC for x86_64-linux, too, but that is untested.
* x86_64 NCG: fix register usage for CALLswolfgang.thaller@gmx.net2006-11-291-1/+1
| | | | | | | For varargs calls, CALL reads the %al register; record that fact for the benefit of the register allocator. (There was a previous attempt to do this, but it was broken.)
* Support I64->I32 casts in the NCG, and use them for I64->Integer conversionswolfgang.thaller@gmx.net2006-11-241-0/+25
| | | | | We can avoid using any other long long operations in PrimOps.cmm. One more step towards compiling the RTS using the NCG.
* Module header tidyup #2Simon Marlow2006-10-111-4/+4
| | | | Push this further along, and fix build problems in the first patch.
* Fix linking to expf on WindowsIan Lynagh2006-09-101-1/+1
|
* add MO_WriteBarrier to CallishMachOpsSimon Marlow2006-06-291-0/+8
| | | | This will let us express write barriers in C--
* improve a panic messageSimon Marlow2006-06-201-1/+1
|
* fix a case of "naughty I386 byte reg"Simon Marlow2006-06-061-12/+22
| | | | | The fix is a little hacky, because we don't have support for register classes in general, but it's an improvement.
* Reorganisation of the source treeSimon Marlow2006-04-071-0/+4654
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.