Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B, Instruction Set Reference, N-Z

Vol. 2B 4-279
INSTRUCTION SET REFERENCE, N-Z
64-bits and sets the mask width for CL to 6 bits. See the summary chart at the begin-
ning of this section for encoding data and limits.
IA-32 Architecture Compatibility
The 8086 does not mask the shift count. However, all other IA-32 processors
(starting with the Intel 286 processor) do mask the shift count to 5 bits, resulting in
a maximum count of 31. This masking is done in all operating modes (including the
virtual-8086 mode) to reduce the maximum execution time of the instructions.
Operation
IF 64-Bit Mode and using REX.W
THEN
countMASK 3FH;
ELSE
countMASK 1FH;
FI
tempCOUNT (COUNT AND countMASK);
tempDEST DEST;
WHILE (tempCOUNT
0)
DO
IF instruction is SAL or SHL
THEN
CF MSB(DEST);
ELSE (* Instruction is SAR or SHR *)
CF LSB(DEST);
FI;
IF instruction is SAL or SHL
THEN
DEST DEST
2;
ELSE
IF instruction is SAR
THEN
DEST DEST
/ 2; (* Signed divide, rounding toward negative infinity *)
ELSE (* Instruction is SHR *)
DEST DEST
/ 2 ; (* Unsigned divide *)
FI;
FI;
tempCOUNT tempCOUNT – 1;
OD;
(* Determine overflow for the various instructions *)
IF (COUNT and countMASK)
= 1