0.8.4.12:
I'm not proud of this.
HEALTH WARNING: this may not work. It does for me, on Linux/PPC.
If your sourceforge-fu is strong, please try it.
HEALTH WARNING: this is ugly as sin. Unexported symbols, special
assumptions, KLUDGEs thrown in with gay abandon.
In partial mitigation, it does fix a bug :-)
Fix for lying-to-the-compiler bug in
UB32-STRENGTH-REDUCE-CONSTANT-MULTIPLY
... turn TRULY-THEs into suitable LOGANDs
(inefficient in compile-time space; we only need one
LOGAND wrapping the resulting form)
... likewise in x86 OPTIMIZE-MULTIPLY
(even less efficient: constant mask is first :-)
but that would be slow at runtime if we just left it there, so
... add - as a modular function (that was easy)
... add preliminary support for ASH as a modular function
(for constant right shifts):
... delete ASH-RIGHT-[UN]SIGNED from the sparc backend
(will be restored eventually, fear not, probably more
cross-platformly)
... hack in special knowledge about ASH into CUT-TO-WIDTH
... ensure that all backends have a suitable VOP for translation
of new ASH function
... (alpha version is 64bit, oh yes)
... don't forget out-of-line version (for xc also!)
(aside: might we not need out-of-line versions of
other modular functions in the xc?)
12 files changed: