91 uint8_t sign = (shiftBits & 0x80);
93 #ifndef ARM_MATH_CM0_FAMILY 95 q31_t in1, in2, in3, in4;
96 q31_t out1, out2, out3, out4;
99 blkCnt = blockSize >> 2u;
112 out1 = in1 << shiftBits;
114 out2 = in2 << shiftBits;
116 if(in1 != (out1 >> shiftBits))
117 out1 = 0x7FFFFFFF ^ (in1 >> 31);
119 if(in2 != (out2 >> shiftBits))
120 out2 = 0x7FFFFFFF ^ (in2 >> 31);
123 out3 = in3 << shiftBits;
125 out4 = in4 << shiftBits;
127 if(in3 != (out3 >> shiftBits))
128 out3 = 0x7FFFFFFF ^ (in3 >> 31);
130 if(in4 != (out4 >> shiftBits))
131 out4 = 0x7FFFFFFF ^ (in4 >> 31);
158 *pDst = (in1 >> -shiftBits);
159 *(pDst + 1) = (in2 >> -shiftBits);
160 *(pDst + 2) = (in3 >> -shiftBits);
161 *(pDst + 3) = (in4 >> -shiftBits);
174 blkCnt = blockSize % 0x4u;
191 *pDst++ = (sign == 0u) ? clip_q63_to_q31((
q63_t) * pSrc++ << shiftBits) :
192 (*pSrc++ >> -shiftBits);
int64_t q63_t
64-bit fractional data type in 1.63 format.
void arm_shift_q31(q31_t *pSrc, int8_t shiftBits, q31_t *pDst, uint32_t blockSize)
Shifts the elements of a Q31 vector a specified number of bits.
int32_t q31_t
32-bit fractional data type in 1.31 format.