- Feb 05, 2010
-
-
rtoy authored
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.
-
- Nov 02, 2009
-
-
rtoy authored
amd64-dd-branch.
-
rtoy authored
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.
-
- Aug 11, 2009
-
-
rtoy authored
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.
-
- Jun 16, 2009
-
-
rtoy authored
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.
-
- Jun 15, 2009
-
-
rtoy authored
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.
-
rtoy authored
- complex + real - complex - real - real + complex o Clean up comments and fix erroneous ones.
-
- Mar 18, 2009
-
-
rtoy authored
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.
-
- Dec 30, 2008
-
-
rtoy authored
o Use ETYPECASE instead of TYPECASE when defining %COMPLEX-foo-FLOAT.
-
- Dec 22, 2008
-
-
rtoy authored
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!
-
- Nov 16, 2008
-
-
rtoy authored
:complex-fp-vops is not defined.
-
- Nov 14, 2008
-
-
rtoy authored
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
-
- Nov 13, 2008
-
-
rtoy authored
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.
-
rtoy authored
(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.
-
- Nov 12, 2008
-
-
rtoy authored
sse2-packed-2008-11-12).
-
- Jun 26, 2008
-
-
rtoy authored
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.
-
- Jun 24, 2008
-
-
rtoy authored
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.
-
- Apr 08, 2008
-
-
rtoy authored
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.
-
- Apr 03, 2008
-
-
rtoy authored
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.
-
- Feb 14, 2008
-
-
rtoy authored
be the largest possible number.
-
- Feb 01, 2008
-
-
rtoy authored
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).
-
- Jun 27, 2007
-
-
rtoy authored
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.
-
- Jun 21, 2007
-
-
rtoy authored
-
- Jun 20, 2007
-
-
rtoy authored
(nonexistent) block.
-
- Jun 11, 2007
-
-
rtoy authored
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.
-
- May 09, 2007
-
-
rtoy authored
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.
-
- Feb 03, 2007
-
-
rtoy authored
(defun f (x y) (declare (fixnum x y)) (expt x y)) caused an error because we weren't handling member types correctly.
-
- Jan 23, 2007
-
-
rtoy authored
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.
-
- Aug 21, 2006
-
-
rtoy authored
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.
-
- Jul 07, 2006
-
-
rtoy authored
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?)
-
rtoy authored
double-double-floats if the arg is non-negative.
-
- Jun 30, 2006
-
-
rtoy authored
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).
-
- Jun 26, 2005
-
-
rtoy authored
mrg32k3a test in cl-bench.
-
- Jun 19, 2005
-
-
rtoy authored
micro-optimization.
-
- Apr 29, 2005
-
-
rtoy authored
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.
-
- Apr 24, 2005
-
-
rtoy authored
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.
-
- Sep 23, 2004
-
-
rtoy authored
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.
-
- Sep 03, 2004
-
-
rtoy authored
be a union type.
-
- Jun 18, 2004
-
-
rtoy authored
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.)
-
- Jan 10, 2004
-
-
toy authored
we don't have to call abs at all.
-