ghc-hetmet.git
24 years ago[project @ 2000-02-15 13:16:19 by sewardj]
sewardj [Tue, 15 Feb 2000 13:16:20 +0000 (13:16 +0000)]
[project @ 2000-02-15 13:16:19 by sewardj]
Backend interop fixes:
-- Make Hugs use the same constructor tag numbering as GHC, viz, starting
   at zero.
-- Evaluator.c: when unwinding the stack on entering a constructor,
   return to the scheduler if a RET_{VEC_}{SMALL|BIG} is found on the
   stack.

24 years ago[project @ 2000-02-15 11:24:20 by sewardj]
sewardj [Tue, 15 Feb 2000 11:24:20 +0000 (11:24 +0000)]
[project @ 2000-02-15 11:24:20 by sewardj]
In hugsprimRunIO_toplevel, use catchException instead of catch.
At least exceptions can then be caught, although Hugs then goes on
to die with an assertion failure in unblockAsyncExceptionszh_ret_entry,
probably caused by wrongly entering it twice in immediate succession.

24 years ago[project @ 2000-02-14 11:59:27 by sewardj]
sewardj [Mon, 14 Feb 2000 11:59:27 +0000 (11:59 +0000)]
[project @ 2000-02-14 11:59:27 by sewardj]
Build parser/ctypes.o with $(HC), not $(CC).

24 years ago[project @ 2000-02-14 11:15:09 by sewardj]
sewardj [Mon, 14 Feb 2000 11:15:09 +0000 (11:15 +0000)]
[project @ 2000-02-14 11:15:09 by sewardj]
wibble

24 years ago[project @ 2000-02-14 11:13:11 by sewardj]
sewardj [Mon, 14 Feb 2000 11:13:11 +0000 (11:13 +0000)]
[project @ 2000-02-14 11:13:11 by sewardj]
cosmetic wibbles

24 years ago[project @ 2000-02-14 11:12:29 by sewardj]
sewardj [Mon, 14 Feb 2000 11:12:29 +0000 (11:12 +0000)]
[project @ 2000-02-14 11:12:29 by sewardj]
Remove fromDouble from class Fractional, and make it standalone.
This matches GHC.  I don't think this is strictly necessary, but
Hugs refers to fromDouble during desugaring and I prefer to avoid
possible mishaps.

24 years ago[project @ 2000-02-14 11:04:58 by sewardj]
sewardj [Mon, 14 Feb 2000 11:04:58 +0000 (11:04 +0000)]
[project @ 2000-02-14 11:04:58 by sewardj]
Paranoia: barf if enterBCO_primop1 or enterBCO_primop2 are called
in combined mode (since GHC should handle all primops in that case).

24 years ago[project @ 2000-02-14 11:01:27 by sewardj]
sewardj [Mon, 14 Feb 2000 11:01:27 +0000 (11:01 +0000)]
[project @ 2000-02-14 11:01:27 by sewardj]
Add a debugging version of the mini-interpreter for Hugs.

24 years ago[project @ 2000-02-14 10:59:30 by sewardj]
sewardj [Mon, 14 Feb 2000 10:59:30 +0000 (10:59 +0000)]
[project @ 2000-02-14 10:59:30 by sewardj]
Tart up printStackChunk a bit./

24 years ago[project @ 2000-02-14 10:58:05 by sewardj]
sewardj [Mon, 14 Feb 2000 10:58:05 +0000 (10:58 +0000)]
[project @ 2000-02-14 10:58:05 by sewardj]
initStorage: remove #ifdef COMPILER around call to mp_set_memory_functions.

24 years ago[project @ 2000-02-14 10:56:47 by sewardj]
sewardj [Mon, 14 Feb 2000 10:56:47 +0000 (10:56 +0000)]
[project @ 2000-02-14 10:56:47 by sewardj]
PUSH_N for 0 regs available: also push stack tag to aid debugging

24 years ago[project @ 2000-02-11 13:07:25 by simonpj]
simonpj [Fri, 11 Feb 2000 13:07:25 +0000 (13:07 +0000)]
[project @ 2000-02-11 13:07:25 by simonpj]
Add pprFSInCStyle

24 years ago[project @ 2000-02-11 13:06:39 by simonpj]
simonpj [Fri, 11 Feb 2000 13:06:39 +0000 (13:06 +0000)]
[project @ 2000-02-11 13:06:39 by simonpj]
Add a few functions to Outputable

24 years ago[project @ 2000-02-10 18:39:51 by lewie]
lewie [Thu, 10 Feb 2000 18:39:51 +0000 (18:39 +0000)]
[project @ 2000-02-10 18:39:51 by lewie]
Fix a couple of Implicit Param wibbles.

24 years ago[project @ 2000-02-10 15:39:39 by simonpj]
simonpj [Thu, 10 Feb 2000 15:39:39 +0000 (15:39 +0000)]
[project @ 2000-02-10 15:39:39 by simonpj]
A few comments about RnIfaces.lookupFixity

24 years ago[project @ 2000-02-09 18:32:09 by lewie]
lewie [Wed, 9 Feb 2000 18:32:10 +0000 (18:32 +0000)]
[project @ 2000-02-09 18:32:09 by lewie]
Misc. fixes to implicit parameters support.

24 years ago[project @ 2000-02-09 14:50:19 by sewardj]
sewardj [Wed, 9 Feb 2000 14:50:21 +0000 (14:50 +0000)]
[project @ 2000-02-09 14:50:19 by sewardj]
More bug fixes resulting from trying to load small programs into Hugs
using the GHC Prelude:

-- Better handling of kinds on class method types.  It's still a kludge
   (I reckon) but works well enough to correctly handle methods in
   Monad and Functor.  See comment in startGHCClass() in interface.c.

-- Add hugsprimReadField and hugsprimShowField.

-- Make error be exported from the Prelude.  For some reason, PrelErr.hi
   doesn't give a signature for error, so we have to fake it by copying
   that of hugsprimError.

-- Handle fixity declarations read from interfaces.

-- Set nameListMonad so that list comprehensions can be translated.

24 years ago[project @ 2000-02-08 17:50:46 by sewardj]
sewardj [Tue, 8 Feb 2000 17:50:46 +0000 (17:50 +0000)]
[project @ 2000-02-08 17:50:46 by sewardj]
-- finishGHCClass(): fill in the .number fields for members in the
   correct order.
-- Let nullary constructors be called via their _closure labels so they
   don't get heap-allocated.

24 years ago[project @ 2000-02-08 15:34:36 by sewardj]
sewardj [Tue, 8 Feb 2000 15:34:36 +0000 (15:34 +0000)]
[project @ 2000-02-08 15:34:36 by sewardj]
Add hugsprimError, hugsprimCompAux.

24 years ago[project @ 2000-02-08 15:32:29 by sewardj]
sewardj [Tue, 8 Feb 2000 15:32:31 +0000 (15:32 +0000)]
[project @ 2000-02-08 15:32:29 by sewardj]
Many bug fixes for object loading:
-- create class symbol table entries more correctly
-- find GHC-created info tables for names which are constructors
-- add debugging machinery:   :d <entity>  and symbol-table printers

24 years ago[project @ 2000-02-07 20:57:58 by simonmar]
simonmar [Mon, 7 Feb 2000 20:57:58 +0000 (20:57 +0000)]
[project @ 2000-02-07 20:57:58 by simonmar]
I'm utterly bemused, but it seems that someone called simonpj disabled
the virtual timer in rev 1.25:

+ #if 0 /* tmp--SDM */
       initialize_virtual_timer(TICK_MILLISECS);
+ #endif

and tried to blame it on me by putting my name in the comment :-)

(Simon - perhaps you copied this file out of my working tree and
committed it by mistake or something?)

24 years ago[project @ 2000-02-04 17:29:24 by sewardj]
sewardj [Fri, 4 Feb 2000 17:29:24 +0000 (17:29 +0000)]
[project @ 2000-02-04 17:29:24 by sewardj]
Remove various -fvia-Cs, leaving the minimal required set (4 of them).

24 years ago[project @ 2000-02-04 17:26:58 by sewardj]
sewardj [Fri, 4 Feb 2000 17:26:58 +0000 (17:26 +0000)]
[project @ 2000-02-04 17:26:58 by sewardj]
GSQRT, GSIN, GCOS, GTAN: if result size is float (as opposed to double),
truncate the result to that length by writing it into memory and
getting it back again (duh!), since that's what gcc does.

24 years ago[project @ 2000-02-04 17:02:11 by lewie]
lewie [Fri, 4 Feb 2000 17:02:12 +0000 (17:02 +0000)]
[project @ 2000-02-04 17:02:11 by lewie]
Fix a subtle bug in overlapping instances where a generic instance is sometimes
chosen rather than a more specific one.  See discussion at top of InstEnv
for details.

24 years ago[project @ 2000-02-04 13:41:00 by sewardj]
sewardj [Fri, 4 Feb 2000 13:41:00 +0000 (13:41 +0000)]
[project @ 2000-02-04 13:41:00 by sewardj]
startGHCClass(): set the .dsels (superclass dsels) field.

24 years ago[project @ 2000-02-04 11:18:05 by simonmar]
simonmar [Fri, 4 Feb 2000 11:18:05 +0000 (11:18 +0000)]
[project @ 2000-02-04 11:18:05 by simonmar]
Fix bug #2 in unregisterised RTS:

forceIO had the same problem as catch#.  This bug has been here for a
long time, not sure why we haven't noticed it before.

Jules: that should get you back on the road.

24 years ago[project @ 2000-02-04 11:15:04 by simonmar]
simonmar [Fri, 4 Feb 2000 11:15:04 +0000 (11:15 +0000)]
[project @ 2000-02-04 11:15:04 by simonmar]
Fix bug #1 in the unregisterised RTS:

Now that catch# is a fully-fledged IO operation, it has to respect the
return convention for IO, in particular if we don't have an R1
(eg. when unregisterised) then the return value goes on the stack.

The return convention could be better, after all we use R1 when
returning normal values, but I'll just fix it for now.

24 years ago[project @ 2000-02-03 18:01:03 by sewardj]
sewardj [Thu, 3 Feb 2000 18:01:03 +0000 (18:01 +0000)]
[project @ 2000-02-03 18:01:03 by sewardj]
Fix x86 NCG so the compiler can compile itself `-O':

-- Implement fake x86 insn GITOD/GITOF.
-- Implement primops ReadMutVarOp and WriteMutVarOp.
-- Pro tem, disable use of %eax as a spill temp.
-- Clarify wording of Rules of the Game comment in MachCode.

24 years ago[project @ 2000-02-03 15:56:13 by sewardj]
sewardj [Thu, 3 Feb 2000 15:56:13 +0000 (15:56 +0000)]
[project @ 2000-02-03 15:56:13 by sewardj]
Remember all the classes loaded from an object file group, and
call visitClass on them at the end of processInterfaces(), so that
the .level numbers on the class get calculated.

24 years ago[project @ 2000-02-03 14:01:07 by sewardj]
sewardj [Thu, 3 Feb 2000 14:01:07 +0000 (14:01 +0000)]
[project @ 2000-02-03 14:01:07 by sewardj]
Add hugsprimPmFail.

24 years ago[project @ 2000-02-03 13:55:21 by sewardj]
sewardj [Thu, 3 Feb 2000 13:55:22 +0000 (13:55 +0000)]
[project @ 2000-02-03 13:55:21 by sewardj]
-- Make default defaults work in combined mode
-- rename some fns in lib/Prelude.hs to match names in HugsPrel.lhs

24 years ago[project @ 2000-02-02 11:40:33 by sewardj]
sewardj [Wed, 2 Feb 2000 11:40:33 +0000 (11:40 +0000)]
[project @ 2000-02-02 11:40:33 by sewardj]
trivialCode on x86 is the heart of instruction selection for
expressions.  It is definitely a non-trivial in complexity.
To generate correct code it needs to observe preserve several
delicate invariants, but didn't.

-- Recorded in MachCode.lhs the "Rules of the Game"; ie what I think
   the required invariants are.

-- Completely rewrote trivialCode (also shift_code).  I think it should
   handle all cases correctly, and has special treatment for literal
   operands.

-- Updated NOTES file to record issues which need to be resolved
   before x86 nativeGen can be considered ready for public use.

24 years ago[project @ 2000-02-01 16:08:17 by sewardj]
sewardj [Tue, 1 Feb 2000 16:08:17 +0000 (16:08 +0000)]
[project @ 2000-02-01 16:08:17 by sewardj]
Export findReservedRegs for all architectures.

24 years ago[project @ 2000-02-01 16:02:12 by sewardj]
sewardj [Tue, 1 Feb 2000 16:02:12 +0000 (16:02 +0000)]
[project @ 2000-02-01 16:02:12 by sewardj]
primOpStrictness(CatchOp): catch# isn't strict in its first arg.

24 years ago[project @ 2000-02-01 14:08:22 by sewardj]
sewardj [Tue, 1 Feb 2000 14:08:22 +0000 (14:08 +0000)]
[project @ 2000-02-01 14:08:22 by sewardj]
Double the number of RESERVED_C_STACK_BYTES so as to give the
native code generator up to 508 spill slots.

24 years ago[project @ 2000-02-01 14:02:02 by sewardj]
sewardj [Tue, 1 Feb 2000 14:02:02 +0000 (14:02 +0000)]
[project @ 2000-02-01 14:02:02 by sewardj]
-- Cosmetic changes in register allocator.

-- Implement macro HP_GEN_SEQ_NP.

-- MachCode(trivialCode, x86): because one of the operands is also
   the destination (on this 2-address arch), it's invalid to sequence
   the code to compute the operands using asmParThen [code1, code2].
   since the order of assignments matters.  Fixed.

24 years ago[project @ 2000-01-31 18:11:50 by sewardj]
sewardj [Mon, 31 Jan 2000 18:11:50 +0000 (18:11 +0000)]
[project @ 2000-01-31 18:11:50 by sewardj]
Spilling and x86 shift-code cleanups.

24 years ago[project @ 2000-01-31 15:35:05 by simonmar]
simonmar [Mon, 31 Jan 2000 15:35:05 +0000 (15:35 +0000)]
[project @ 2000-01-31 15:35:05 by simonmar]
Add configure target to detect when autoconf needs to be run.

24 years ago[project @ 2000-01-31 15:12:07 by simonmar]
simonmar [Mon, 31 Jan 2000 15:12:07 +0000 (15:12 +0000)]
[project @ 2000-01-31 15:12:07 by simonmar]
Include the configure script in a src dist.

24 years ago[project @ 2000-01-31 14:25:34 by sewardj]
sewardj [Mon, 31 Jan 2000 14:25:34 +0000 (14:25 +0000)]
[project @ 2000-01-31 14:25:34 by sewardj]
Change primOpUsg(CatchOp) to reflect changed arity of catch#.  Also
update primOpStrictness(CatchOp).

24 years ago[project @ 2000-01-31 13:17:18 by simonmar]
simonmar [Mon, 31 Jan 2000 13:17:18 +0000 (13:17 +0000)]
[project @ 2000-01-31 13:17:18 by simonmar]
We don't want -keep-{hc,s}-files-too on by default, and why do we need
-H32M -K32M for PrelBase.lhs?  Hans: I want a word with you :)

24 years ago[project @ 2000-01-30 10:25:27 by simonmar]
simonmar [Sun, 30 Jan 2000 10:25:29 +0000 (10:25 +0000)]
[project @ 2000-01-30 10:25:27 by simonmar]
Change the type of catch# to

catch# :: (W# -> (# W#, a #))
       -> (b -> W# -> (# W#, a #))
       -> W# -> (# W# , a #)

where W# == State# RealWorld.  In other words, make it explicit that
catch# is an IO operation and takes IO operations as arguments.  The
previous type was too general, and resulted in catch# having the wrong
arity which could cause mis-optimisations.

The down side is that we now have to pass the state token around
inside the primop instead of doing it in the Haskell wrapper, and
raiseAsync() also has to build a PAP(handler,exception,realworld)
instead of just a PAP(handler,exception) when it invokes a handler as
a result of an async exception.

I also added some optimisations to (un)?blockAsyncException to not
grow the stack if it can be avoided, such as when we're about to block
async exceptions and there's a blockAsyncExceptions_ret stack frame on
the top of the stack.

24 years ago[project @ 2000-01-30 10:17:44 by simonmar]
simonmar [Sun, 30 Jan 2000 10:17:44 +0000 (10:17 +0000)]
[project @ 2000-01-30 10:17:44 by simonmar]
The bd->free field of a block descriptor is supposed to be set to -1
for free blocks, if we're #ifdef DEBUGging.  It wasn't sometimes.

24 years ago[project @ 2000-01-30 10:16:09 by simonmar]
simonmar [Sun, 30 Jan 2000 10:16:09 +0000 (10:16 +0000)]
[project @ 2000-01-30 10:16:09 by simonmar]
Deal with ThreadRelocated in checkTSO().

24 years ago[project @ 2000-01-30 10:11:32 by simonmar]
simonmar [Sun, 30 Jan 2000 10:11:32 +0000 (10:11 +0000)]
[project @ 2000-01-30 10:11:32 by simonmar]
Add notes about where the IO representation is wired in to various
parts of the source tree, since I'm about to add some more.

24 years ago[project @ 2000-01-30 10:08:27 by simonmar]
simonmar [Sun, 30 Jan 2000 10:08:27 +0000 (10:08 +0000)]
[project @ 2000-01-30 10:08:27 by simonmar]
comment fixup

24 years ago[project @ 2000-01-28 20:52:37 by lewie]
lewie [Fri, 28 Jan 2000 20:52:46 +0000 (20:52 +0000)]
[project @ 2000-01-28 20:52:37 by lewie]
First pass at implicit parameters.  Honest, I didn't really go in *intending*
to modify every file in the typechecker... ;-)  The breadth of the change
is partly due to generalizing contexts so that they are not hardwired to
be (Class, [Type]) pairs.  See types/Type.lhs for details (look for PredType).

24 years ago[project @ 2000-01-28 18:07:55 by sewardj]
sewardj [Fri, 28 Jan 2000 18:07:56 +0000 (18:07 +0000)]
[project @ 2000-01-28 18:07:55 by sewardj]
Modifications to make x86 register spilling to work reasonably.  It
should work ok most of the time, although there is still a remote
possibility that the allocator simply will be unable to complete
spilling, and will just give up.

-- Incrementally try with 0, 1, 2 and 3 spill regs, so as not to
   unduly restrict the supply of regs in code which doesn't need spilling.

-- Remove the use of %ecx for shift values, so it is always available
   as the first-choice spill temporary.  For code which doesn't do
   int division, make %edx and %eax available for spilling too.
   Shifts by a non-constant amount (very rare) are now done by
   a short test-and-jump sequence, so that %ecx is not tied up.

-- x86 FP: do sin, cos, tan in-line so we get the same answers as gcc.

-- Moved a little code around to remove recursive dependencies.

-- Fix a subtle bug in x86 regUsage, which could cause underestimation
   of live ranges.

24 years ago[project @ 2000-01-28 16:36:03 by simonmar]
simonmar [Fri, 28 Jan 2000 16:36:03 +0000 (16:36 +0000)]
[project @ 2000-01-28 16:36:03 by simonmar]
bump version to 4.07 on the main trunk.

24 years ago[project @ 2000-01-28 14:14:01 by simonmar]
simonmar [Fri, 28 Jan 2000 14:14:01 +0000 (14:14 +0000)]
[project @ 2000-01-28 14:14:01 by simonmar]
don't use ^ in patterns, Solaris sh barfs on it.

24 years ago[project @ 2000-01-28 09:40:05 by sewardj]
sewardj [Fri, 28 Jan 2000 09:40:06 +0000 (09:40 +0000)]
[project @ 2000-01-28 09:40:05 by sewardj]
Commit all changes prior to addressing the x86 spilling situation in
the register allocator.

-- Fix nonsensical x86 addressing mode hacks in mangleIndexTree
   and getAmode.

-- Make char-sized loads work properly, using MOVZBL.

-- In assignIntCode, use primRep on the assign node to determine
   the size of data transfer, not the size of the source.

-- Redo Integer primitives to be in line with current representation
   of Integers.

24 years ago[project @ 2000-01-27 10:23:09 by rrt]
rrt [Thu, 27 Jan 2000 10:23:09 +0000 (10:23 +0000)]
[project @ 2000-01-27 10:23:09 by rrt]
Added note about the necessity of using the Cygnus DocBook tools (rather
than, e.g., SuSE).

24 years ago[project @ 2000-01-26 17:02:32 by rrt]
rrt [Wed, 26 Jan 2000 17:02:32 +0000 (17:02 +0000)]
[project @ 2000-01-26 17:02:32 by rrt]
Removed redundant rules (%.dvi : %.tex &c.) that were breaking DocBook
(re)building.

24 years ago[project @ 2000-01-26 16:08:25 by rrt]
rrt [Wed, 26 Jan 2000 16:08:25 +0000 (16:08 +0000)]
[project @ 2000-01-26 16:08:25 by rrt]
Corrected release notes URLs

24 years ago[project @ 2000-01-26 13:40:54 by sewardj]
sewardj [Wed, 26 Jan 2000 13:40:54 +0000 (13:40 +0000)]
[project @ 2000-01-26 13:40:54 by sewardj]
Observe the C conventions for use of the FP register stack.  In particular,
free up any live fp registers prior to non-local control transfers.  Sigh.

This is not good.  The FP situation needs to be reviewed once the rest
of x86 nativeGen is stable.

24 years ago[project @ 2000-01-26 13:38:36 by sewardj]
sewardj [Wed, 26 Jan 2000 13:38:36 +0000 (13:38 +0000)]
[project @ 2000-01-26 13:38:36 by sewardj]
genCCall (x86): pass float args in double format.

24 years ago[project @ 2000-01-26 13:38:02 by sewardj]
sewardj [Wed, 26 Jan 2000 13:38:02 +0000 (13:38 +0000)]
[project @ 2000-01-26 13:38:02 by sewardj]
spillReg, loadReg (x86): always spill fp registers using double-sized
loads/stores, even if they nominally contain only a float value --
otherwise the spill loses the extra guard bits.

24 years ago[project @ 2000-01-26 13:07:55 by simonmar]
simonmar [Wed, 26 Jan 2000 13:07:55 +0000 (13:07 +0000)]
[project @ 2000-01-26 13:07:55 by simonmar]
Finish pass 1 over the build system docs.

24 years ago[project @ 2000-01-26 12:45:52 by simonmar]
simonmar [Wed, 26 Jan 2000 12:45:52 +0000 (12:45 +0000)]
[project @ 2000-01-26 12:45:52 by simonmar]
Fix some of the gross inaccuracies in this documentation.

24 years ago[project @ 2000-01-26 12:27:34 by rrt]
rrt [Wed, 26 Jan 2000 12:27:34 +0000 (12:27 +0000)]
[project @ 2000-01-26 12:27:34 by rrt]
Removed version number and reelucidated some text swallowed by index entries.

24 years ago[project @ 2000-01-26 11:40:54 by rrt]
rrt [Wed, 26 Jan 2000 11:40:54 +0000 (11:40 +0000)]
[project @ 2000-01-26 11:40:54 by rrt]
Changed default text size to "normal".

24 years ago[project @ 2000-01-26 11:40:26 by sewardj]
sewardj [Wed, 26 Jan 2000 11:40:26 +0000 (11:40 +0000)]
[project @ 2000-01-26 11:40:26 by sewardj]
spillReg, loadReg (x86): spill above %esp, not below it.  Duh.  If you
spill below %esp, ccalls, which use stack below %esp, can trash the
spill area.

24 years ago[project @ 2000-01-26 11:35:02 by rrt]
rrt [Wed, 26 Jan 2000 11:35:02 +0000 (11:35 +0000)]
[project @ 2000-01-26 11:35:02 by rrt]
Updated version to 4.06

24 years ago[project @ 2000-01-26 10:44:07 by panne]
panne [Wed, 26 Jan 2000 10:44:13 +0000 (10:44 +0000)]
[project @ 2000-01-26 10:44:07 by panne]
Sven's first autoheader commandment: Don't change config.h.in manually...!
(Why is mk/config.h.in in the repository? configure is not, either.)

24 years ago[project @ 2000-01-25 20:09:22 by sewardj]
sewardj [Tue, 25 Jan 2000 20:09:22 +0000 (20:09 +0000)]
[project @ 2000-01-25 20:09:22 by sewardj]
Teach magicIdRegMaybe about R9 and R10.

24 years ago[project @ 2000-01-25 20:08:33 by sewardj]
sewardj [Tue, 25 Jan 2000 20:08:33 +0000 (20:08 +0000)]
[project @ 2000-01-25 20:08:33 by sewardj]
Print a useful panic msg if getRegister(x86) can't reduce a tree.

24 years ago[project @ 2000-01-25 19:49:45 by sewardj]
sewardj [Tue, 25 Jan 2000 19:49:45 +0000 (19:49 +0000)]
[project @ 2000-01-25 19:49:45 by sewardj]
pprInstr: implement GABS, GNEG, GSQRT.

24 years ago[project @ 2000-01-25 19:33:32 by sewardj]
sewardj [Tue, 25 Jan 2000 19:33:32 +0000 (19:33 +0000)]
[project @ 2000-01-25 19:33:32 by sewardj]
Handle float args correctly for x86 ccalls.

24 years ago[project @ 2000-01-25 19:18:42 by sewardj]
sewardj [Tue, 25 Jan 2000 19:18:42 +0000 (19:18 +0000)]
[project @ 2000-01-25 19:18:42 by sewardj]
Disable a dubious looking clause for trivialCode (x86), which was
generating bad code for some subtracts.

24 years ago[project @ 2000-01-25 18:09:52 by sewardj]
sewardj [Tue, 25 Jan 2000 18:09:52 +0000 (18:09 +0000)]
[project @ 2000-01-25 18:09:52 by sewardj]
Implement the HP_CHK_GEN macro.  As a result, teach mkNativeHdr et al
about R9 and R10.

24 years ago[project @ 2000-01-25 16:59:30 by sewardj]
sewardj [Tue, 25 Jan 2000 16:59:30 +0000 (16:59 +0000)]
[project @ 2000-01-25 16:59:30 by sewardj]
wibble

24 years ago[project @ 2000-01-25 16:58:57 by sewardj]
sewardj [Tue, 25 Jan 2000 16:58:57 +0000 (16:58 +0000)]
[project @ 2000-01-25 16:58:57 by sewardj]
amodeToStix, GET_TAG: implement correctly for little-endian-32 and
supply implementation for big-endian-32.  Definitely won't work on
64-bit platforms.

24 years ago[project @ 2000-01-25 16:57:40 by sewardj]
sewardj [Tue, 25 Jan 2000 16:57:40 +0000 (16:57 +0000)]
[project @ 2000-01-25 16:57:40 by sewardj]
genCodeInfoTable: put tag value into srt_len field for constr info tables.

24 years ago[project @ 2000-01-25 14:57:53 by panne]
panne [Tue, 25 Jan 2000 14:57:53 +0000 (14:57 +0000)]
[project @ 2000-01-25 14:57:53 by panne]
"installing" is now called "building"

24 years ago[project @ 2000-01-25 14:40:32 by sewardj]
sewardj [Tue, 25 Jan 2000 14:40:32 +0000 (14:40 +0000)]
[project @ 2000-01-25 14:40:32 by sewardj]
x86: free up all FP regs before doing a ccall.  This appears to be a
part of the x86 calling convention(s).

24 years ago[project @ 2000-01-25 14:39:14 by panne]
panne [Tue, 25 Jan 2000 14:39:14 +0000 (14:39 +0000)]
[project @ 2000-01-25 14:39:14 by panne]
Added a bunch of #defines for {SIZEOF,ALIGNMENT}_{INT,WORD}{8,16,32,64}.
All this is a real hack: The include files need a more thorough restructuring.

24 years ago[project @ 2000-01-25 14:36:53 by panne]
panne [Tue, 25 Jan 2000 14:36:53 +0000 (14:36 +0000)]
[project @ 2000-01-25 14:36:53 by panne]
Added note about necessary synching with MachDeps.h and fixed a small typo

24 years ago[project @ 2000-01-25 14:34:07 by panne]
panne [Tue, 25 Jan 2000 14:34:12 +0000 (14:34 +0000)]
[project @ 2000-01-25 14:34:07 by panne]
Added more SIZEOF/ALIGNMENT tests

24 years ago[project @ 2000-01-25 14:12:08 by simonpj]
simonpj [Tue, 25 Jan 2000 14:12:08 +0000 (14:12 +0000)]
[project @ 2000-01-25 14:12:08 by simonpj]
fix typo

24 years ago[project @ 2000-01-25 12:01:59 by rrt]
rrt [Tue, 25 Jan 2000 12:01:59 +0000 (12:01 +0000)]
[project @ 2000-01-25 12:01:59 by rrt]
Renamed from installing.sgml

24 years ago[project @ 2000-01-25 12:01:28 by rrt]
rrt [Tue, 25 Jan 2000 12:01:28 +0000 (12:01 +0000)]
[project @ 2000-01-25 12:01:28 by rrt]
Renamed to building.sgml

24 years ago[project @ 2000-01-25 11:33:46 by rrt]
rrt [Tue, 25 Jan 2000 11:33:46 +0000 (11:33 +0000)]
[project @ 2000-01-25 11:33:46 by rrt]
Corrected some URLs

24 years ago[project @ 2000-01-25 11:25:54 by rrt]
rrt [Tue, 25 Jan 2000 11:25:54 +0000 (11:25 +0000)]
[project @ 2000-01-25 11:25:54 by rrt]
Added an ID to the exceptions update section to use as a hyperlink destination

24 years ago[project @ 2000-01-25 10:56:17 by simonpj]
simonpj [Tue, 25 Jan 2000 10:56:17 +0000 (10:56 +0000)]
[project @ 2000-01-25 10:56:17 by simonpj]
Announce 4.06

24 years ago[project @ 2000-01-25 10:31:08 by simonmar]
simonmar [Tue, 25 Jan 2000 10:31:08 +0000 (10:31 +0000)]
[project @ 2000-01-25 10:31:08 by simonmar]
urk, Solaris sh doesn't understand [^0-9] in patterns, it seems.

24 years ago[project @ 2000-01-25 10:25:15 by sewardj]
sewardj [Tue, 25 Jan 2000 10:25:15 +0000 (10:25 +0000)]
[project @ 2000-01-25 10:25:15 by sewardj]
Add missing final paragraph of explaination about x86 FP trickery.

24 years ago[project @ 2000-01-25 10:23:34 by sewardj]
sewardj [Tue, 25 Jan 2000 10:23:34 +0000 (10:23 +0000)]
[project @ 2000-01-25 10:23:34 by sewardj]
Minor improvements to x86 FP fake-to-real insn translation.

24 years ago[project @ 2000-01-25 10:22:55 by sewardj]
sewardj [Tue, 25 Jan 2000 10:22:55 +0000 (10:22 +0000)]
[project @ 2000-01-25 10:22:55 by sewardj]
genCCall for x86, as supplied, used PUSH et al to move args onto the C
stack ready for the call.  Reasonable as this seems, it causes a
problem with spill code, since the spiller spills relative to %esp and
assumes that %esp doesn't move.  If the args of a ccall involved any
spilled values, the resulting code would be wrong.

The One True Way is to do it like a RISC: move args to the stack
without adjusting %esp for each argument, then adjust it all at once
immediately prior to the call insn and un-adjust it immediately
afterwards.  genCCall now does this.  In general, push/pop and other
C-stack effecting operations should not be generated for the same
reason.

24 years ago[project @ 2000-01-25 10:15:55 by simonmar]
simonmar [Tue, 25 Jan 2000 10:15:55 +0000 (10:15 +0000)]
[project @ 2000-01-25 10:15:55 by simonmar]
Add -optCrts-M80m for older compilers.  Sigh.

24 years ago[project @ 2000-01-25 10:06:31 by panne]
panne [Tue, 25 Jan 2000 10:06:32 +0000 (10:06 +0000)]
[project @ 2000-01-25 10:06:31 by panne]
Added intToWord to PrelAddr.
Use it instead of int2Word#-hacks.

24 years ago[project @ 2000-01-24 18:33:34 by sewardj]
sewardj [Mon, 24 Jan 2000 18:33:34 +0000 (18:33 +0000)]
[project @ 2000-01-24 18:33:34 by sewardj]
Start a NOTES file, recording known but un-fixed nativeGen bugs.

24 years ago[project @ 2000-01-24 18:28:53 by sewardj]
sewardj [Mon, 24 Jan 2000 18:28:53 +0000 (18:28 +0000)]
[project @ 2000-01-24 18:28:53 by sewardj]
Fix syntax errors in #ifdef'd Alpha/Sparc bits.

24 years ago[project @ 2000-01-24 18:25:17 by sewardj]
sewardj [Mon, 24 Jan 2000 18:25:17 +0000 (18:25 +0000)]
[project @ 2000-01-24 18:25:17 by sewardj]
Insert large commit message re x86 FP rehash as a comment.

24 years ago[project @ 2000-01-24 18:22:07 by sewardj]
sewardj [Mon, 24 Jan 2000 18:22:08 +0000 (18:22 +0000)]
[project @ 2000-01-24 18:22:07 by sewardj]
ARR_HDR_SIZE --> ARR_WORDS_HDR_SIZE, and derived quantities in
Constants.h, Constants.lhs et al are similarly renamed.

new constant ARR_PTRS_HDR_SIZE, with corresponding derivatives.

24 years ago[project @ 2000-01-24 17:44:52 by rrt]
rrt [Mon, 24 Jan 2000 17:44:52 +0000 (17:44 +0000)]
[project @ 2000-01-24 17:44:52 by rrt]
Changed default paper size for SGML output to A4 (%paper-type%).

24 years ago[project @ 2000-01-24 17:24:23 by sewardj]
sewardj [Mon, 24 Jan 2000 17:24:24 +0000 (17:24 +0000)]
[project @ 2000-01-24 17:24:23 by sewardj]
Major reworking of the x86 floating point code generation.

Intel, in their infinite wisdom, selected a stack model for floating
point registers on x86.  That might have made sense back in 1979 --
nowadays we can see it for the nonsense it really is.  A stack model
fits poorly with the existing nativeGen infrastructure, which assumes
flat integer and FP register sets.  Prior to this commit, nativeGen
could not generate correct x86 FP code -- to do so would have meant
somehow working the register-stack paradigm into the register
allocator and spiller, which sounds very difficult.

We have decided to cheat, and go for a simple fix which requires no
infrastructure modifications, at the expense of generating ropey but
correct FP code.  All notions of the x86 FP stack and its insns have
been removed.  Instead, we pretend (to the instruction selector and
register allocator) that x86 has six floating point registers, %fake0
.. %fake5, which can be used in the usual flat manner.  We further
claim that x86 has floating point instructions very similar to SPARC
and Alpha, that is, a simple 3-operand register-register arrangement.
Code generation and register allocation proceed on this basis.

When we come to print out the final assembly, our convenient fiction
is converted to dismal reality.  Each fake instruction is
independently converted to a series of real x86 instructions.
%fake0 .. %fake5 are mapped to %st(0) .. %st(5).  To do reg-reg
arithmetic operations, the two operands are pushed onto the top of the
FP stack, the operation done, and the result copied back into the
relevant register.  There are only six %fake registers because 2 are
needed for the translation, and x86 has 8 in total.

The translation is inefficient but is simple and it works.  A cleverer
translation would handle a sequence of insns, simulating the FP stack
contents, would not impose a fixed mapping from %fake to %st regs, and
hopefully could avoid most of the redundant reg-reg moves of the
current translation.

24 years ago[project @ 2000-01-24 17:09:40 by rrt]
rrt [Mon, 24 Jan 2000 17:09:40 +0000 (17:09 +0000)]
[project @ 2000-01-24 17:09:40 by rrt]
Added table example.

24 years ago[project @ 2000-01-24 16:55:45 by panne]
panne [Mon, 24 Jan 2000 16:55:51 +0000 (16:55 +0000)]
[project @ 2000-01-24 16:55:45 by panne]
Added autoconf magic for size/alignment of some more C types

24 years ago[project @ 2000-01-24 16:47:24 by rrt]
rrt [Mon, 24 Jan 2000 16:47:26 +0000 (16:47 +0000)]
[project @ 2000-01-24 16:47:24 by rrt]
Changed double quotes to &ldquo; and &rdquo;. Improvements to Windows
installation instructions.

24 years ago[project @ 2000-01-24 15:40:57 by simonmar]
simonmar [Mon, 24 Jan 2000 15:40:57 +0000 (15:40 +0000)]
[project @ 2000-01-24 15:40:57 by simonmar]
Update the Hall of Fame.