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
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.