75 int8_t kShift = 15 - shift;
78 #ifndef ARM_MATH_CM0_FAMILY 81 q15_t in1, in2, in3, in4;
83 q31_t out1, out2, out3, out4;
87 blkCnt = blockSize >> 2u;
100 out1 = (
q31_t) ((
q15_t) (inA1 >> 16) * scaleFract);
102 out3 = (
q31_t) ((
q15_t) (inA2 >> 16) * scaleFract);
106 out1 = out1 >> kShift;
107 out2 = out2 >> kShift;
108 out3 = out3 >> kShift;
109 out4 = out4 >> kShift;
112 in1 = (
q15_t) (__SSAT(out1, 16));
113 in2 = (
q15_t) (__SSAT(out2, 16));
114 in3 = (
q15_t) (__SSAT(out3, 16));
115 in4 = (
q15_t) (__SSAT(out4, 16));
118 *
__SIMD32(pDst)++ = __PKHBT(in2, in1, 16);
119 *
__SIMD32(pDst)++ = __PKHBT(in4, in3, 16);
127 blkCnt = blockSize % 0x4u;
133 *pDst++ = (
q15_t) (__SSAT(((*pSrc++) * scaleFract) >> kShift, 16));
150 *pDst++ = (
q15_t) (__SSAT(((
q31_t) * pSrc++ * scaleFract) >> kShift, 16));
void arm_scale_q15(q15_t *pSrc, q15_t scaleFract, int8_t shift, q15_t *pDst, uint32_t blockSize)
Multiplies a Q15 vector by a scalar.
int16_t q15_t
16-bit fractional data type in 1.15 format.
#define __SIMD32(addr)
definition to read/write two 16 bit values.
int32_t q31_t
32-bit fractional data type in 1.31 format.