BlockRotate.mesa
Copyright Ó 1991, 1992 by Xerox Corporation. All rights reserved.
Russ Atkinson (RRA) October 2, 1991 5:06 pm PDT
Michael Plass, March 6, 1992 1:04 pm PST
DIRECTORY Basics;
BlockRotate: CEDAR DEFINITIONS = BEGIN
WordPtr: TYPE = POINTER TO WORD;
RawBytesPtr: TYPE = POINTER TO Basics.RawBytes;
RotateLeft: UNSAFE PROC
[src: WordPtr, srcPitch: INTEGER, dst: WordPtr, dstPitch: INTEGER] RETURNS [WORD];
Rotates a square block of bits.
Size of the block is BITS[WORD].
srcPitch and dstPitch are in addressing units.
Return value is zero iff all source words are zero.
RotateRight: UNSAFE PROC
[src: WordPtr, srcPitch: INTEGER, dst: WordPtr, dstPitch: INTEGER] RETURNS [WORD];
Rotate8x32: UNSAFE PROC
[src: RawBytesPtr, srcOff: INTEGER, srcPitch: INTEGER, dst: WordPtr, dstPitch: INTEGER] RETURNS [WORD];
A lower-level primitive.
Return value is zero iff all source words are zero.
END.