1.0.30.38: faster TRUNCATE on floats
authorNikodemus Siivola <nikodemus@random-state.net>
Thu, 6 Aug 2009 12:52:58 +0000 (12:52 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Thu, 6 Aug 2009 12:52:58 +0000 (12:52 +0000)
commit89b82a03269446741ab4b7bba8656d6e37502fe9
treed9551a3fabfcc1f95cdd80cc3b2253f703dcab23
parentaeeaf53ca8ab74c71bc3af46506b309a906a141b
1.0.30.38: faster TRUNCATE on floats

 * Specialized %UNARY-TRUNCATE/SINGLE-FLOAT and
   %UNARY-TRUNCATE/DOUBLE-FLOAT.

 * Explicit coercions to appropriate float types in the TRUNCATE
   transforms. This gets rid of generic arithmetic in the general case
   (Python is reluctant to insert explicit integer-tofloat coercions
   for integers of unknown range due to precision issues.)

 * Since COERCE (and %SINGLE-FLOAT and %DOUBLE-FLOAT) are not
   flushable, take core not to generate leftover code in the TRUNCATE
   transform when the result lvar has a single-value type.

 * Rename %UNARY-TRUNCATE float VOPs, so that transforming to a
   specialized floating point version doesn't make use unable to
   implement it directly as a VOP when the range of the float is
   sufficiently constrained.
13 files changed:
NEWS
package-data-list.lisp-expr
src/code/float.lisp
src/compiler/alpha/float.lisp
src/compiler/float-tran.lisp
src/compiler/fndb.lisp
src/compiler/hppa/float.lisp
src/compiler/ppc/float.lisp
src/compiler/sparc/float.lisp
src/compiler/x86-64/float.lisp
src/compiler/x86/float.lisp
tests/compiler.pure.lisp
version.lisp-expr