1.0.15.16: New modular arithmetic representation decision
Prefers any exactly-matching modular implementation, then tagged
if possible, then untagged. Should make code of the form
(logand xxx most-positive-fixnum)
more tolerable.
Also includes better lognot/fixnum implementation on all
platforms.
Squashed commit of the following:
commit
81776d9aab531db20711320ecea920453e058cef
Author: Christophe Rhodes <csr21@cantab.net>
Date: Fri Mar 7 04:54:03 2008 -0700
Fix lognot for fixnums on alpha.
commit
27ce80579851bf9227d7d1121cf1554dc383049d
Author: SBCL devs <sbcl-dev@aleph.math.ualberta.ca>
Date: Thu Mar 6 15:02:03 2008 -0700
New modular arithmetic ported to alpha
(as yet untested beyond make-genesis-2: lognot/fixnum is buggy)
commit
d6ae6339374983ae874d85f3c52103c77ccad222
Author: Christophe Rhodes <csr21@localhost.localdomain>
Date: Fri Jan 11 17:38:19 2008 +0000
New modular arithmetic ported to mips.
Tested by Thiemo Seufer.
commit
50e2e51d25bb3d3997e4b884b7a15f7ba1992391
Author: Christophe Rhodes <csr21@localhost.localdomain>
Date: Fri Jan 11 17:37:41 2008 +0000
Make find-modular-class get signed and unsigned the right way round.
As it happened, this all worked by accident anyway, because the only
other user of the *foo-modular-class* specials didn't rely on the
separation between the classes, but instead used other data. Hmm...
(Noticed by Nikodemus Siivola)
commit
d3de3d27b212999672644d8a4fccfce9676dbf4f
Author: Christophe Rhodes <csr21@zeus.jesus.cam.ac.uk>
Date: Tue Jan 1 14:25:33 2008 +0000
New modular arithmetic ported to sparc.
As with ppc, the signed modular arithmetic is not terribly useful, as
only good functions have been implemented (so no +, -, * and ash)
commit
e99c204ab165139f4c8f8aacb59d4a825b90b7d1
Author: Christophe Rhodes <mas01cr@gibbons.doc.gold.ac.uk>
Date: Mon Dec 31 18:15:41 2007 +0000
Fix for fixnum LOGNOT on PPC
Use subfic res, x, -4 rather than xori res, x, -4 -- xori's immediate
argument is not sign-extended.
(Thanks to Andy Hefner for the idea to use subfic rather than xori+xoris)
commit
db8ffb719750c8bc655519b03c2081cc3b8d0b2e
Author: Christophe Rhodes <mas01cr@gibbons.doc.gold.ac.uk>
Date: Mon Dec 31 18:13:21 2007 +0000
New modular arithmetic ported to ppc.
Simple modifications only. It remains for someone to add signed modular
definitions of +, -, * and so on for this to become useful on ppc.
commit
5c7562fc1e2a96a81d9bc32fb77ad70ed1794e6e
Author: Christophe Rhodes <crhodes@gibbons.doc.gold.ac.uk>
Date: Mon Dec 31 10:12:26 2007 +0000
New modular arithmetic choice for x86-64
Simply adapt x86-64/arith.lisp by
* removing logxor implementation (as it's now :good)
* adapting %LEA implementation
commit
39054fae6e5a2e55856a506ad497978adcbbd6c2
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Sun Dec 30 21:50:16 2007 +0000
Better fixnum LOGNOT implementations.
Apparently inherited from cmucl, our fixnum and signed LOGNOT VOPs had
generator costs that preferred the signed representation over the tagged.
Fix this (on all backends; tested only on x86)
commit
6eee19de7a49762ea2f3bbfe89d9ea1b0dcee47f
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Sun Dec 30 21:29:39 2007 +0000
Better signed modular arithmetic.
All the LOGFOO functions are :good modular functions for signed
modular arithmetic.
LOGXOR is a :good modular function for untagged unsigned modular
arithmetic.
commit
32961ecb51bcfea655f985d1f774a8fc46bd155b
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Sun Dec 30 19:30:57 2007 +0000
Split untagged modular class into unsigned and signed variants.
FIND-MODULAR-VERSION now takes both KIND and SIGNEDP arguments.
commit
e3b88693c3721cd84d9fb4a01d624d450c120cdd
Author: Christophe Rhodes <csr21@omega.localdomain>
Date: Sun Dec 30 17:58:49 2007 +0000
Choice of modular version, initial commit
Commit of approximately September vintage work, x86-only.