Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/HISTORY
ViewVC logotype

Diff of /sml/trunk/HISTORY

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1180, Tue Mar 26 22:24:24 2002 UTC revision 1184, Fri Mar 29 22:22:22 2002 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2002/03/29 17:22:00
18    Tag: blume-20020329-div
19    Description:
20    
21    Fixed my broken div/mod logic.  Unfortunately, this means that the
22    inline code for div/mod now has one more comparison than before.
23    Fast paths (quotient > 0 or remainder = 0) are not affected, though.
24    The problem was with quotient = 0, because that alone does not tell
25    us which way the rounding went.  One then has to look at whether
26    remainder and divisor have the same sign...  :(
27    
28    Anyway, I replaced the bootfiles with fresh ones...
29    
30    ----------------------------------------------------------------------
31    Name: Matthias Blume
32    Date: 2002/03/29 14:10:00 EST
33    Tag: blume-20020329-inlprims
34    Description:
35    
36    NEW BOOTFILES!!!    Version number bumped to 110.39.3.
37    
38    Primops have changed. This means that the bin/boot-file formats have
39    changed as well.
40    
41    To make sure that there is no confusion, I made a new version.
42    
43    
44    CHANGES:
45    
46    * removed REMT from mltree (remainder should never overflow).
47    
48    * added primops to deal with divisions of all flavors to the frontend
49    
50    * handled these primops all the way through so they map to their respective
51      MLRISC support
52    
53    * used these primops in the implementation of Int, Int32, Word, Word32
54    
55    * removed INLDIV, INLMOD, and INLREM as they are no longer necessary
56    
57    * parameterized INLMIN, INLMAX, and INLABS by a numkind
58    
59    * translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including
60      floating point
61    
62    * used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32,
63      and Real (but Real.abs maps to a separate floating-point-only primop)
64    
65    
66    TODO items:
67    
68    * Hacked Alpha32 instruction selection, disabling the selection of REMx
69      instructions because the machine instruction encoder cannot handle
70      them.  (Hppa, PPC, and Sparc instruction selection did not handle
71      REM in the first place, and REM is supported by the x86 machine coder.)
72    
73    * Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction
74      selection phase.  (The two can be streamlined because the hardware
75      delivers both quotient and remainder at the same time anyway.)
76    
77    * Think about what to do with "valOf(Int32.minInt) div ~1" and friends.
78      (Currently the behavior is inconsistent both across architectures and
79      wrt. the draft Basis spec.)
80    
81    * Word8 should eventually be handled natively, too.
82    
83    * There seems to be one serious bug in mltree-gen.sml.  It appears, though,
84      as if there currently is no execution path that could trigger it in
85      SML/NJ.  (The assumptions underlying functions arith and promotable do not
86      hold for things like multiplication and division.)
87    
88    ----------------------------------------------------------------------
89    Name: Matthias Blume
90    Date: 2002/03/27 16:27:00 EST
91    Tag: blume-20020327-mlrisc-divisions
92    Description:
93    
94    Added support for all four division operations (ML's div, mod, quot,
95    and rem) to MLRISC.  In the course of doing so, I also rationalized
96    the naming (no more annoying switch-around of DIV and QUOT), by
97    parameterizing the operation by div_rounding_mode (which can be either
98    DIV_TO_ZERO or DIV_TO_NEGINF).
99    
100    The generic MLTreeGen functor takes care of compiling all four
101    operations down to only round-to-zero div.
102    
103    Missing pieces:
104    
105      * Doing something smarter than relying on MLTreeGen on architectures
106        like, e.g., the x86 where hardware division delivers both quotient and
107        remainder at the same time.  With this, the implementation of the
108        round-to-neginf operations could be further streamlined.
109    
110      * Remove inlining support for div/mod/rem from the frontend and replace it
111        with primops that get carried through to the backend.  Do this for all
112        int and word types.
113    
114    ----------------------------------------------------------------------
115    Name: Matthias Blume
116  Date: 2002/03/25 17:25:00 EST  Date: 2002/03/25 17:25:00 EST
117  Tag: blume-20020325-divmod  Tag: blume-20020325-divmod
118  Description:  Description:

Legend:
Removed from v.1180  
changed lines
  Added in v.1184

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0