Documentation Errata for ADSP-BF70x Blackfin+™ Processor Programming Reference
Chapter: 8 / Page 106
Doc ID: DOC-1726
For shift operations, positive magnitude shifts are always to the left, and negative magnitude shifts are always to the right. All of the shift operation descriptions have this inverted (applying also to AShift16Vec on p8-108, Ashift32 on p8-111, AShiftAcc on p8-113, LShift16 on p8-116, LShift16Vec on p8-118, LShift on p8-120, and LShiftA on p8-122). Specific to the arithmetic shift (ASHIFT) instruction, the correct description is:
The versions of this instruction using ashift syntax support the following shift operations:
- For a positive shift_magnitude, ashift produces a logical shift left but does not guarantee sign bit preservation. If the positive shift_magnitude is too large, the ashift operation saturates the destination register. A logical shift left that would otherwise lose non-sign bits off the left-hand side saturates to the maximum positive or negative value instead.
- For a negative shift_magnitude, ashift produces an arithmetic shift right with sign bit preservation. The sign bit value back-fills the left-most bit positions vacated by the arithmetic shift right.
This information is CORRECT in the code examples shown on p2-35.
Last Update Date: Aug 8 2017