/[cmucl]/src/compiler/float-tran.lisp
ViewVC logotype

Log of /src/compiler/float-tran.lisp

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (annotate)
Sticky Tag:

Revision 1.142 - (view) (annotate) - [select for diffs]
Wed Aug 18 15:39:01 2010 UTC (3 years, 8 months ago) by rtoy
Branch: MAIN
CVS Tags: GIT-CONVERSION, HEAD, cross-sol-x86-2010-12-20, cross-sol-x86-base, cross-sol-x86-merged, cross-sparc-branch-base, snapshot-2010-11, snapshot-2010-12, snapshot-2011-01, snapshot-2011-02, snapshot-2011-03, snapshot-2011-04, snapshot-2011-06, snapshot-2011-07, snapshot-2011-09
Branch point for: cross-sol-x86-branch, cross-sparc-branch
Changes since 1.141: +27 -18 lines
Diff to previous 1.141
Forgot to handle unbounded integer powers.

Revision 1.141 - (view) (annotate) - [select for diffs]
Wed Aug 18 14:55:51 2010 UTC (3 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.140: +178 -169 lines
Diff to previous 1.140
Rearrange the last change to simplify the code a little so it's easier
to see what's happening.

Revision 1.140 - (view) (annotate) - [select for diffs]
Tue Aug 17 20:17:45 2010 UTC (3 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.139: +183 -17 lines
Diff to previous 1.139
Add some smarts to the EXPT derive-type optimizer so it can handle the
case of a negative real to an integer power.  Previously, this case
wasn't handled.

Revision 1.139 - (view) (annotate) - [select for diffs]
Tue Apr 20 17:57:46 2010 UTC (4 years ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_20b, release-20b-pre1, release-20b-pre2, snapshot-2010-05, snapshot-2010-06, snapshot-2010-07, snapshot-2010-08, sparc-tramp-assem-2010-07-19, sparc-tramp-assem-base
Branch point for: RELEASE-20B-BRANCH, sparc-tramp-assem-branch
Changes since 1.138: +6 -6 lines
Diff to previous 1.138
Change uses of _"foo" to (intl:gettext "foo").  This is because slime
may get confused with source locations if the reader macros are
installed.

Revision 1.138 - (view) (annotate) - [select for diffs]
Mon Apr 19 15:08:20 2010 UTC (4 years ago) by rtoy
Branch: MAIN
Changes since 1.137: +15 -15 lines
Diff to previous 1.137
Remove _N"" reader macro from docstrings when possible.

Revision 1.137 - (view) (annotate) - [select for diffs]
Fri Mar 19 15:19:00 2010 UTC (4 years, 1 month ago) by rtoy
Branch: MAIN
CVS Tags: post-merge-intl-branch, snapshot-2010-04
Changes since 1.136: +31 -30 lines
Diff to previous 1.136
Merge intl-branch 2010-03-18 to HEAD.  To build, you need to use
boot-2010-02-1 as the bootstrap file.  You should probably also use
the new -P option for build.sh to generate and update the po files
while building.

Revision 1.136.4.1 - (view) (annotate) - [select for diffs]
Thu Feb 25 20:34:53 2010 UTC (4 years, 1 month ago) by rtoy
Branch: intl-2-branch
Changes since 1.136: +31 -30 lines
Diff to previous 1.136 , to next main 1.142
Restart internalization work.  This new branch starts with code from
the intl-branch on date 2010-02-12 18:00:00+0500.  This version works
and

LANG=en@piglatin bin/lisp

works (once the piglatin translation is added).

Revision 1.136.2.3 - (view) (annotate) - [select for diffs]
Thu Feb 25 03:59:43 2010 UTC (4 years, 1 month ago) by rtoy
Branch: intl-branch
CVS Tags: intl-branch-2010-03-18-1300
Changes since 1.136.2.2: +5 -5 lines
Diff to previous 1.136.2.2 , to branch point 1.136 , to next main 1.142
o Make COMPILER-NOTE do the string lookup instead of at each call
  site.
o Change all calls to COMPILER-NOTE to use _N" instead of _".

Revision 1.136.2.2 - (view) (annotate) - [select for diffs]
Thu Feb 11 00:04:41 2010 UTC (4 years, 2 months ago) by rtoy
Branch: intl-branch
CVS Tags: intl-branch-working-2010-02-11-1000, intl-branch-working-2010-02-19-1000
Changes since 1.136.2.1: +30 -30 lines
Diff to previous 1.136.2.1 , to branch point 1.136
Mark translatable strings; regenerate cmucl.pot and ko/cmucl.po
accordingly.

Revision 1.136.2.1 - (view) (annotate) - [select for diffs]
Mon Feb 8 17:15:50 2010 UTC (4 years, 2 months ago) by rtoy
Branch: intl-branch
Changes since 1.136: +2 -1 lines
Diff to previous 1.136
Add (intl:textdomain "cmucl") to the files to set the textdomain.

Revision 1.136 - (view) (annotate) - [select for diffs]
Fri Feb 5 18:10:59 2010 UTC (4 years, 2 months ago) by rtoy
Branch: MAIN
CVS Tags: intl-2-branch-base, intl-branch-base, pre-merge-intl-branch, snapshot-2010-03
Branch point for: intl-2-branch, intl-branch
Changes since 1.135: +27 -1 lines
Diff to previous 1.135
Implement a fast fround for single and double floats.  This is enabled
everywhere except for x87 builds since there is a possible roundoff
issue due to the 80-bit registers for x87.

This is some 2-3 times faster than the existing fround function.

code/float.lisp:
o Implementations of %unary-fround/single-float,
  %unary-fround/double-float, and %unary-fround.  Declare the first
  two as inline too.

compiler/float-tran.lisp:
o Tell compiler about %unary-fround.
o Transform fround to a call to %unary-fround.
o Transform %unary-fround to special versions for single and double
  float arguments.

Revision 1.135 - (view) (annotate) - [select for diffs]
Mon Nov 2 15:05:06 2009 UTC (4 years, 5 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2009-12, snapshot-2010-01, snapshot-2010-02
Changes since 1.134: +0 -2 lines
Diff to previous 1.134
Revert previous changes.  They were supposed to go on
amd64-dd-branch.

Revision 1.133.8.1 - (view) (annotate) - [select for diffs]
Mon Nov 2 14:29:46 2009 UTC (4 years, 5 months ago) by rtoy
Branch: amd64-dd-branch
Changes since 1.133: +3 -1 lines
Diff to previous 1.133 , to next main 1.142
(Oops.  Previous checkin went to wrong branch.  Here is the commit
log, again.)

This large checkin brings the amd64 port up-to-date with the current
sources.  No real attempt has been made to make it work, but the
cross-compile does create a kernel.core, and the C code compiles (on
openSuSE 10.3).  The resulting kernel.core does not yet work.

Use cross-x86-amd64.lisp as the cross-compile script.  This is
intended to be cross-compiled using the 20a release for Linux, and
only supports x87.  The sse2 support has not be ported yet.

tools/cross-scripts/cross-x86-amd64.lisp:
o Update cross-compile with some missing constants, and frob new
  symbols.

tools/clean-target.sh:
o Remove amd64f files too.

code/pred.lisp:
o Define predicates for double-doubles for bootstrapping to work
  around recursive known function problems with these predicates.

code/sap.lisp:
o Define int-sap with (unsigned-byte 64) type declaration.  (May not
  be needed?)

code/unix-glibc2.lisp:
o Build fails defining map_failed to (int-sap -1).  Just hard-wire to
  0 for now so we can build.

compiler/float-tran.lisp:
o Add missing conditional for %complex-double-double-float.

compiler/amd64/float.lisp:
o Merge double-double support for amd64.  Not really tested yet.

compiler/amd64/parms.lisp:
o Update to match x86 build.  In particular, get the space address
  correct and update the static symbols.

compiler/amd64/type-vops.lisp:
o DYLAN-FUNCTION-HEADER-TYPE no longer exists.

compiler/amd64/vm.lisp:
o Add double-double storage classes and register definitions.

lisp/Config.amd64:
o Bring in line with Config.x86 and friends.

lisp/Linux-os.c:
o Bring amd64 code up-to-date with x86/linux code.

lisp/Linux-os.h
o Need to include sys/ucontext.h to get ucontext defined.  (Why?)
o Also define __USE_GNU so we get the register offsets in the ucontext
  defined.  (Why?)

lisp/amd64-arch.c:
o Change struct sigcontext to os_context_t.
o Use SC_PC instead of context->sc_pc.
o Merge some changes in from x86 version, like SC_EFLAGS.  May need
  more work.

lisp/amd64-assem.s:
o Use rbx instead of ebx for jmp.

lisp/amd64-lispregs.h:
o Define SC_REG, SC_PC, SC_SP using the new x86 style.

lisp/backtrace.c:
o Remove inline assembly for now until I figure out what the amd64
  version should be.

lisp/gencgc.c:
o Conditionalize out weak hash table support for now.

lisp/gencgc.h:
o Set PAGE_SIZE for amd64.  (Is 4096 right?)

lisp/globals.h:
o Export current_dynamic_space_free_pointer and
  current_auto_gc_trigger like for x86.

Revision 1.134 - (view) (annotate) - [select for diffs]
Mon Nov 2 02:51:58 2009 UTC (4 years, 5 months ago) by rtoy
Branch: MAIN
Changes since 1.133: +3 -1 lines
Diff to previous 1.133
This large checkin brings the amd64 port up-to-date with the current
sources.  No real attempt has been made to make it work, but the
cross-compile does create a kernel.core, and the C code compiles (on
openSuSE 10.3).  The resulting kernel.core does not yet work.

Use cross-x86-amd64.lisp as the cross-compile script.  This is
intended to be cross-compiled using the 20a release for Linux, and
only supports x87.  The sse2 support has not be ported yet.

tools/cross-scripts/cross-x86-amd64.lisp:
o Update cross-compile with some missing constants, and frob new
  symbols.

tools/clean-target.sh:
o Remove amd64f files too.

code/pred.lisp:
o Define predicates for double-doubles for bootstrapping to work
  around recursive known function problems with these predicates.

code/sap.lisp:
o Define int-sap with (unsigned-byte 64) type declaration.  (May not
  be needed?)

code/unix-glibc2.lisp:
o Build fails defining map_failed to (int-sap -1).  Just hard-wire to
  0 for now so we can build.

compiler/float-tran.lisp:
o Add missing conditional for %complex-double-double-float.

compiler/amd64/float.lisp:
o Merge double-double support for amd64.  Not really tested yet.

compiler/amd64/parms.lisp:
o Update to match x86 build.  In particular, get the space address
  correct and update the static symbols.

compiler/amd64/type-vops.lisp:
o DYLAN-FUNCTION-HEADER-TYPE no longer exists.

compiler/amd64/vm.lisp:
o Add double-double storage classes and register definitions.

lisp/Config.amd64:
o Bring in line with Config.x86 and friends.

lisp/Linux-os.c:
o Bring amd64 code up-to-date with x86/linux code.

lisp/Linux-os.h
o Need to include sys/ucontext.h to get ucontext defined.  (Why?)
o Also define __USE_GNU so we get the register offsets in the ucontext
  defined.  (Why?)

lisp/amd64-arch.c:
o Change struct sigcontext to os_context_t.
o Use SC_PC instead of context->sc_pc.
o Merge some changes in from x86 version, like SC_EFLAGS.  May need
  more work.

lisp/amd64-assem.s:
o Use rbx instead of ebx for jmp.

lisp/amd64-lispregs.h:
o Define SC_REG, SC_PC, SC_SP using the new x86 style.

lisp/backtrace.c:
o Remove inline assembly for now until I figure out what the amd64
  version should be.

lisp/gencgc.c:
o Conditionalize out weak hash table support for now.

lisp/gencgc.h:
o Set PAGE_SIZE for amd64.  (Is 4096 right?)

lisp/globals.h:
o Export current_dynamic_space_free_pointer and
  current_auto_gc_trigger like for x86.

Revision 1.133 - (view) (annotate) - [select for diffs]
Tue Aug 11 18:32:55 2009 UTC (4 years, 8 months ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_20a, amd64-dd-start, release-20a-base, release-20a-pre1, snapshot-2009-08, snapshot-2009-11, unicode-string-buffer-base, unicode-string-buffer-impl-base
Branch point for: RELEASE-20A-BRANCH, amd64-dd-branch, unicode-string-buffer-branch, unicode-string-buffer-impl-branch
Changes since 1.132: +4 -3 lines
Diff to previous 1.132
Some symbol cleanups.

code/exports.lisp:
o Import STREAM:SET-SYSTEM-EXTERNAL-FORMAT into the EXT package.
o Define and export %sin-quick, %cos-quick, and %tan-quick only for
  x87 builds.

compiler/float-tran.lisp:
o Only apply defknowns and deftransforms for %sin-quick, %cos-quick,
  and %tan-quick for x87 builds.

Revision 1.132 - (view) (annotate) - [select for diffs]
Tue Jun 16 02:53:07 2009 UTC (4 years, 10 months ago) by rtoy
Branch: MAIN
CVS Tags: portable-clx-base, portable-clx-import-2009-06-16, snapshot-2009-07
Branch point for: portable-clx-branch
Changes since 1.131: +2 -2 lines
Diff to previous 1.131
compiler/x86/float-sse2.lisp:
o Add vop for conjugate of complex single and double floats.

compiler/float-tran.lisp:
o Disable deftransform for conjugate.  All platforms with complex fp
  vops support conjugate.

Revision 1.131 - (view) (annotate) - [select for diffs]
Mon Jun 15 18:03:25 2009 UTC (4 years, 10 months ago) by rtoy
Branch: MAIN
Changes since 1.130: +3 -1 lines
Diff to previous 1.130
compiler/float-tran.lisp:
o Sparc has a vop for complex conjugate, so we can disable the
  deftransform.
o Both sparc and x86 have a vop to do float - complex, so disable that
  transform too.

compiler/sparc/float.lisp:
o Fix the float-complex vop to do the right thing wrt contagion.
o Remove some old commented out vop for complex*complex and
  complex/complex.

Revision 1.130 - (view) (annotate) - [select for diffs]
Mon Jun 15 16:58:23 2009 UTC (4 years, 10 months ago) by rtoy
Branch: MAIN
Changes since 1.129: +9 -10 lines
Diff to previous 1.129
o Fix deftransforms to do contagion correctly:
  - complex + real
  - complex - real
  - real + complex
o Clean up comments and fix erroneous ones.

Revision 1.119.2.1.2.3 - (view) (annotate) - [select for diffs]
Wed Mar 25 21:51:34 2009 UTC (5 years ago) by rtoy
Branch: unicode-utf16-extfmt-branch
CVS Tags: unicode-snapshot-2009-05, unicode-snapshot-2009-06, unicode-utf16-extfmt-2009-03-27, unicode-utf16-extfmt-2009-06-11
Changes since 1.119.2.1.2.2: +5 -5 lines
Diff to previous 1.119.2.1.2.2 , to branch point 1.119.2.1 , to next main 1.119.2.4
Merge from unicode-utf16 branch, label
unicode-utf16-char-support-2009-03-25 to get character support.

Revision 1.119.2.4 - (view) (annotate) - [select for diffs]
Wed Mar 25 15:49:51 2009 UTC (5 years, 1 month ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-char-support-2009-03-25, unicode-utf16-char-support-2009-03-26
Changes since 1.119.2.3: +5 -5 lines
Diff to previous 1.119.2.3 , to branch point 1.119 , to next main 1.142
Merge from HEAD, tag label-2009-03-25.

Still left Config.FreeBSD_gencgc (obsolete), Config.x86_freebsd,
FreeBSD-os.c and FreeBSD-os.h for Alex to merge.

Revision 1.119.2.1.2.2 - (view) (annotate) - [select for diffs]
Wed Mar 18 15:37:28 2009 UTC (5 years, 1 month ago) by rtoy
Branch: unicode-utf16-extfmt-branch
Changes since 1.119.2.1.2.1: +6 -2 lines
Diff to previous 1.119.2.1.2.1 , to branch point 1.119.2.1
Sync to utf16 branch, tag unicode-utf16-sync-label-2009-03-16.

Revision 1.129 - (view) (annotate) - [select for diffs]
Wed Mar 18 01:24:53 2009 UTC (5 years, 1 month ago) by rtoy
Branch: MAIN
CVS Tags: label-2009-03-25, merged-unicode-utf16-extfmt-2009-06-11, snapshot-2009-04, snapshot-2009-05
Changes since 1.128: +5 -5 lines
Diff to previous 1.128
code/irrat-dd.lisp:
o Declare POLY-EVAL and POLY-EVAL-1 as maybe-inline functions so they
  can be semi-inlined.

code/irrat.lisp:
o I don't think there's any real reason to make the local function
  REAL-EXPT inline.  It's very big and local function call is already
  good enough.

compiler/float-tran.lisp:
o Change some functions to be maybe-inline instead of inline to save
  on space for the the larger double-double functions:  SUB-DD,
  SUB-D-DD, SUB-DD-D, SPLIT.  Semi-inline should be good enough for
  these large functions, saving on cache memory, local function
  calling sequence should be good enough.

Revision 1.119.2.3 - (view) (annotate) - [select for diffs]
Mon Mar 16 21:10:55 2009 UTC (5 years, 1 month ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-sync-label-2009-03-16
Changes since 1.119.2.2: +6 -2 lines
Diff to previous 1.119.2.2 , to branch point 1.119
Sync to CVS HEAD, tag label-2009-03-16.

But don't sync Config.FreeBSD_gencgc, Config.x86_freebsd,
FreeBSD-os.c, and FreeBSD-os.h.  Let Alex sync those later.

The result seems to work as expected on Solaris and x86/linux.
Darwin (ppc or x86) untested.

Revision 1.128 - (view) (annotate) - [select for diffs]
Tue Dec 30 16:23:36 2008 UTC (5 years, 3 months ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_19f, label-2009-03-16, merge-with-19f, release-19f-base, release-19f-pre1, snapshot-2009-01, snapshot-2009-02
Branch point for: RELEASE-19F-BRANCH
Changes since 1.127: +4 -3 lines
Diff to previous 1.127
o Fix typo in defknown result type for %COMPLEX-DOUBLE-DOUBLE-FLOAT.
o Use ETYPECASE instead of TYPECASE when defining %COMPLEX-foo-FLOAT.

Revision 1.127 - (view) (annotate) - [select for diffs]
Mon Dec 22 23:24:28 2008 UTC (5 years, 4 months ago) by rtoy
Branch: MAIN
Changes since 1.126: +4 -1 lines
Diff to previous 1.126
Oops.  Need to move %DOUBLE-DOUBLE-FLOAT from compiler/float-tran.lisp
to code/float.lisp because we need this early in the build process to
handle float types.

This might cuase problems with bootstrapping double-double floats!

Revision 1.119.2.1.2.1 - (view) (annotate) - [select for diffs]
Fri Dec 19 01:31:33 2008 UTC (5 years, 4 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
CVS Tags: unicode-utf16-extfmts-sync-2008-12
Changes since 1.119.2.1: +261 -99 lines
Diff to previous 1.119.2.1
Merge changes from utf16 branch to update to snapshot 2008-12.

Revision 1.119.2.2 - (view) (annotate) - [select for diffs]
Thu Dec 18 21:50:18 2008 UTC (5 years, 4 months ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-sync-2008-12
Changes since 1.119.2.1: +261 -99 lines
Diff to previous 1.119.2.1 , to branch point 1.119
Merge Snapshot 2008-12 to this branch.  Some tweaks needed in
boot-2008-05-cross-unicode-x86.lisp and the Config files.  FreeBSD and
Darwin/x86 untested, but Linux and Solaris build ok.

Revision 1.126 - (view) (annotate) - [select for diffs]
Sun Nov 16 14:23:33 2008 UTC (5 years, 5 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2008-12
Changes since 1.125: +11 -1 lines
Diff to previous 1.125
Add back deftransforms for real+complex and real*complex when
:complex-fp-vops is not defined.

Revision 1.125 - (view) (annotate) - [select for diffs]
Fri Nov 14 20:43:08 2008 UTC (5 years, 5 months ago) by rtoy
Branch: MAIN
Changes since 1.124: +1 -11 lines
Diff to previous 1.124
float-tran.lisp:
o Remove the deftransform for real + complex and real * complex.
o Always enable the transform for real - complex.

x86/float-sse2.lisp:
o Add vop to do real + complex
o Add vop to do real * complex

Revision 1.124 - (view) (annotate) - [select for diffs]
Thu Nov 13 22:55:40 2008 UTC (5 years, 5 months ago) by rtoy
Branch: MAIN
Changes since 1.123: +15 -14 lines
Diff to previous 1.123
o Enable the complex-contagion deftransforms
o Change the other complex arithmetic deftransforms not to use REAL as
  the type of an argument.  It should be the same as the complex
  argument.  Without this, the deftransforms were causing infinite
  loops during compilation where the deftransforms kept changing the
  code.

Revision 1.123 - (view) (annotate) - [select for diffs]
Thu Nov 13 16:13:12 2008 UTC (5 years, 5 months ago) by rtoy
Branch: MAIN
Changes since 1.122: +18 -8 lines
Diff to previous 1.122
o Turn off complex contagion stuff because it breaks things like
  (defun foo (z)
    (declare (double-float z))
    (+ (complex 0 1) z))
o For now, don't convert real*complex to complex*real.  Expand it out
  explicitly.

Revision 1.122 - (view) (annotate) - [select for diffs]
Wed Nov 12 15:04:23 2008 UTC (5 years, 5 months ago) by rtoy
Branch: MAIN
CVS Tags: merge-sse2-packed
Changes since 1.121: +248 -97 lines
Diff to previous 1.121
Merge in SSE2 changes from sse2-packed-branch (tag
sse2-packed-2008-11-12).

Revision 1.121.2.1.2.7 - (view) (annotate) - [select for diffs]
Fri Oct 17 16:21:59 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-packed-branch
CVS Tags: sse2-merge-with-2008-11, sse2-packed-2008-11-12
Changes since 1.121.2.1.2.6: +3 -3 lines
Diff to previous 1.121.2.1.2.6 , to branch point 1.121.2.1
UPGRADED-COMPLEX-REAL-CONTAGION-ARG1, ARG2 were trying to coerce a
complex to a float, which doesn't work.  Fix mistake so we coerce the
complex to a complex type.

Revision 1.121.2.1.2.6 - (view) (annotate) - [select for diffs]
Thu Oct 16 22:10:48 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-packed-branch
Changes since 1.121.2.1.2.5: +76 -48 lines
Diff to previous 1.121.2.1.2.5 , to branch point 1.121.2.1
More complex contagion stuff.

o Move the deftransforms for = to a different place so they're enabled
  for complex single and double floats.
o Remove deftransform for < and > for complexes since we can't
  actually compare complexes that way.
o Add deftransforms for the case where the real argument has higher
  precision than the complex argument.

Revision 1.121.2.1.2.5 - (view) (annotate) - [select for diffs]
Thu Oct 16 03:07:13 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-packed-branch
Changes since 1.121.2.1.2.4: +79 -1 lines
Diff to previous 1.121.2.1.2.4 , to branch point 1.121.2.1
Implement support for contagion for complex numbers.  Needs more work,
but basic contagion between complexes of different types and complexes
and reals (that don't increase the precision of the complex result).

Revision 1.121.2.1.2.4 - (view) (annotate) - [select for diffs]
Sun Oct 12 04:09:48 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-packed-branch
Changes since 1.121.2.1.2.3: +142 -164 lines
Diff to previous 1.121.2.1.2.3 , to branch point 1.121.2.1
Add complex floating-point vops to speed up complex arithmetic.

bootfiles/19e/boot-2008-09-sse2.lisp:
o Add :complex-fp-vops feature

code/sparc-svr4-vm.lisp:
code/x86-vm.lisp:
o Register :complex-fp-vops feature

compiler/float-tran.lisp:
o Clean up deftransforms for complex arithmetic to support
  complex-fp-vops.
o Add special vop for complex division that takes advantage of the
  fast complex multiply.

compiler/x86/float-sse2.lisp:
o Add vops for complex arithmetic.
o Add guard for sse3 for some vops that need sse3 instructions.

compiler/x86/insts.lisp:
o Always define instructions available with sse3.  Leave a comment so
  we know they're for sse3.

Revision 1.121.2.1.2.3 - (view) (annotate) - [select for diffs]
Fri Oct 10 21:52:00 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-packed-branch
Changes since 1.121.2.1.2.2: +1 -17 lines
Diff to previous 1.121.2.1.2.2 , to branch point 1.121.2.1
compiler/float-tran.lisp:
o Remove deftransform for +, -, * for complex single-floats so we can
  use our vops.

compiler/x86/float-sse2.lisp:
o Forgot to implement packed versions of complex-single-move and
  move-to-complex-single.
o Use movlps instead of movups (which is wrong for our packed
  numbers).
o Add vops for complex single +, -, and *, and division of a complex
  single by a single-float

Revision 1.121.2.1.2.2 - (view) (annotate) - [select for diffs]
Fri Oct 10 04:08:40 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-packed-branch
Changes since 1.121.2.1.2.1: +62 -2 lines
Diff to previous 1.121.2.1.2.1 , to branch point 1.121.2.1
x86/float-sse2.lisp:
o Add vop to divide a complex by a real using packed operations.

float-tran.lisp:
o New transform for /.  Take advantage of packed complex multiply and
  packed division of a complex by a real.
o Remove deftransform for dividing a complex double-float by a
  double-float.

These give a moderate speedup for complex double-float divison.  Still
seems much slower than x87.

Revision 1.121.2.1.2.1 - (view) (annotate) - [select for diffs]
Thu Oct 9 16:25:47 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-packed-branch
Changes since 1.121.2.1: +21 -2 lines
Diff to previous 1.121.2.1
Hack!

Disable some deftransforms for complex double addition, subtraction,
and multiplication so we can use the vops.

Revision 1.121.2.1 - (view) (annotate) - [select for diffs]
Fri Sep 26 18:56:40 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
CVS Tags: sse2-checkpoint-2008-10-01, sse2-merge-with-2008-10, sse2-packed-base
Branch point for: sse2-packed-branch
Changes since 1.121: +7 -3 lines
Diff to previous 1.121 , to next main 1.142
Initial support for SSE2.  This compiles itself ok on Linux, and
should work on OSX.  Much cleanup is needed, and still need to restore
buildability without SSE2.

Use bootfiles/19e/boot-2008-09-sse2.lisp as the cross-compile script.

The key changes are in these new files:

o float-sse2.lisp: implements all of the floating-point stuff with
  SSE2
o sse2-array.lisp: replacement vops using sse2 instead of x87
o sse2-c-call.lisp: replacement vops using sse2 instead of x87.
o sse2-sap.lisp: replacement vops using sse2 instead of x87



code/irrat.lisp:
o Basically turn off all the special routines that use the x87 trig,
  log, or exp instructions.  We don't support that currently.  (Would
  be nice, though.)
o Turn on %%sin and friends, like on ppc.
o Turn off %sin-quick and friends since we don't want to use x87 now.

code/misc.lisp:
o Register :sse2 feature.

compiler/float-tran.lisp:
o Disable transforms for x86 that use x87 instructions.  We don't
  support that with sse2.

compiler/loadbackend.lisp:
o Load up the appropriate sse2 files for the compiler.  This will
  currently overwrite existing vops with vops for SSE2.

compiler/x86/float.lisp:
o Disable various vops using the x87 instructions, since
  float-sse2.lisp doesn't have equivalents.  (Just in case.  Since
  this isn't compiled or loaded, we shouldn't need to do this.)

compiler/x86/insts.lisp:
o Add support for SSE2 instructions.  Shamelessly borrowed from our
  SBCL friends.

compiler/x86/vm.lisp:
o Turn off some fp-constants that are not supported with sse2.
o Print FP registers as XMM instead of FR.

lisp/Config.linux_gencgc:
lisp/Config.x86_darwin:
o Enable FEATURE_SSE2 flag when compiling.

lisp/Darwin-os.c:
lisp/Linux-os.c:
o Get the mxcsr status bits too when getting the FPU status from a
  sigcontext.

lisp/x86-assem.S:
o For SSE2, we copy any floating-point result (in ST(0)) to XMM0, so
  Lisp code can get it.

tools/comcom.lisp:
o Compile up the SSE2 files as needed.

Revision 1.119.2.1 - (view) (annotate) - [select for diffs]
Fri Jun 27 17:24:14 2008 UTC (5 years, 9 months ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-extfmts-pre-sync-2008-11, unicode-utf16-sync-2008-07, unicode-utf16-sync-2008-09, unicode-utf16-sync-2008-11
Branch point for: unicode-utf16-extfmt-branch
Changes since 1.119: +19 -19 lines
Diff to previous 1.119
Merge changes from snapshot-2008-07.

Revision 1.121 - (view) (annotate) - [select for diffs]
Thu Jun 26 21:00:25 2008 UTC (5 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2008-07, snapshot-2008-08, snapshot-2008-09, snapshot-2008-10, snapshot-2008-11, sse2-base
Branch point for: sse2-branch
Changes since 1.120: +1 -5 lines
Diff to previous 1.120
code/rand-mt19937.lisp:
o Recursively call RANDOM for the integer case to let the deftransform
  handle the case.

compiler/float-tran.lisp:
o Remove comment about modifying RANDOM to match the deftransform.
  We're automatically in sync now.

Revision 1.120 - (view) (annotate) - [select for diffs]
Tue Jun 24 17:27:51 2008 UTC (5 years, 10 months ago) by rtoy
Branch: MAIN
Changes since 1.119: +23 -19 lines
Diff to previous 1.119
compiler/float-tran.lisp:

  Fix bug in deftransform where the case for x86 and num-high >
  random-fixnum-max was never used.  We now always use the bignum
  multiply code for all platforms and use that for all cases for which
  the deftransform applies.

  Simplify the constant-continuation case too so we don't have to the
  check.  I think the bignum multiply version does not have the bias
  problem that rem has.

code/rand-mt19937.lisp:
  Change the RANDOM function to compute the same value as the
  deftransform would.

general-info/release-19f.txt:
  Update

Make a note that both the function and the deftransform should be
synchronized to match.  This change also changes the sequence of
numbers produced.

Revision 1.119 - (view) (annotate) - [select for diffs]
Tue Apr 8 14:15:35 2008 UTC (6 years ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2008-05, snapshot-2008-06, unicode-utf16-base, unicode-utf16-string-support
Branch point for: unicode-utf16-branch
Changes since 1.118: +69 -46 lines
Diff to previous 1.118
o Fix type-derivation for the basic DOUBLE-DOUBLE-FLOAT arithmetic
  operations.  The deftransforms were causing type-derivation to
  return DOUBLE-DOUBLE-FLOAT for everything.  Use the suggestion from
  Rob: Wrap the result of the deftransform in a TRULY-THE form and use
  the node derived type for the type.
o The FLOAT-SIGN deftransform for DOUBLE-DOUBLE-FLOAT should be
  conditioned on the DOUBLE-DOUBLE feature.
o Remove old unused deftransform for * for two double-double args.

Revision 1.118 - (view) (annotate) - [select for diffs]
Thu Apr 3 15:10:47 2008 UTC (6 years ago) by rtoy
Branch: MAIN
Changes since 1.117: +14 -5 lines
Diff to previous 1.117
Oops.  DERIVE-TYPE optimizer for EXPT was returning invalid type
specifiers.

To see this, try the following:

(defun foo (x)
  (declare (type (real 0) x))
  (expt 2 x))

(compile 'foo)

(describe 'foo)

You get error that 0 is not an appropriate type for a double-float specifier.

Revision 1.117 - (view) (annotate) - [select for diffs]
Thu Feb 14 21:06:03 2008 UTC (6 years, 2 months ago) by rtoy
Branch: MAIN
CVS Tags: release-19e, release-19e-base, release-19e-pre1, release-19e-pre2, snapshot-2008-03, snapshot-2008-04
Branch point for: release-19e-branch
Changes since 1.116: +13 -5 lines
Diff to previous 1.116
Small tweak to SPLIT.  Set the threshold between the two algorithms to
be the largest possible number.

Revision 1.116 - (view) (annotate) - [select for diffs]
Fri Feb 1 22:14:41 2008 UTC (6 years, 2 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2008-02
Changes since 1.115: +22 -15 lines
Diff to previous 1.115
Change the range of when %sin-quick, %cos-quick, and %tan-quick is
used instead of %sin and friends.  Simple tests showed that they gave
bad answers (values > 1 or exceptions) for numbers greater than 2^63
(2^62 for tan).

Revision 1.115 - (view) (annotate) - [select for diffs]
Wed Jun 27 16:35:45 2007 UTC (6 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: pre-telent-clx, snapshot-2007-07, snapshot-2007-08, snapshot-2007-09, snapshot-2007-10, snapshot-2007-11, snapshot-2007-12, snapshot-2008-01
Changes since 1.114: +45 -39 lines
Diff to previous 1.114
o Remove a version of TWO-PROD that wasn't actually used.
o Add INHIBIT-WARNINGS for the core double-double routines to get rid
  of warnings about boxing numbers.  I'm pretty sure the routines are
  all doing what they're supposed to do.

Revision 1.114 - (view) (annotate) - [select for diffs]
Thu Jun 21 16:22:24 2007 UTC (6 years, 10 months ago) by rtoy
Branch: MAIN
Changes since 1.113: +4 -4 lines
Diff to previous 1.113
More RETURN-FROM's returning from the wrong block.

Revision 1.113 - (view) (annotate) - [select for diffs]
Wed Jun 20 15:21:48 2007 UTC (6 years, 10 months ago) by rtoy
Branch: MAIN
Changes since 1.112: +3 -3 lines
Diff to previous 1.112
Oops.  Fix typo where some RETURN-FROM'S were returning from the wrong
(nonexistent) block.

Revision 1.112 - (view) (annotate) - [select for diffs]
Mon Jun 11 19:01:23 2007 UTC (6 years, 10 months ago) by rtoy
Branch: MAIN
Changes since 1.111: +55 -9 lines
Diff to previous 1.111
compiler/float-tran.lisp:
o Handle signed-zeroes for addition, subtraction, and multiplication
  of double-double floats.  That is, return the correct signed zero
  for the result.
o Try to handle overflow in addition, multiplication, and division by
  returning infinity, if the overflow or divide-by-zero trap is
  disabled.  This is done by looking to see what the corresponding
  double-float operation would return.  This probably needs more work.

code/irrat-dd.lisp:
o Remove the careful-mul stuff from dd-complex-atanh since we handle
  signed zeroes better now during double-double multiplication.

Revision 1.111 - (view) (annotate) - [select for diffs]
Wed May 9 03:18:09 2007 UTC (6 years, 11 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2007-06
Changes since 1.110: +21 -1 lines
Diff to previous 1.110
compiler/ppc/float.lisp:
o Add vops to do fused multiply-add and fused multiply-subtract.
  (Only double-float supported.)
o Add defknown's for these translations.

compiler/float-tran.lisp:
o Used fused multiply-subtract for two-prod and two-sqr instead of the
  split function.

Revision 1.110 - (view) (annotate) - [select for diffs]
Sat Feb 3 22:10:19 2007 UTC (7 years, 2 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2007-03, snapshot-2007-04, snapshot-2007-05
Changes since 1.109: +115 -103 lines
Diff to previous 1.109
Fix bug in expt type derivation.

(defun f (x y)
   (declare (fixnum x y))
   (expt x y))

caused an error because we weren't handling member types correctly.

Revision 1.109 - (view) (annotate) - [select for diffs]
Tue Jan 23 19:09:51 2007 UTC (7 years, 3 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2007-02
Changes since 1.108: +38 -25 lines
Diff to previous 1.108
Fix expt derive-type optimizer.  The compiler was deriving the result
type of:

    (defun foo3 (x y)
      (declare (type (double-float (0d0) 1d0) x)
	       (type (double-float (0d0)) y))
      (expt x y))

to be (double-float 0d0 1d0), i.e, including -0.0, but that's not
possible.  With this fix, the result type is (or (member 0d0)
(double-float (0d0) 1d0)), which is better.

Revision 1.108 - (view) (annotate) - [select for diffs]
Mon Aug 21 16:39:54 2006 UTC (7 years, 8 months ago) by rtoy
Branch: MAIN
CVS Tags: release-19d, release-19d-base, release-19d-pre1, release-19d-pre2, snapshot-2006-09, snapshot-2006-10, snapshot-2006-11, snapshot-2006-12, snapshot-2007-01
Branch point for: release-19d-branch
Changes since 1.107: +15 -4 lines
Diff to previous 1.107
Some very basic support for signed zeroes for DOUBLE-DOUBLE-FLOAT.  We
can now read and print -0w0.

code/float.lisp:
o Adjust float-sign so that we get the correct sign when
  double-double-floats are used.
o Adjust FLOAT-RATIO to call %MAKE-DOUBLE-DOUBLE-FLOAT so that we
  preserve the sign of the number.  This is safe because the
  components are known to be properly scaled.

compiler/float-tran.lisp:
o Use %MAKE-DOUBLE-DOUBLE-FLOAT in %DOUBLE-DOUBLE-FLOAT to preserve
  the sign of the original float.  This is safe because the
  components are known to be properly scaled.
o Add a FLOAT-SIGN deftransform to handle DOUBLE-DOUBLE-FLOAT.

Revision 1.107 - (view) (annotate) - [select for diffs]
Fri Jul 7 18:26:43 2006 UTC (7 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2006-08
Changes since 1.106: +9 -9 lines
Diff to previous 1.106
compiler/float-tran.lisp:
o Change the following functions to be maybe-inline instead of inline
  so we don't inline them by default unless the user says so by
  specifying (SPACE 0): ADD-DD, MUL-DD-D, MUL-DD, ADD-DD-D, SQR-DD,
  DIV-DD, DIV-DD-D, SQRT-DD

code/irrat-dd.lisp:
o Set (SPACE 0) for these functions so we inline the operations.
  (Should we really inline all of these?)

Revision 1.106 - (view) (annotate) - [select for diffs]
Fri Jul 7 15:11:32 2006 UTC (7 years, 9 months ago) by rtoy
Branch: MAIN
Changes since 1.105: +2 -2 lines
Diff to previous 1.105
Oops.  We can only apply the sqrt deftransform for
double-double-floats if the arg is non-negative.

Revision 1.105 - (view) (annotate) - [select for diffs]
Fri Jun 30 18:41:23 2006 UTC (7 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2006-07
Changes since 1.104: +584 -10 lines
Diff to previous 1.104
This large checkin merges the double-double float support to HEAD.
The merge is from the tag "double-double-irrat-end".  The
double-double branch is now obsolete.

The code should build without double-double support (tested on sparc)
as well as build with double-double support (tested also on sparc).

Revision 1.104.4.3.2.9.2.3 - (view) (annotate) - [select for diffs]
Fri Jun 30 17:01:47 2006 UTC (7 years, 9 months ago) by rtoy
Branch: double-double-array-branch
CVS Tags: double-double-irrat-end
Changes since 1.104.4.3.2.9.2.2: +43 -1 lines
Diff to previous 1.104.4.3.2.9.2.2 , to branch point 1.104.4.3.2.9
o Add SQR-DD function to square a double-double, which is cheaper than
  multiplying.
o Adjust the deftransform for * to use SQR-DD when both args to * are
  known to be the same.

Revision 1.104.4.3.2.9.2.2 - (view) (annotate) - [select for diffs]
Mon Jun 26 18:43:20 2006 UTC (7 years, 9 months ago) by rtoy
Branch: double-double-array-branch
CVS Tags: double-double-array-checkpoint, double-double-irrat-start
Changes since 1.104.4.3.2.9.2.1: +3 -2 lines
Diff to previous 1.104.4.3.2.9.2.1 , to branch point 1.104.4.3.2.9
The second arg to dd-sqrt isn't always a non-negative double-float.

Revision 1.104.4.3.2.9.2.1 - (view) (annotate) - [select for diffs]
Mon Jun 19 02:17:52 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-array-branch
CVS Tags: double-double-sparc-checkpoint-1
Changes since 1.104.4.3.2.9: +6 -4 lines
Diff to previous 1.104.4.3.2.9
Add deftransforms to handle basic (complex double-double-float)
operations.

Revision 1.104.4.3.2.9 - (view) (annotate) - [select for diffs]
Wed Jun 14 15:40:29 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-reader-branch
CVS Tags: double-double-array-base, double-double-reader-checkpoint-1
Branch point for: double-double-array-branch
Changes since 1.104.4.3.2.8: +35 -1 lines
Diff to previous 1.104.4.3.2.8 , to branch point 1.104.4.3 , to next main 1.104.4.4
Implement a new SPLIT function that handles numbers near infinity
better.

Revision 1.104.4.3.2.8 - (view) (annotate) - [select for diffs]
Tue Jun 13 19:54:17 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-reader-branch
Changes since 1.104.4.3.2.7: +19 -19 lines
Diff to previous 1.104.4.3.2.7 , to branch point 1.104.4.3
Put back the original SPLIT routine.  The other one causes problems
because it's not splitting the number in the same way as the original
and that causes problems in other places.  Add a comment saying not to
change this.

Revision 1.104.4.3.2.7 - (view) (annotate) - [select for diffs]
Mon Jun 12 20:34:47 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-reader-branch
Changes since 1.104.4.3.2.6: +36 -2 lines
Diff to previous 1.104.4.3.2.6 , to branch point 1.104.4.3
compiler/float-tran.lisp:
o Add support code and  deftransforms to handle the case of dd - d and
  d - dd.

Revision 1.104.4.3.2.6 - (view) (annotate) - [select for diffs]
Mon Jun 12 20:02:08 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-reader-branch
Changes since 1.104.4.3.2.5: +58 -10 lines
Diff to previous 1.104.4.3.2.5 , to branch point 1.104.4.3
A few optimizations and corrections.

code/kernel.lisp:
o Inline the tests for infinity and NaN.

compiler/float-tran.lisp:
o Use %make-double-double-float instead of make-double-double-float
  because the parts are already correct.
o Inline the double-double multiplier.  (Should we?)
o The deftransform for sqrt was totally wrong, expecting two args.
o Add a few deftransforms for +, *, and / when doing arithmetic
  between a double-double-float and an integer or other float.  This
  should speed up these operations.

Revision 1.104.4.3.2.5 - (view) (annotate) - [select for diffs]
Mon Jun 12 17:21:15 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-reader-branch
Changes since 1.104.4.3.2.4: +3 -2 lines
Diff to previous 1.104.4.3.2.4 , to branch point 1.104.4.3
Merge in the changes from double-double-init-%make-sparc that renames
MAKE-DOUBLE-DOUBLE-FLOAT to be %MAKE-DOUBLE-DOUBLE-FLOAT.

Revision 1.104.4.4 - (view) (annotate) - [select for diffs]
Mon Jun 12 16:16:18 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-branch
CVS Tags: double-double-init-%make-sparc, double-double-init-checkpoint-1
Changes since 1.104.4.3: +3 -2 lines
Diff to previous 1.104.4.3 , to branch point 1.104 , to next main 1.142
o Rename MAKE-DOUBLE-DOUBLE-FLOAT to be %MAKE-DOUBLE-DOUBLE-FLOAT.
o Add %MAKE-DOUBLE-DOUBLE-FLOAT to be an internal function that
  creates a double-double with exactly the parts given.
o Add a new MAKE-DOUBLE-DOUBLE-FLOAT that adjusts the args
  appropriately before creating a double-double float, in case the
  args aren't split appropriately.

Revision 1.104.4.3.2.4 - (view) (annotate) - [select for diffs]
Mon Jun 12 03:01:21 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-reader-branch
Changes since 1.104.4.3.2.3: +27 -1 lines
Diff to previous 1.104.4.3.2.3 , to branch point 1.104.4.3
o Add a reference for double-double algorithms.
o SPLIT caused unnecessary overflow, so rewrite it not to have
  overflow.

Revision 1.104.4.3.2.3 - (view) (annotate) - [select for diffs]
Mon Jun 12 02:55:14 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-reader-branch
Changes since 1.104.4.3.2.2: +2 -2 lines
Diff to previous 1.104.4.3.2.2 , to branch point 1.104.4.3
Undo the previous change.  Don't need to do that right now.

Revision 1.104.4.3.2.2 - (view) (annotate) - [select for diffs]
Mon Jun 12 00:04:35 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-reader-branch
Changes since 1.104.4.3.2.1: +2 -2 lines
Diff to previous 1.104.4.3.2.1 , to branch point 1.104.4.3
Rename MAKE-DOUBLE-DOUBLE-FLOAT to %MAKE-DOUBLE-DOUBLE-FLOAT and then
add a new function MAKE-DOUBLE-DOUBLE-FLOAT that makes sure the two
args are properly normalized before creating the double-double.

Revision 1.104.4.3.2.1 - (view) (annotate) - [select for diffs]
Sun Jun 11 19:48:38 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-reader-branch
Changes since 1.104.4.3: +3 -3 lines
Diff to previous 1.104.4.3
The deftransforms for %single-float and %double-float to handle
double-double-floats were wrong.  Fix them.

Revision 1.104.4.3 - (view) (annotate) - [select for diffs]
Sun Jun 11 04:52:42 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-branch
CVS Tags: double-double-reader-base
Branch point for: double-double-reader-branch
Changes since 1.104.4.2: +29 -6 lines
Diff to previous 1.104.4.2 , to branch point 1.104
o Write a better %double-double-float.
o SCALE-FLOAT-DERIVE-TYPE-AUX was not working for ppc because ppc
  doesn't signal overflow.  So explicitly check for float infinity.

Revision 1.104.4.2 - (view) (annotate) - [select for diffs]
Fri Jun 9 19:00:51 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-branch
CVS Tags: double-double-init-ppc, double-double-init-sparc-2, double-double-init-x86
Changes since 1.104.4.1: +2 -2 lines
Diff to previous 1.104.4.1 , to branch point 1.104
Too much cuting and pasting.  The deftransform for * should multiply,
not subtract.

Revision 1.104.4.1 - (view) (annotate) - [select for diffs]
Fri Jun 9 16:05:15 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-branch
CVS Tags: double-double-init-sparc
Changes since 1.104: +365 -2 lines
Diff to previous 1.104
Add basic support for kernel:double-double-float type.  The primitive
type is there, and basic arithmetic operations work as well as PRINT.
But many things do not work: No reader, formatted output, many mixed
type arithmetic operations, special functions are just double-float
values, coerced to double-double-float.

compiler/generic/interr.lisp:
o Add new error

compiler/generic/new-genesis.lisp:
o Dump double-double-float objects (barely tested)

compiler/generic/primtype.lisp:
o Tell compiler about the new primitive type double-double-float.

compiler/generic/vm-fndb.lisp:
o Make double-double-float-p a known function.

compiler/generic/vm-type.lisp:
o Update FLOAT-FORMAT-NAME to include double-double-float

compiler/generic/vm-typetran.lisp:
o Tell compiler about double-double-float type predicate.

compiler/sparc/float.lisp:
o Add necessary vops to move double-double-float args, store and load
  double-double-floats to/from the double-double-stack,
  double-double-reg moves, box and unbox double-double-floats, move
  double-double-floats to and from args
o Add necessary vops to create a double-double-float and to extract
  the high and low parts out of a double-double-float.

compiler/sparc/parms.lisp:
o Define double-double-float-digits

compiler/sparc/type-vops.lisp:
o Define double-double-float type vop
o Adjust number hierarchy to include double-double-float

compiler/sparc/vm.lisp:
o Define the necessary storage class and storage base for the
  double-double-reg and double-double-stack.

lisp/gencgc.c:
o Tell GC about double-double-float objects.

lisp/purify.c:
o Tell purify about double-double-float objects.

code/class.lisp:
o Add the new double-double-float class.

code/exports.lisp:
o Add the necessary symbols to the various packages.  (This is
  important to get right otherwise there's confusion on what symbol
  really represents double-double-float stuff.)

code/float.lisp:
o Implement some of the necessary functions to support
  double-double-float.

code/hash-new.lisp:
o Hash double-double-floats by xor'ing the hashes of each double-float
  part.  (Is that good enough?)

code/irrat.lisp:
o Implement the special functions by calling the double-float versions
  and coercing the result to a double-double-float.  This is needed to
  get type-derivation working, but the precise value isn't that
  important right now.  We'll have to implement them later.

code/kernel.lisp:
o Make make-double-double-float, double-double-hi, and
  double-double-lo known functions.

code/lispinit.lisp:
o Register the :double-double float feature.

code/load.lisp:
o Add FOP for reading double-double-float values from fasls.  (Barely
  tested, if at all.)

code/numbers.lisp:
o Implement basic arithmetic operations for double-double-floats.
  This needs quite a bit of work to clean up, but most things work.

code/pred.lisp:
o Tell the type system about double-double-float type.

code/print.lisp:
o Add very rudimentary printing for double-double-float.  Basically
  copied from code written by Richard Fateman, with permission.

code/seq.lisp:
o Tell coerce how to coerce things to a double-double-float.

code/type.lisp:
o Tell type system about the new float format double-double-float and
  how numeric contagion works with double-double-float.

code/dump.lisp:
o Tell dumper how to dump double-double-float values to a fasl.

compiler/float-tran.lisp:
o Add appropriate deftransforms to handle conversion of things to
  double-double-float and from from double-double-float to other float
  types.
o The basic implmentation of double-double-float arithmetic is also
  here.
o Add deftransforms to tell the compiler how to do basic arithmetic
  and comparisions on double-double-float numbers.

compiler/srctran.lisp:
o Fix a bug in interval-range-info when :low is 0dd0 and :high is 0.
  We weren't returning the right value, which confuses interval-div,
  which caused an infinite loop because we couldn't split the
  numerator into positive and negative parts.
o Tell other parts about double-double-float.

Revision 1.100.2.2 - (view) (annotate) - [select for diffs]
Mon Dec 19 01:09:59 2005 UTC (8 years, 4 months ago) by rtoy
Branch: ppc_gencgc_branch
CVS Tags: ppc_gencgc_snap_2005-12-17, ppc_gencgc_snap_2006-01-06
Changes since 1.100.2.1: +34 -6 lines
Diff to previous 1.100.2.1 , to branch point 1.100 , to next main 1.142
Merge code from main branch of 2005-12-17 to ppc gencgc branch.  Still
doesn't work of course.

Revision 1.104 - (view) (annotate) - [select for diffs]
Sun Jun 26 17:21:04 2005 UTC (8 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: double-double-base, release-19c, release-19c-base, release-19c-pre1, snapshot-2005-07, snapshot-2005-08, snapshot-2005-09, snapshot-2005-10, snapshot-2005-11, snapshot-2005-12, snapshot-2006-01, snapshot-2006-02, snapshot-2006-03, snapshot-2006-04, snapshot-2006-05, snapshot-2006-06
Branch point for: double-double-branch, release-19c-branch
Changes since 1.103: +33 -5 lines
Diff to previous 1.103
Merge from 19b-branch to get %unary-ftruncate fix for regression of
mrg32k3a test in cl-bench.

Revision 1.102.2.1 - (view) (annotate) - [select for diffs]
Sun Jun 26 17:17:19 2005 UTC (8 years, 9 months ago) by rtoy
Branch: release-19b-branch
CVS Tags: release-19b-pre2
Changes since 1.102: +33 -5 lines
Diff to previous 1.102 , to next main 1.142
Fix a regression in cl-bench mrg32k3a test.  This was caused by the
deftransform for %unary-ftruncate that was always calling the
%unary-ftruncate/{single,double}-float function instead of using
%unary-truncate when the result is known to fit.

So reinstate the old version, and fix it so that we return the
appropriate signed zero.  This also requires adding a derive-type
optimizer for fast-unary-ftruncate for sparc.

Revision 1.103 - (view) (annotate) - [select for diffs]
Sun Jun 19 02:48:08 2005 UTC (8 years, 10 months ago) by rtoy
Branch: MAIN
Changes since 1.102: +2 -2 lines
Diff to previous 1.102
Add a new VOP for DOUBLE-FLOAT-BITS, like on sparc.  A
micro-optimization.

Revision 1.100.2.1 - (view) (annotate) - [select for diffs]
Sun May 15 20:01:22 2005 UTC (8 years, 11 months ago) by rtoy
Branch: ppc_gencgc_branch
Changes since 1.100: +12 -6 lines
Diff to previous 1.100
Merge snapshot-2005-05 to this branch.

Revision 1.102 - (view) (annotate) - [select for diffs]
Fri Apr 29 13:35:46 2005 UTC (8 years, 11 months ago) by rtoy
Branch: MAIN
CVS Tags: release-19b-base, release-19b-pre1, snapshot-2005-05, snapshot-2005-06
Branch point for: release-19b-branch
Changes since 1.101: +3 -6 lines
Diff to previous 1.101
Remove defoptimizers for scale-single-float and scale-double-float and
replace with a single scale-float optimizer.  This enables type
derivation for scale-float on x86, which wasn't transforming
scale-float to scale-single-float/scale-double-float.

Revision 1.101 - (view) (annotate) - [select for diffs]
Sun Apr 24 01:59:01 2005 UTC (9 years ago) by rtoy
Branch: MAIN
Changes since 1.100: +10 -1 lines
Diff to previous 1.100
The SCALE-FLOAT defoptimizer was getting confused when the number was
negative and the scale-factor caused underflow during computation of
the bounds.  Fix that.

This fixes misc.567 test from ansi-tests, and perhaps others.

Revision 1.100 - (view) (annotate) - [select for diffs]
Thu Sep 23 13:16:27 2004 UTC (9 years, 7 months ago) by rtoy
Branch: MAIN
CVS Tags: ppc_gencgc_snap_2005-05-14, snapshot-2004-10, snapshot-2004-11, snapshot-2004-12, snapshot-2005-01, snapshot-2005-02, snapshot-2005-03, snapshot-2005-04
Branch point for: ppc_gencgc_branch
Changes since 1.99: +10 -4 lines
Diff to previous 1.99
The optimizers for double-float and single-float were causing errors
if the range of the arg were too large to fit in a float.  Silently
return unbounded value instead of signaling an error during
compilation.

Revision 1.99 - (view) (annotate) - [select for diffs]
Fri Sep 3 18:36:10 2004 UTC (9 years, 7 months ago) by rtoy
Branch: MAIN
Changes since 1.98: +14 -4 lines
Diff to previous 1.98
The deftransform for random was not handling the case when NUM could
be a union type.

Revision 1.98 - (view) (annotate) - [select for diffs]
Fri Jun 18 18:18:12 2004 UTC (9 years, 10 months ago) by rtoy
Branch: MAIN
CVS Tags: prm-before-macosx-merge-tag, snapshot-2004-07, snapshot-2004-08, snapshot-2004-09
Changes since 1.97: +5 -18 lines
Diff to previous 1.97
o Fix a misplaced declaration in %unary-ftruncate/single-float
o Update %unary-ftruncate and the corresponding deftransform because
  it was not properly returning the correct sign for signed zeroes.
  If the number was in a good range, we used truncate, which loses the
  sign of zero.  (Should we have leave it in and add an explicit check
  for a zero result and adjust the sign appropriately?  That would
  allow us to use the fast builtin instructions at the expense of a
  test for zero and a fix.)

Revision 1.97 - (view) (annotate) - [select for diffs]
Sat Jan 10 05:01:41 2004 UTC (10 years, 3 months ago) by toy
Branch: MAIN
CVS Tags: amd64-merge-start, mod-arith-base, release-19a, release-19a-base, release-19a-pre1, release-19a-pre2, release-19a-pre3, snapshot-2004-04, snapshot-2004-05, snapshot-2004-06
Branch point for: mod-arith-branch, release-19a-branch
Changes since 1.96: +10 -1 lines
Diff to previous 1.96
Add a deftransform for ABS so that if the arg is known to be non-negative
we don't have to call abs at all.

Revision 1.96 - (view) (annotate) - [select for diffs]
Fri Jan 9 04:20:59 2004 UTC (10 years, 3 months ago) by toy
Branch: MAIN
Changes since 1.95: +8 -4 lines
Diff to previous 1.95
The EXPT derive-type optimizer was incorrectly deriving the type for
(expt <rational> <rational>).  The result can be a rational, a float,
or a complex single-float.

Revision 1.95 - (view) (annotate) - [select for diffs]
Fri Sep 12 12:55:19 2003 UTC (10 years, 7 months ago) by gerd
Branch: MAIN
CVS Tags: snapshot-2003-10, snapshot-2003-11, snapshot-2003-12
Changes since 1.94: +7 -7 lines
Diff to previous 1.94
	* src/compiler/srctran.lisp (%mask-field):  (unsigned-byte 0)
	is an invalid type specifier.

	* src/compiler/float-tran.lisp (float): Make three optimizers,
	one for no prototype, one for single-float prototype, and
	one for double-float prototype.

Revision 1.94 - (view) (annotate) - [select for diffs]
Sun Sep 7 11:48:29 2003 UTC (10 years, 7 months ago) by gerd
Branch: MAIN
Changes since 1.93: +2 -2 lines
Diff to previous 1.93
	(defun foo (x) (float x 1f0))
	(compile 'foo)
	(foo 0d0)
	 => 0d0

	Found by Paul Dietz with sqrt on complex numbers.

	* src/compiler/float-tran.lisp (float) <deftransform>:
	Test with single-float-p instead of floatp.

Revision 1.93 - (view) (annotate) - [select for diffs]
Fri Sep 5 15:35:32 2003 UTC (10 years, 7 months ago) by toy
Branch: MAIN
Changes since 1.92: +7 -3 lines
Diff to previous 1.92
compiler/float-tran.lisp:
o Oops.  We should subtract from 0, not 0d0
o Add the deftransform for - to the complex-fp-vops part too, because
  the vop gets that wrong.

compiler/sparc/float.lisp:
o Remove the vop for a real - complex because we get the sign of the
  imaginary part wrong.

Revision 1.92 - (view) (annotate) - [select for diffs]
Fri Sep 5 14:42:08 2003 UTC (10 years, 7 months ago) by toy
Branch: MAIN
Changes since 1.91: +4 -2 lines
Diff to previous 1.91
The deftransform for - with a float and complex arg was negating the
imaginary part instead of subtracting from 0.  This is needed to get
the correct sign if the imaginary part was 0.

(From a bug in Paul Dietz's ansi tests.)

Revision 1.91 - (view) (annotate) - [select for diffs]
Tue Sep 2 01:22:01 2003 UTC (10 years, 7 months ago) by toy
Branch: MAIN
CVS Tags: lisp-executable-base
Branch point for: lisp-executable
Changes since 1.90: +4 -2 lines
Diff to previous 1.90
DEFTRANSFORM for FLOAT needs to check if the number is a float before
calling %SINGLE-FLOAT which converts everything to a single-float.

(Noted by Christophe Rhodes on #lisp.)

Revision 1.90 - (view) (annotate) - [select for diffs]
Thu Jul 3 17:13:30 2003 UTC (10 years, 9 months ago) by toy
Branch: MAIN
CVS Tags: dynamic-extent-base, sparc_gencgc, sparc_gencgc_merge
Branch point for: dynamic-extent, sparc_gencgc_branch
Changes since 1.89: +3 -3 lines
Diff to previous 1.89
In the deftransform for %unary-ftruncate, the bounds could be lists
which we weren't handling.  Use bound-value to get the value.

This probably still needs some work.

Revision 1.89 - (view) (annotate) - [select for diffs]
Wed Jul 2 21:45:33 2003 UTC (10 years, 9 months ago) by toy
Branch: MAIN
Changes since 1.88: +7 -1 lines
Diff to previous 1.88
Define DOUBLE-FLOAT-BITS function and VOP for sparc to return the bits
of a double-float in multiple-values.  This is better than calling
double-float-high/low-bits which causes 2 stores to the stack to be
done.

Revision 1.88 - (view) (annotate) - [select for diffs]
Wed Apr 23 20:05:05 2003 UTC (11 years ago) by toy
Branch: MAIN
CVS Tags: remove_negative_zero_not_zero
Changes since 1.87: +7 -3 lines
Diff to previous 1.87
Describe the return types of decode-float, decode-single-float, and
decode-double-float more accurately.  (Do we need defoptimizers for
these?  Might be useful to get at least the exponent range
accurately.)

Revision 1.30.2.7 - (view) (annotate) - [select for diffs]
Sat Mar 23 18:50:20 2002 UTC (12 years, 1 month ago) by pw
Branch: RELENG_18
CVS Tags: RELEASE_18d
Changes since 1.30.2.6: +65 -51 lines
Diff to previous 1.30.2.6 , to branch point 1.30 , to next main 1.142
Mega commit to bring RELENG_18 branch in sync with HEAD in preparation
for release tagging 18d.

Revision 1.87 - (view) (annotate) - [select for diffs]
Thu Mar 14 21:30:51 2002 UTC (12 years, 1 month ago) by toy
Branch: MAIN
CVS Tags: LINKAGE_TABLE, PRE_LINKAGE_TABLE, UNICODE-BASE, cold-pcl-base, release-18e, release-18e-base, release-18e-pre1, release-18e-pre2
Branch point for: UNICODE-BRANCH, cold-pcl, release-18e-branch
Changes since 1.86: +3 -3 lines
Diff to previous 1.86
%UNARY-FTRUNCATE actually takes a REAL arg, not FLOAT, so correct the
DEFKNOWN for it.

Revision 1.86 - (view) (annotate) - [select for diffs]
Fri Mar 8 18:38:20 2002 UTC (12 years, 1 month ago) by toy
Branch: MAIN
Changes since 1.85: +16 -6 lines
Diff to previous 1.85
Micro optimization for Sparc.  The ftruncate code using
%unary-truncate has many redundant stack moves even when it's know the
result will fit in a (signed-byte 32), so create vops to do the
conversion directly in the floating-point registers.

Also, sparc-v9 can do 64-bit integer conversions, so make the range up
to 64-bits for sparc-v9.

Revision 1.85 - (view) (annotate) - [select for diffs]
Mon Feb 25 16:23:11 2002 UTC (12 years, 1 month ago) by toy
Branch: MAIN
Changes since 1.84: +37 -1 lines
Diff to previous 1.84
Make FTRUNCATE faster and less consy by manipulating the bits directly
instead of calling the generic TRUNCATE.  Make FFLOOR, FCEILING, and
FROUND use FTRUNCATE so they benefit too.

Revision 1.84 - (view) (annotate) - [select for diffs]
Mon Sep 24 15:25:38 2001 UTC (12 years, 7 months ago) by toy
Branch: MAIN
Changes since 1.83: +16 -3 lines
Diff to previous 1.83
o Small optimization for deftransform for complex/complex (one less
  operation for the denominator).
o Add corresponding deftransform for real/complex.

Revision 1.83 - (view) (annotate) - [select for diffs]
Thu Apr 12 19:45:56 2001 UTC (13 years ago) by pw
Branch: MAIN
Changes since 1.82: +4 -49 lines
Diff to previous 1.82
From Ray Toy:

Here is the patch that makes the propagate-float-type,
propagate-fun-type, and constrain-float-type features the default.
All old code is removed.

If you recompile, you should probably remove these features, just to
be sure (caught a few mistakes that way).

Revision 1.30.2.6 - (view) (annotate) - [select for diffs]
Thu Jul 6 06:56:21 2000 UTC (13 years, 9 months ago) by dtc
Branch: RELENG_18
CVS Tags: RELEASE_18c
Changes since 1.30.2.5: +4 -9 lines
Diff to previous 1.30.2.5 , to branch point 1.30
Fix elfun-derive-type-simple and trig-derive-type-aux to return
(complex float) types even when passed a (complex rational) or
(complex integer).

Revision 1.82 - (view) (annotate) - [select for diffs]
Thu Jul 6 04:38:39 2000 UTC (13 years, 9 months ago) by dtc
Branch: MAIN
Changes since 1.81: +4 -9 lines
Diff to previous 1.81
Fix elfun-derive-type-simple and trig-derive-type-aux to return
(complex float) types even when passed a (complex rational) or
(complex integer).

Revision 1.30.2.5 - (view) (annotate) - [select for diffs]
Tue May 23 16:37:08 2000 UTC (13 years, 11 months ago) by pw
Branch: RELENG_18
Changes since 1.30.2.4: +210 -102 lines
Diff to previous 1.30.2.4 , to branch point 1.30
This set of revisions brings the RELENG_18 branch up to HEAD in preparation
for an 18c release.

Revision 1.81 - (view) (annotate) - [select for diffs]
Sun Apr 2 18:45:09 2000 UTC (14 years ago) by dtc
Branch: MAIN
Changes since 1.80: +20 -2 lines
Diff to previous 1.80
From Raymond Toy:
o Add support for complex FP vops, enabled by the feature :complex-fp-vop
  which should work for all Sparcs.

Revision 1.80 - (view) (annotate) - [select for diffs]
Mon Sep 6 15:27:45 1999 UTC (14 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.79: +16 -48 lines
Diff to previous 1.79
Cleanup recent changes to the complex number division transform,
making use of the deftransform :policy feature. Further just use
generic division if the transform fails rather than adding specialised
complex float division functions which shouldn't have been defined
here anyway.

Revision 1.79 - (view) (annotate) - [select for diffs]
Tue Jul 13 15:42:36 1999 UTC (14 years, 9 months ago) by pw
Branch: MAIN
Changes since 1.78: +82 -16 lines
Diff to previous 1.78
From Ray Toy:

Changes:

o Change deftransform truncate to handle the two arg case.  Add
  similar deftranform for floor and ceiling.

o Only inline complex single/double-float division if speed > space.
  Otherwise, call the division routines.

Revision 1.78 - (view) (annotate) - [select for diffs]
Sat Jan 23 13:59:00 1999 UTC (15 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.77: +20 -23 lines
Diff to previous 1.77
Fixes for domain-subtypep.

Revision 1.77 - (view) (annotate) - [select for diffs]
Thu Oct 1 16:01:48 1998 UTC (15 years, 6 months ago) by dtc
Branch: MAIN
Changes since 1.76: +13 -2 lines
Diff to previous 1.76
Few fixes to elfun-derive-type-simple and associated interval
functions, from Raymond Toy.

Revision 1.76 - (view) (annotate) - [select for diffs]
Tue Sep 29 13:16:28 1998 UTC (15 years, 6 months ago) by dtc
Branch: MAIN
Changes since 1.75: +86 -62 lines
Diff to previous 1.75
Change the domain argument of elfun-derive-type-simple from a
numeric-type to a high and low bound for which negative and positive
zero being distinct as for the :negative-zero-not-zero feature.  This
fixes some problems that occurred when not compiled with the
:negative-zero-not-zero feature.

Revision 1.75 - (view) (annotate) - [select for diffs]
Sun Sep 20 15:17:34 1998 UTC (15 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.74: +55 -30 lines
Diff to previous 1.74
Modify elfun-derive-type-simple to take the intersection of the
argument with the domain and compute the bounds on the intersection.
If there's anything left over, add the complex type as the result.
From Raymond Toy.

Revision 1.74 - (view) (annotate) - [select for diffs]
Sun Sep 20 15:13:09 1998 UTC (15 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.73: +2 -2 lines
Diff to previous 1.73
Fix for coerce-numeric-bound which was returning Nil for exclusive bounds.

Revision 1.73 - (view) (annotate) - [select for diffs]
Sun Aug 23 12:39:08 1998 UTC (15 years, 8 months ago) by dtc
Branch: MAIN
Changes since 1.72: +4 -1 lines
Diff to previous 1.72
Add a transform for complex-float negation at the suggestion of Raymond Toy.

Revision 1.72 - (view) (annotate) - [select for diffs]
Sat Aug 22 11:30:44 1998 UTC (15 years, 8 months ago) by dtc
Branch: MAIN
Changes since 1.71: +3 -3 lines
Diff to previous 1.71
Further patch to relax complex float transforms to accept a real argument.

Revision 1.71 - (view) (annotate) - [select for diffs]
Sat Aug 22 11:23:21 1998 UTC (15 years, 8 months ago) by dtc
Branch: MAIN
Changes since 1.70: +12 -12 lines
Diff to previous 1.70
Relax the argument requirements for some of the complex-float
functions, applying the transforms for real arguments which can often
be handled efficiently inline; from Raymond Toy.

Revision 1.70 - (view) (annotate) - [select for diffs]
Fri Jul 24 17:22:27 1998 UTC (15 years, 9 months ago) by dtc
Branch: MAIN
Changes since 1.69: +1 -5 lines
Diff to previous 1.69
The complex-float and signed-array features are  now standard, so
remove unnecessary conditionals.

Revision 1.30.2.4 - (view) (annotate) - [select for diffs]
Tue Jun 23 11:22:49 1998 UTC (15 years, 10 months ago) by pw
Branch: RELENG_18
CVS Tags: RELEASE_18b
Changes since 1.30.2.3: +756 -658 lines
Diff to previous 1.30.2.3 , to branch point 1.30
This (huge) revision brings the RELENG_18 branch up to the current HEAD.
Note code/unix-glib2.lisp not yet included -- not sure it is ready to go.

Revision 1.69 - (view) (annotate) - [select for diffs]
Wed Apr 15 01:29:59 1998 UTC (16 years ago) by dtc
Branch: MAIN
Changes since 1.68: +3 -5 lines
Diff to previous 1.68
Kahan says (sqrt -0.0) returns -0.0.

Revision 1.68 - (view) (annotate) - [select for diffs]
Mon Mar 30 03:05:52 1998 UTC (16 years ago) by dtc
Branch: MAIN
Changes since 1.67: +5 -1 lines
Diff to previous 1.67
Add the special float function %expm1, and an inline VOP
implementation for the X86 port.

Revision 1.67 - (view) (annotate) - [select for diffs]
Mon Mar 30 02:44:26 1998 UTC (16 years ago) by dtc
Branch: MAIN
Changes since 1.66: +16 -19 lines
Diff to previous 1.66
Minor source cleanup.

Revision 1.66 - (view) (annotate) - [select for diffs]
Fri Mar 27 06:52:40 1998 UTC (16 years, 1 month ago) by dtc
Branch: MAIN
Changes since 1.65: +16 -13 lines
Diff to previous 1.65
Replace the float-sign source transform with type specific
deftransforms to quieten compiler Warnings.

Revision 1.65 - (view) (annotate) - [select for diffs]
Sat Mar 21 07:53:30 1998 UTC (16 years, 1 month ago) by dtc
Branch: MAIN
Changes since 1.64: +11 -2 lines
Diff to previous 1.64
Add transforms for complex single and double float equality.

Revision 1.64 - (view) (annotate) - [select for diffs]
Tue Feb 24 18:12:10 1998 UTC (16 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.63: +2 -2 lines
Diff to previous 1.63
Replace the defknown for %log1p-limited with one for %log1p.

Revision 1.63 - (view) (annotate) - [select for diffs]
Fri Feb 20 18:40:46 1998 UTC (16 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.62: +9 -10 lines
Diff to previous 1.62
Enhance one-arg-derive-type to optionally allow member types to be
converted to a numeric type and the derive-type-aux function called to
compute the result type. This allows a range to be returned for member
types.

Add a derive-type optimizer for the random function using the above
extension.

Ensure that the abs derive-type optimiser correctly coerces the result
bounds; this optimiser now returns a +0.0 lower bound whereas it had
been +-0.0.

Revision 1.62 - (view) (annotate) - [select for diffs]
Thu Feb 19 04:28:28 1998 UTC (16 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.61: +177 -211 lines
Diff to previous 1.61
Rework many of the derive-type optimizers:
1. Correct handling of integer and rational arguments which give
single-float results.
2. Correct coercion of the number-type bounds.
3. Improve consistency.

Functions modified: float-or-complex-type, elfun-derive-type-simple,
atan-derive-type-aux-2, phase-derive-type, imagpart-derive-type-aux,
trig-derive-type-aux, abs-derive-type-aux. Remove function
elfun-float-format. Add function coerce-numeric-bound.

Add an optional increasingp argument to elfun-derive-type-simple
allowing it to be used for acos, and remove acos-derive-type-aux.

Revision 1.61 - (view) (annotate) - [select for diffs]
Thu Feb 5 16:55:16 1998 UTC (16 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.60: +54 -22 lines
Diff to previous 1.60
Enhancement from Raymond Toy:
Update the trig optimizers so that they compute bounds when the
argument is within the "principal" domain of the function.  This
does not have any problems with argument reduction.

Revision 1.60 - (view) (annotate) - [select for diffs]
Sat Jan 24 14:49:23 1998 UTC (16 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.59: +35 -10 lines
Diff to previous 1.59
Fix for elfun-derive-type-simple which was incorrectly deriving a
single-float result for a real argument whereas the result type should
have been a float in this case; only for a rational argument can will
the result type be a single-float.  This in turn fixes the
mis-compiling of some maths functions, for example (exp #C(0d0 1d0))
was returning garbage.

Fix a similar problem in the cis derive-type optimizer, however the
fix doesn't special case rational arguments, always defaulting to a
float.

Revision 1.59 - (view) (annotate) - [select for diffs]
Mon Jan 5 05:54:55 1998 UTC (16 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.58: +50 -106 lines
Diff to previous 1.58
Enhancement of the arithmetic function derive type optimizers to
better handle float zeros, by Raymond Toy and Douglas Crosher:

* The arithmetic function derive type optimisers now accept intervals
for which -0.0 and 0.0 are recognisably different. This will fix
naturally into a proposal by Raymond Toy which is conditional upon
:negative-zero-is-not-zero. Without this feature the functions
{one,two}-arg-derive-type convert the type intervals appropriately
before and after these optimisers so that the user visible type
specifiers behave the same.

* Update interval-range-info to recognise the difference between -0.0
and 0.0. This in turn helps fix the phase derive type optimizer.

* Elfun-derive-type-simple now uses a type specifier to giving the
applicable range rather then a function; updates to the various uses
of this function.

* The sqrt and log derive type optimizers have been re-written and now
use elfun-derive-type-simple.

* Remove the unused function numeric-real-union-type-p.

* Extend the expt trnasform to transform powers of 1/2 to sqrt.

Revision 1.58 - (view) (annotate) - [select for diffs]
Fri Jan 2 05:08:52 1998 UTC (16 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.57: +110 -44 lines
Diff to previous 1.57
Revised version of the expt derive-type optimizer, fixing a number of
problems, from Raymond Toy.

Revision 1.57 - (view) (annotate) - [select for diffs]
Sat Dec 20 15:40:21 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.56: +2 -1 lines
Diff to previous 1.56
Temporarily disable the expt derive-type optimizer which has a
multitude of problems.

Revision 1.56 - (view) (annotate) - [select for diffs]
Fri Dec 19 02:39:29 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.55: +2 -3 lines
Diff to previous 1.55
Remove unnecessary ptimze speed/safety declaration.

Revision 1.55 - (view) (annotate) - [select for diffs]
Thu Dec 18 19:01:00 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.54: +25 -23 lines
Diff to previous 1.54
Enhancements from Raymond Toy:

compiler/srctran.lisp

	o Modify prepare-arg-for-derive-type to convert member types
	  to a union of member types of a single element.

	o Modify {one,two}-arg-derive-type to recognize single element
	  member types and directly call the function to return a
	  single-element member-type result.

compiler/float-tran.lisp:

	o Random changes to match the changes in srctran.lisp

	o Sqrt derive-type optimizer: if the result is real
	  the lower bound is >= 0, was defaulting to NIL in some cases.

Revision 1.54 - (view) (annotate) - [select for diffs]
Thu Dec 18 16:42:02 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.53: +4 -3 lines
Diff to previous 1.53
Enhance the sqrt derive-type optimize to return (0.0) rather than 0.0
if the argument is (0.0).

Revision 1.53 - (view) (annotate) - [select for diffs]
Wed Dec 17 15:07:50 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.52: +3 -3 lines
Diff to previous 1.52
Elfun-derive-type-simple: don't try and coerce default bounds to the
appropriate type if there are none. Noted by Raymond Toy.

Revision 1.52 - (view) (annotate) - [select for diffs]
Tue Dec 16 15:54:11 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.51: +86 -44 lines
Diff to previous 1.51
Ensure that the default bounds are coerced to the appropriate type in
elfun-derive-type-simple.

Add separate derive-type optimisers for sqrt, and log, to handle a
lower bound of zero correctly - was failing on for a lower bound of
(-0.0).

Revision 1.51 - (view) (annotate) - [select for diffs]
Tue Dec 16 02:21:27 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.50: +33 -49 lines
Diff to previous 1.50
Update of the expt derive-type optimizer to work with the recent
changes, from Raymond Toy.

Revision 1.50 - (view) (annotate) - [select for diffs]
Sun Dec 14 17:32:39 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.49: +1 -2 lines
Diff to previous 1.49
Remove a verbose debugging format command that slipped in.

Revision 1.49 - (view) (annotate) - [select for diffs]
Sun Dec 14 15:28:27 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.48: +10 -3 lines
Diff to previous 1.48
Fix the log and sqrt derive type optimizers which I broken in the
prior commit, also make them a little smart about the handling of a
lower limit of 0 as only a float could be -0.0.

Revision 1.48 - (view) (annotate) - [select for diffs]
Sun Dec 14 14:10:27 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.47: +355 -465 lines
Diff to previous 1.47
Merge in the revised derive-type optimisers from Raymond Toy:

compiler/srctran.lisp

o  Replaced all of the old optimizer routines with new ones that should
work much better.  Optimizers should now handle all union types and most
member types.  NOTE:  for some reason a member type with both numbers
and non-numbers isn't quite handled correctly.  The optimizer is only
passed the elements of the member type that are numbers; it never sees
the non-number elements of the member type.

o  Fixed a bug in bound-func.  Since all of the FP traps are turned off,
we now need to check in case the function returns things like infinity
and convert them to nil.

o  Fixed a bug in the computation of bounds for rem.  Invalid intervals
were sometimes returned.

compiler/float-tran.lisp

o  Mods to handle the changes in srctran.lisp.

o  All of the optimizers (from propagate-float and propagate-fun) should
now handle union types and member types.

o  Fixed a bug in the atan optimizer for two args with at least one of
them not being a real.

o  For functions that return (or float (complex float)), we try to be
more careful and compute the bounds for the float part, since we usually
have them.  Not sure what we gain, though.

-=-=-=-

Plus some further cleanups and fixes by Douglas Crosher:

o Merge with the latest verion of float-trans: CIS transform; no
result types on complex function transforms.

o Can use a common scale-float-derive-type-aux function.

o complex-derive-type-aux-2 was broken, needed updating to handle
changes.

o For sqrt and log return an (or float complex) type if the argument
type includes 0.0 in its range as 0.0 = -0.0 so the argument may also
be -0.0.

o A number of the optimizers returned a complex float with invalid
intervals just copied from the argument - strip the intervals from the
returned type in these cases.

o Note no expt optimiser.

Revision 1.47 - (view) (annotate) - [select for diffs]
Fri Dec 12 15:19:03 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.46: +34 -2 lines
Diff to previous 1.46
Special random transform for use with random-mt19937:
- For constant arguments, check the actual error after taking the
value MOD the limit so that a wider range are acceptable. E.g. Can now
inline (random (expt 2 32)) for which there is no error.
- On the x86 port use the faster multiplication rather than division
for the MOD calculation.

Revision 1.46 - (view) (annotate) - [select for diffs]
Sat Dec 6 20:12:21 1997 UTC (16 years, 4 months ago) by pw
Branch: MAIN
Changes since 1.45: +7 -1 lines
Diff to previous 1.45
Add deftransform for CIS.

Revision 1.45 - (view) (annotate) - [select for diffs]
Sat Dec 6 18:47:34 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.44: +26 -44 lines
Diff to previous 1.44
Add a transform for the complex-float conjugate, from Raymond Toy.

Remove the result type restrictions on the complex-float transforms
because these transforms can be reliably applied if the argument type
restrictions are met.

Revision 1.44 - (view) (annotate) - [select for diffs]
Fri Dec 5 16:32:32 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.43: +42 -18 lines
Diff to previous 1.43
Update to the derive-type optimizer for the complex function; from
Raymod Toy.

Backout the calls to float-or-complex-type in the sin and cos
derive-type optimizers, as these gave problems with union types.

Revision 1.43 - (view) (annotate) - [select for diffs]
Thu Dec 4 04:02:16 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.42: +190 -163 lines
Diff to previous 1.42
Update from Raymond Toy:

Fixed small bug in elfun-derive-type-1: When a complex number is
passed in, we don't want to just copy that as the result.  We want the
same type of complex number but with no bounds included.

New function float-or-complex-type to compute the union type (or float
(complex float)) with the appropriate type of float and bounds, if
needed.

At the end compiler/float-tran.lisp, the derive-type optimizers for
sin, cos, and tan, are never enabled, because of a misspelling of
propagate-fun-type (was progagate-fun-type). Plus a few fixes for
these.

Added expt derive-type optimizer, should handle all cases.

Added derive-type optimizers for conjugate and cis.

Revision 1.42 - (view) (annotate) - [select for diffs]
Thu Nov 27 02:50:16 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.41: +130 -10 lines
Diff to previous 1.41
Patch from Raymond Toy:
 o Fixed bug in real/imag part optimizers which didn't handle
   union types.
 o Added derive-type optimizer for complex.
 o Added deftransforms for complex operations:
	o complex-complex ops: + - * /
	o complex-float ops: + - * /
	o float-complex ops: + - *

Revision 1.41 - (view) (annotate) - [select for diffs]
Sun Nov 16 14:05:23 1997 UTC (16 years, 5 months ago) by dtc
Branch: MAIN
Changes since 1.40: +10 -14 lines
Diff to previous 1.40
Add transforms for realpart and imagpart given a complex rational
argument to %realpart and %imagepart respectively.

Enable the realpart and imagpart derive-type optimizers which now work
and are important for these functions to be inlined.

Revision 1.40 - (view) (annotate) - [select for diffs]
Wed Oct 15 17:01:21 1997 UTC (16 years, 6 months ago) by dtc
Branch: MAIN
Changes since 1.39: +34 -105 lines
Diff to previous 1.39
Update from Raymond Toy: Revised derive type optimizers for sin, cos,
and tan, that provide the result type and work with union types. The
result range which is problematic is not calculated. Removed the old
versions.

Revision 1.39 - (view) (annotate) - [select for diffs]
Thu Oct 9 05:56:29 1997 UTC (16 years, 6 months ago) by dtc
Branch: MAIN
Changes since 1.38: +1 -5 lines
Diff to previous 1.38
Remove compiler notes from new expt transforms; not inlined in the main
code yet.

Revision 1.38 - (view) (annotate) - [select for diffs]
Wed Oct 8 19:41:16 1997 UTC (16 years, 6 months ago) by dtc
Branch: MAIN
Changes since 1.37: +21 -11 lines
Diff to previous 1.37
Restrict the expt->%pow transform to arguments that produce real
results.

Revision 1.37 - (view) (annotate) - [select for diffs]
Sat Sep 20 11:51:08 1997 UTC (16 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.36: +15 -7 lines
Diff to previous 1.36
Updates from Raymond Toy:

Elfun-derive-type-union didn't properly handle the case of
elfun-derive-type-1 returning a union type like (or float (complex
float)) - it does now.

Elfun-derive-type-1 is slightly enhanced so that if the input is a
complex type, the result is a complex type of the same.  Before, we
just returned default-type.  Also, it's a bit smarter now so that if
the result is supposed to be (or float (complex float)), we try to
refine float to single-float or double-float if possible.

Revision 1.30.2.3 - (view) (annotate) - [select for diffs]
Fri Sep 12 10:44:55 1997 UTC (16 years, 7 months ago) by dtc
Branch: RELENG_18
CVS Tags: RELEASE_18a
Changes since 1.30.2.2: +414 -256 lines
Diff to previous 1.30.2.2 , to branch point 1.30
Bring in Raymond Toy's updates from current.

Revision 1.30.2.2 - (view) (annotate) - [select for diffs]
Tue Sep 9 00:44:21 1997 UTC (16 years, 7 months ago) by dtc
Branch: RELENG_18
Changes since 1.30.2.1: +13 -3 lines
Diff to previous 1.30.2.1 , to branch point 1.30
Merge in latest new-random support.

Revision 1.36 - (view) (annotate) - [select for diffs]
Mon Sep 8 20:26:26 1997 UTC (16 years, 7 months ago) by pw
Branch: MAIN
Changes since 1.35: +11 -9 lines
Diff to previous 1.35
Relocate NUMERIC-TYPE-REAL-P to a place where it gets
defined for #+(or :propagate-fun-type :propagate-float-type).

Revision 1.35 - (view) (annotate) - [select for diffs]
Fri Sep 5 18:23:56 1997 UTC (16 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.34: +49 -63 lines
Diff to previous 1.34
Updated log derive-type optimiser from Raymond Toy.

Revision 1.34 - (view) (annotate) - [select for diffs]
Fri Sep 5 11:36:43 1997 UTC (16 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.33: +4 -1 lines
Diff to previous 1.33
Hack patch to the log derive-type optimiser two argument case.

Revision 1.33 - (view) (annotate) - [select for diffs]
Fri Sep 5 02:32:46 1997 UTC (16 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.32: +415 -248 lines
Diff to previous 1.32
Updates to the derive type optimisers from Raymond Toy:

o Added optimizers for ftruncate, ffloor, and fceiling.

o Most elementary functions can now handle union types and appropriate
  bounds are returned.  This includes truncate, floor, ceiling, and
  float.

o Some bugs in the optimizers were also fixed because union types are
  handled now.  In particular most functions returned (FLOAT) (or
  subtype thereof) when in fact the answer should have been (OR FLOAT
  (COMPLEX FLOAT)).

o The optimizer for log now handles the case of (log x y) and returns
  appropriate bounds for it.  (It used to give up in this case.)

o The optimizer for atan and phase works better and handles more
  cases.

Revision 1.30.2.1 - (view) (annotate) - [select for diffs]
Sat Aug 30 18:24:53 1997 UTC (16 years, 7 months ago) by dtc
Branch: RELENG_18
Changes since 1.30: +54 -68 lines
Diff to previous 1.30
New macro WITH-FLOAT-TRAPS-MASKED to execute a body of code with some
floating point exceptions disabled. It avoids the overhead of
{set,get}-floating-point-modes, saving some consing and generally
giving smaller code. Exploit this new macro where
{set,get}-floating-point-modes has been used.

Revision 1.32 - (view) (annotate) - [select for diffs]
Sat Aug 30 18:21:39 1997 UTC (16 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.31: +54 -68 lines
Diff to previous 1.31
New macro WITH-FLOAT-TRAPS-MASKED to execute a body of code with some
floating point exceptions disabled. It avoids the overhead of
{set,get}-floating-point-modes, saving some consing and generally
giving smaller code. Exploit this new macro where
{set,get}-floating-point-modes has been used.

Revision 1.31 - (view) (annotate) - [select for diffs]
Wed Jun 11 18:32:24 1997 UTC (16 years, 10 months ago) by dtc
Branch: MAIN
Changes since 1.30: +13 -3 lines
Diff to previous 1.30
New-random tuning; with latest propagate-float-type code can inline to
32 bits on x86 and 31 on other ports.

Revision 1.30 - (view) (annotate) - [select for diffs]
Tue Jun 3 19:11:29 1997 UTC (16 years, 10 months ago) by dtc
Branch: MAIN
Branch point for: RELENG_18
Changes since 1.29: +9 -2 lines
Diff to previous 1.29
New implementation of random function by Raymond Toy.

Revision 1.29 - (view) (annotate) - [select for diffs]
Wed Apr 16 18:16:11 1997 UTC (17 years ago) by dtc
Branch: MAIN
Changes since 1.28: +31 -28 lines
Diff to previous 1.28
Modify the deftransforms for %sin, %cos, and %tan, to avoid an x86
conditional in the compile; now uses backend-featurep :x86; should
help cross-compiling.

Revision 1.28 - (view) (annotate) - [select for diffs]
Sat Apr 12 18:12:16 1997 UTC (17 years ago) by dtc
Branch: MAIN
Changes since 1.27: +12 -14 lines
Diff to previous 1.27
Cleanup an x86 conditional for the scale-float deftransform, use
backend-featurep :x86 so this doesn't break cross-compiling.

Revision 1.27 - (view) (annotate) - [select for diffs]
Sat Feb 15 21:39:39 1997 UTC (17 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.26: +3 -3 lines
Diff to previous 1.26
2s0 -> 2f0 noted by Ray.

Revision 1.26 - (view) (annotate) - [select for diffs]
Wed Feb 12 22:12:24 1997 UTC (17 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.25: +95 -56 lines
Diff to previous 1.25
Latest float propagation routines by Raymond Toy.

Revision 1.25 - (view) (annotate) - [select for diffs]
Wed Feb 5 15:41:50 1997 UTC (17 years, 2 months ago) by pw
Branch: MAIN
Changes since 1.24: +81 -41 lines
Diff to previous 1.24
initial post 1.3.7 merge

Revision 1.24 - (view) (annotate) - [select for diffs]
Sat Jan 18 14:31:35 1997 UTC (17 years, 3 months ago) by ram
Branch: MAIN
Changes since 1.23: +686 -27 lines
Diff to previous 1.23
Werkowskis source kit 1.03.7

Revision 1.23 - (view) (annotate) - [select for diffs]
Mon Oct 31 04:27:28 1994 UTC (19 years, 5 months ago) by ram
Branch: MAIN
Changes since 1.22: +1 -3 lines
Diff to previous 1.22
Fix headed boilerplate.

Revision 1.22 - (view) (annotate) - [select for diffs]
Fri Dec 17 15:03:56 1993 UTC (20 years, 4 months ago) by wlott
Branch: MAIN
Changes since 1.21: +9 -1 lines
Diff to previous 1.21
Added a derive-type defoptimizer for log.

Revision 1.21 - (view) (annotate) - [select for diffs]
Mon Nov 8 01:41:41 1993 UTC (20 years, 5 months ago) by wlott
Branch: MAIN
Changes since 1.20: +2 -2 lines
Diff to previous 1.20
Removed %log1p, %exp1m, and %cbrt.

Revision 1.20 - (view) (annotate) - [select for diffs]
Wed Aug 25 00:15:29 1993 UTC (20 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.19: +2 -2 lines
Diff to previous 1.19
Fix compiler warnings.

Revision 1.19 - (view) (annotate) - [select for diffs]
Sat Aug 21 08:16:28 1993 UTC (20 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.18: +1 -8 lines
Diff to previous 1.18
Move stubs for single-float-bits, etc. out of this file.

Revision 1.18 - (view) (annotate) - [select for diffs]
Wed May 12 11:11:10 1993 UTC (20 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.17: +2 -2 lines
Diff to previous 1.17
*byte-compiling* => (byte-compiling)

Revision 1.17 - (view) (annotate) - [select for diffs]
Tue May 11 20:56:09 1993 UTC (20 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.16: +2 -2 lines
Diff to previous 1.16
Fix add missing * needed for :when.

Revision 1.16 - (view) (annotate) - [select for diffs]
Tue May 11 13:50:47 1993 UTC (20 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.15: +33 -27 lines
Diff to previous 1.15
Update transforms to inhibit ones which pessimize byte code.

Revision 1.15 - (view) (annotate) - [select for diffs]
Fri May 7 16:03:05 1993 UTC (20 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.14: +16 -6 lines
Diff to previous 1.14
Add random transforms.

Revision 1.14 - (view) (annotate) - [select for diffs]
Thu Aug 13 18:03:59 1992 UTC (21 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.13: +3 -3 lines
Diff to previous 1.13
Fixed some lossage revealed by last change.

Revision 1.13 - (view) (annotate) - [select for diffs]
Wed Aug 5 00:43:49 1992 UTC (21 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.12: +44 -45 lines
Diff to previous 1.12
Change from loop to destructuring-bind, use the real REAL type now that we have
it.

Revision 1.12 - (view) (annotate) - [select for diffs]
Tue Nov 12 16:07:14 1991 UTC (22 years, 5 months ago) by ram
Branch: MAIN
Changes since 1.11: +52 -37 lines
Diff to previous 1.11
Added derive-type methods for ASIN, ACOS, ACOSH, ATANH and SQRT which figure
out whether the result type is real on the basis of the argument range.

Change the irrational -> C library transforms to use :EVAL-NAME instead of
macroexpanding a zillion times.  Also, the result of ATAN is always real, so we
don't need a result type assertion.

Revision 1.11 - (view) (annotate) - [select for diffs]
Wed Feb 20 14:57:29 1991 UTC (23 years, 2 months ago) by ram
Branch: MAIN
Changes since 1.10: +9 -5 lines
Diff to previous 1.10
New file header with RCS stuff.

Revision 1.10 - (view) (annotate) - [select for diffs]
Wed Jan 2 19:13:58 1991 UTC (23 years, 3 months ago) by ram
Branch: MAIN
Changes since 1.9: +3 -3 lines
Diff to previous 1.9
Ripped out :policy specs in unsafe transforms, as this semantics is
automatically handled by VALID-FUNCTION-USE.

Revision 1.9 - (view) (annotate) - [select for diffs]
Wed Dec 12 00:08:45 1990 UTC (23 years, 4 months ago) by ram
Branch: MAIN
Changes since 1.8: +14 -11 lines
Diff to previous 1.8
Added ROUND => %UNARY-ROUND transform like that for TRUNCATE.
Fixed irrational transforms with output type assertions to specify
:policy (zerop safety), since if we do the call and the result is not
real, we will get garbage rather than an error.

Revision 1.8 - (view) (annotate) - [select for diffs]
Sun Dec 2 15:59:07 1990 UTC (23 years, 4 months ago) by wlott
Branch: MAIN
Changes since 1.7: +1 -9 lines
Diff to previous 1.7
Deleted the defconstant for mumble-float-digits, 'cause it also exists in
parms.lisp.

Revision 1.7 - (view) (annotate) - [select for diffs]
Sat Dec 1 16:32:28 1990 UTC (23 years, 4 months ago) by wlott
Branch: MAIN
Changes since 1.6: +21 -21 lines
Diff to previous 1.6
Added vm: where necessary now that the C package doesn't use the VM
package.

Revision 1.6 - (view) (annotate) - [select for diffs]
Wed Oct 24 16:44:14 1990 UTC (23 years, 6 months ago) by ram
Branch: MAIN
Changes since 1.5: +19 -10 lines
Diff to previous 1.5
Generalized float contagion a bit to reduce the possiblity of quiet
inefficency.  Now we handle mixed single/double float operations, and
also do this contagion on comparisons.  Also, we explicitly
GIVE-UP when there is a integer-rational comparison where the 
rational is non-constant to reduce the chance that a mixed comparison
will get through with no efficency note.

Revision 1.5 - (view) (annotate) - [select for diffs]
Sat Oct 20 05:40:02 1990 UTC (23 years, 6 months ago) by ram
Branch: MAIN
Changes since 1.4: +29 -12 lines
Diff to previous 1.4
Added float contagion transforms so that mixed rational/float arithmetic
doesn't lose horribly.

Revision 1.4 - (view) (annotate) - [select for diffs]
Thu Oct 18 02:53:50 1990 UTC (23 years, 6 months ago) by ram
Branch: MAIN
Changes since 1.3: +60 -5 lines
Diff to previous 1.3
Added transforms to pick off the real cases of the irrational functions
and directly call the C interface stub (which can be inline expanded.)
Also, generalized the rational-constant/float compare to work for any
constant that has a precise single-float representation, not just for 0.

Revision 1.3 - (view) (annotate) - [select for diffs]
Fri Sep 28 06:41:54 1990 UTC (23 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.2: +15 -13 lines
Diff to previous 1.2
Changed the float exponent DEFTYPEs to allow for denormalized floats.

Revision 1.2 - (view) (annotate) - [select for diffs]
Thu Jul 5 11:00:10 1990 UTC (23 years, 9 months ago) by wlott
Branch: MAIN
Changes since 1.1: +3 -3 lines
Diff to previous 1.1
Fixed defknown of make-double-float to spec the return type as double-float
instead of single-float.

Revision 1.1 - (view) (annotate) - [select for diffs]
Mon Jul 2 16:28:01 1990 UTC (23 years, 9 months ago) by ram
Branch: MAIN
Initial revision

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

  ViewVC Help
Powered by ViewVC 1.1.5