sbcl.sbcl/contrib/sb-rotate-byte
Juho Snellman a28e5039d2 0.9.4.8:
Add a fallback implementation of SB-ROTATE-BYTE:%UNSIGNED-32-ROTATE-BYTE
        for platforms without the optimized VOPs, that isn't as pessimal as
        the generic %ROTATE-BYTE. About 70x speedup for SB-MD5 on x86-64.
2005-08-26 22:19:12 +00:00
..
.cvsignore 0.8.0.12: 2003-05-28 14:26:48 +00:00
compiler.lisp 0.9.4.8: 2005-08-26 22:19:12 +00:00
Makefile 0.7.13.32 2003-03-19 13:15:44 +00:00
package.lisp 0.7.12.36: 2003-02-11 15:42:34 +00:00
ppc-vm.lisp 0.9.2.43: 2005-07-14 16:30:05 +00:00
README 0.7.12.36: 2003-02-11 15:42:34 +00:00
rotate-byte-tests.lisp 0.9.3.79: 2005-08-26 17:52:25 +00:00
rotate-byte.lisp 0.9.2.43: 2005-07-14 16:30:05 +00:00
sb-rotate-byte.asd 0.8.5.26: 2003-11-08 15:04:45 +00:00
sb-rotate-byte.texinfo 0.8.9.48: 2004-04-16 14:17:39 +00:00
x86-vm.lisp 0.9.3.79: 2005-08-26 17:52:25 +00:00

This module provides an implementation of ROTATE-BYTE, described at
<http://www.cliki.net/ROTATE-BYTE">.  Its inclusion is hoped to
achieve two aims:

(1) to provide the necessary functionality for implementations of
    cryptographic and hashing algorithms (e.g. MD5);

(2) to provide an example of the things that can be achieved by using
    the external but unsupported interfaces to the compiler.

Included in the module as of 2003-02-11 is an efficient implementation
of unsigned 32-bit rotation for the x86; when the compiler can prove
that the rotation in question is of an (UNSIGNED-BYTE 32) over the
byte specifier (BYTE 32 0), it will compile directly to machine
rotation instructions.  Patches for similar functionality on other
platforms are welcome.