Vector Shift
- RISCV_DSP_ATTRIBUTE void riscv_shift_q15 (const q15_t *pSrc, int8_t shiftBits, q15_t *pDst, uint32_t blockSize)
- RISCV_DSP_ATTRIBUTE void riscv_shift_q31 (const q31_t *pSrc, int8_t shiftBits, q31_t *pDst, uint32_t blockSize)
- RISCV_DSP_ATTRIBUTE void riscv_shift_q7 (const q7_t *pSrc, int8_t shiftBits, q7_t *pDst, uint32_t blockSize)
- group BasicShift
Shifts the elements of a fixed-point vector by a specified number of bits. There are separate functions for Q7, Q15, and Q31 data types. The underlying algorithm used is:
If
shift
is positive then the elements of the vector are shifted to the left. Ifshift
is negative then the elements of the vector are shifted to the right.The functions support in-place computation allowing the source and destination pointers to reference the same memory buffer.
Functions
- RISCV_DSP_ATTRIBUTE void riscv_shift_q15 (const q15_t *pSrc, int8_t shiftBits, q15_t *pDst, uint32_t blockSize)
Shifts the elements of a Q15 vector a specified number of bits.
- Scaling and Overflow Behavior
The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.
- Parameters
pSrc – [in] points to the input vector
shiftBits – [in] number of bits to shift. A positive value shifts left; a negative value shifts right.
pDst – [out] points to the output vector
blockSize – [in] number of samples in each vector
- RISCV_DSP_ATTRIBUTE void riscv_shift_q31 (const q31_t *pSrc, int8_t shiftBits, q31_t *pDst, uint32_t blockSize)
Shifts the elements of a Q31 vector a specified number of bits.
- Scaling and Overflow Behavior
The function uses saturating arithmetic. Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated.
- Parameters
pSrc – [in] points to the input vector
shiftBits – [in] number of bits to shift. A positive value shifts left; a negative value shifts right.
pDst – [out] points to the output vector
blockSize – [in] number of samples in the vector
- RISCV_DSP_ATTRIBUTE void riscv_shift_q7 (const q7_t *pSrc, int8_t shiftBits, q7_t *pDst, uint32_t blockSize)
Shifts the elements of a Q7 vector a specified number of bits.
- onditions for optimum performance
Input and output buffers should be aligned by 32-bit
- Scaling and Overflow Behavior
The function uses saturating arithmetic. Results outside of the allowable Q7 range [0x80 0x7F] are saturated.
- Parameters
pSrc – [in] points to the input vector
shiftBits – [in] number of bits to shift. A positive value shifts left; a negative value shifts right.
pDst – [out] points to the output vector
blockSize – [in] number of samples in each vector