Lines Matching +full:- +full:t

1 /* ----------------------------------------------------------------------
4 * Description: This file has function definition of Radix-4 FFT & IFFT function and
5 * In-place bit reversal using bit reversal table
10 * Target Processor: Cortex-M and Cortex-A cores
11 * -------------------------------------------------------------------- */
13 * Copyright (C) 2010-2021 ARM Limited or its affiliates. All rights reserved.
15 * SPDX-License-Identifier: Apache-2.0
21 * www.apache.org/licenses/LICENSE-2.0
61 @param[in,out] pSrc points to the complex data buffer. Processing occurs in-place.
70 | --------: | ------------: | ------------: | ------------------------: |
77 | ---------: | ------------: | ------------: | ------------------------: |
89 if (S->ifftFlag == 1U) in arm_cfft_radix4_q15()
91 /* Complex IFFT radix-4 */ in arm_cfft_radix4_q15()
92 arm_radix4_butterfly_inverse_q15(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); in arm_cfft_radix4_q15()
96 /* Complex FFT radix-4 */ in arm_cfft_radix4_q15()
97 arm_radix4_butterfly_q15(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); in arm_cfft_radix4_q15()
100 if (S->bitReverseFlag == 1U) in arm_cfft_radix4_q15()
103 arm_bitreversal_q15(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); in arm_cfft_radix4_q15()
113 * Radix-4 FFT algorithm used is :
129 * Twiddle factors for radix-4 FFT:
130 * Wn = co1 + j * (- si1)
131 * W2n = co2 + j * (- si2)
132 * W3n = co3 + j * (- si3)
134 * The real and imaginary output values for the radix-4 butterfly are
137 * xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1)
138 * yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1)
139 * xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2)
140 * yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2)
141 * xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3)
142 * yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3)
148 @param[in,out] pSrc16 points to the in-place buffer of Q15 data type
163 q31_t R, S, T, U; in arm_radix4_butterfly_q15() local
206 T = read_q15x2 (pSi0); in arm_radix4_butterfly_q15()
207 T = __SHADD16(T, 0); /* this is just a SIMD arithmetic shift right by 1 */ in arm_radix4_butterfly_q15()
208T = __SHADD16(T, 0); /* it turns out doing this twice is 2 cycles, the alternative takes 3 cycles … in arm_radix4_butterfly_q15()
210 in = ((int16_t) (T & 0xFFFF)) >> 2; // alternative code that takes 3 cycles in arm_radix4_butterfly_q15()
211 T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF); in arm_radix4_butterfly_q15()
220 R = __QADD16(T, S); in arm_radix4_butterfly_q15()
222 /* S = packed((ya - yc), (xa - xc) ) */ in arm_radix4_butterfly_q15()
223 S = __QSUB16(T, S); in arm_radix4_butterfly_q15()
227 T = read_q15x2 (pSi1); in arm_radix4_butterfly_q15()
228 T = __SHADD16(T, 0); in arm_radix4_butterfly_q15()
229 T = __SHADD16(T, 0); in arm_radix4_butterfly_q15()
236 /* T = packed((yb + yd), (xb + xd) ) */ in arm_radix4_butterfly_q15()
237 T = __QADD16(T, U); in arm_radix4_butterfly_q15()
242 write_q15x2_ia (&pSi0, __SHADD16(R, T)); in arm_radix4_butterfly_q15()
244 /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */ in arm_radix4_butterfly_q15()
245 R = __QSUB16(R, T); in arm_radix4_butterfly_q15()
251 /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ in arm_radix4_butterfly_q15()
253 /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_q15()
256 /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_q15()
258 /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ in arm_radix4_butterfly_q15()
263 /* T = packed(yb, xb) */ in arm_radix4_butterfly_q15()
264 T = read_q15x2 (pSi1); in arm_radix4_butterfly_q15()
265 T = __SHADD16(T, 0); in arm_radix4_butterfly_q15()
266 T = __SHADD16(T, 0); in arm_radix4_butterfly_q15()
278 /* T = packed(yb-yd, xb-xd) */ in arm_radix4_butterfly_q15()
279 T = __QSUB16(T, U); in arm_radix4_butterfly_q15()
282 /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_q15()
283 R = __QASX(S, T); in arm_radix4_butterfly_q15()
284 /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ in arm_radix4_butterfly_q15()
285 S = __QSAX(S, T); in arm_radix4_butterfly_q15()
287 /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_q15()
288 R = __QSAX(S, T); in arm_radix4_butterfly_q15()
289 /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ in arm_radix4_butterfly_q15()
290 S = __QASX(S, T); in arm_radix4_butterfly_q15()
298 /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ in arm_radix4_butterfly_q15()
300 /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ in arm_radix4_butterfly_q15()
303 /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ in arm_radix4_butterfly_q15()
305 /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ in arm_radix4_butterfly_q15()
317 /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ in arm_radix4_butterfly_q15()
319 /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ in arm_radix4_butterfly_q15()
322 /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ in arm_radix4_butterfly_q15()
324 /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ in arm_radix4_butterfly_q15()
334 } while (--j); in arm_radix4_butterfly_q15()
353 for (j = 0U; j <= (n2 - 1U); j++) in arm_radix4_butterfly_q15()
373 T = read_q15x2 (pSi0); in arm_radix4_butterfly_q15()
379 R = __QADD16(T, S); in arm_radix4_butterfly_q15()
381 /* S = packed((ya - yc), (xa - xc)) */ in arm_radix4_butterfly_q15()
382 S = __QSUB16(T, S); in arm_radix4_butterfly_q15()
386 T = read_q15x2 (pSi1); in arm_radix4_butterfly_q15()
391 /* T = packed( (yb + yd), (xb + xd)) */ in arm_radix4_butterfly_q15()
392 T = __QADD16(T, U); in arm_radix4_butterfly_q15()
398 out1 = __SHADD16(R, T); in arm_radix4_butterfly_q15()
403 /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */ in arm_radix4_butterfly_q15()
404 R = __SHSUB16(R, T); in arm_radix4_butterfly_q15()
407 /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ in arm_radix4_butterfly_q15()
410 /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_q15()
413 /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_q15()
416 /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ in arm_radix4_butterfly_q15()
422 T = read_q15x2 (pSi1); in arm_radix4_butterfly_q15()
425 /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ in arm_radix4_butterfly_q15()
426 /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_q15()
435 /* T = packed(yb-yd, xb-xd) */ in arm_radix4_butterfly_q15()
436 T = __QSUB16(T, U); in arm_radix4_butterfly_q15()
439 /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_q15()
440 R = __SHASX(S, T); in arm_radix4_butterfly_q15()
442 /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ in arm_radix4_butterfly_q15()
443 S = __SHSAX(S, T); in arm_radix4_butterfly_q15()
450 /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_q15()
451 R = __SHSAX(S, T); in arm_radix4_butterfly_q15()
453 /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ in arm_radix4_butterfly_q15()
454 S = __SHASX(S, T); in arm_radix4_butterfly_q15()
462 /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ in arm_radix4_butterfly_q15()
463 /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ in arm_radix4_butterfly_q15()
477 /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ in arm_radix4_butterfly_q15()
478 /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ in arm_radix4_butterfly_q15()
519 /* T = packed((yb + yd), (xb + xd)) */ in arm_radix4_butterfly_q15()
520 T = __QADD16(xbyb, xdyd); in arm_radix4_butterfly_q15()
523 ptr1 = ptr1 - 8U; in arm_radix4_butterfly_q15()
528 write_q15x2_ia (&ptr1, __SHADD16(R, T)); in arm_radix4_butterfly_q15()
530 /* T = packed((yb + yd), (xb + xd)) */ in arm_radix4_butterfly_q15()
531 T = __QADD16(xbyb, xdyd); in arm_radix4_butterfly_q15()
533 /* xc' = (xa-xb+xc-xd) */ in arm_radix4_butterfly_q15()
534 /* yc' = (ya-yb+yc-yd) */ in arm_radix4_butterfly_q15()
535 write_q15x2_ia (&ptr1, __SHSUB16(R, T)); in arm_radix4_butterfly_q15()
537 /* S = packed((ya - yc), (xa - xc)) */ in arm_radix4_butterfly_q15()
541 /* T = packed( (yb - yd), (xb - xd)) */ in arm_radix4_butterfly_q15()
545 /* xb' = (xa+yb-xc-yd) */ in arm_radix4_butterfly_q15()
546 /* yb' = (ya-xb-yc+xd) */ in arm_radix4_butterfly_q15()
549 /* xd' = (xa-yb-xc+yd) */ in arm_radix4_butterfly_q15()
550 /* yd' = (ya+xb-yc-xd) */ in arm_radix4_butterfly_q15()
553 /* xb' = (xa+yb-xc-yd) */ in arm_radix4_butterfly_q15()
554 /* yb' = (ya-xb-yc+xd) */ in arm_radix4_butterfly_q15()
557 /* xd' = (xa-yb-xc+yd) */ in arm_radix4_butterfly_q15()
558 /* yd' = (ya+xb-yc-xd) */ in arm_radix4_butterfly_q15()
562 } while (--j); in arm_radix4_butterfly_q15()
626 /* S0 = (ya - yc) */ in arm_radix4_butterfly_q15()
627 S0 = __SSAT(T0 - S0, 16); in arm_radix4_butterfly_q15()
628 /* S1 = (xa - xc) */ in arm_radix4_butterfly_q15()
629 S1 = __SSAT(T1 - S1, 16); in arm_radix4_butterfly_q15()
653 /* R0 = (ya + yc) - (yb + yd) */ in arm_radix4_butterfly_q15()
654 /* R1 = (xa + xc) - (xb + xd) */ in arm_radix4_butterfly_q15()
655 R0 = __SSAT(R0 - T0, 16U); in arm_radix4_butterfly_q15()
656 R1 = __SSAT(R1 - T1, 16U); in arm_radix4_butterfly_q15()
662 /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ in arm_radix4_butterfly_q15()
664 /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_q15()
665 out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16U); in arm_radix4_butterfly_q15()
683 /* T0 = yb-yd */ in arm_radix4_butterfly_q15()
684 T0 = __SSAT(T0 - U0, 16); in arm_radix4_butterfly_q15()
685 /* T1 = xb-xd */ in arm_radix4_butterfly_q15()
686 T1 = __SSAT(T1 - U1, 16); in arm_radix4_butterfly_q15()
688 /* R1 = (ya-yc) + (xb- xd), R0 = (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_q15()
689 R0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16); in arm_radix4_butterfly_q15()
692 /* S1 = (ya-yc) - (xb- xd), S0 = (xa-xc) + (yb-yd)) */ in arm_radix4_butterfly_q15()
694 S1 = (q15_t) __SSAT(((q31_t) S1 - T0), 16U); in arm_radix4_butterfly_q15()
700 /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ in arm_radix4_butterfly_q15()
702 /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ in arm_radix4_butterfly_q15()
703 out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16); in arm_radix4_butterfly_q15()
713 /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */ in arm_radix4_butterfly_q15()
715 /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */ in arm_radix4_butterfly_q15()
716 out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16U); in arm_radix4_butterfly_q15()
727 } while (--j); in arm_radix4_butterfly_q15()
746 for (j = 0U; j <= (n2 - 1U); j++) in arm_radix4_butterfly_q15()
781 /* S0 = (ya - yc), S1 =(xa - xc) */ in arm_radix4_butterfly_q15()
782 S0 = __SSAT(T0 - S0, 16); in arm_radix4_butterfly_q15()
783 S1 = __SSAT(T1 - S1, 16); in arm_radix4_butterfly_q15()
809 /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ in arm_radix4_butterfly_q15()
810 R0 = (R0 >> 1U) - (T0 >> 1U); in arm_radix4_butterfly_q15()
811 R1 = (R1 >> 1U) - (T1 >> 1U); in arm_radix4_butterfly_q15()
813 /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ in arm_radix4_butterfly_q15()
816 /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_q15()
817 out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16U); in arm_radix4_butterfly_q15()
825 /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ in arm_radix4_butterfly_q15()
826 /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_q15()
836 /* T0 = yb-yd, T1 = xb-xd */ in arm_radix4_butterfly_q15()
837 T0 = __SSAT(T0 - U0, 16); in arm_radix4_butterfly_q15()
838 T1 = __SSAT(T1 - U1, 16); in arm_radix4_butterfly_q15()
840 /* R0 = (ya-yc) + (xb- xd), R1 = (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_q15()
841 R0 = (S0 >> 1U) - (T1 >> 1U); in arm_radix4_butterfly_q15()
844 /* S0 = (ya-yc) - (xb- xd), S1 = (xa-xc) + (yb-yd)) */ in arm_radix4_butterfly_q15()
846 S1 = (S1 >> 1U) - (T0 >> 1U); in arm_radix4_butterfly_q15()
851 out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16U); in arm_radix4_butterfly_q15()
853 /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ in arm_radix4_butterfly_q15()
854 /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ in arm_radix4_butterfly_q15()
861 out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16U); in arm_radix4_butterfly_q15()
862 /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */ in arm_radix4_butterfly_q15()
863 /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */ in arm_radix4_butterfly_q15()
886 for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1) in arm_radix4_butterfly_q15()
907 /* S0 = (ya - yc), S1 = (xa - xc) */ in arm_radix4_butterfly_q15()
908 S0 = __SSAT(T0 - S0, 16U); in arm_radix4_butterfly_q15()
909 S1 = __SSAT(T1 - S1, 16U); in arm_radix4_butterfly_q15()
929 /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ in arm_radix4_butterfly_q15()
930 R0 = (R0 >> 1U) - (T0 >> 1U); in arm_radix4_butterfly_q15()
931 R1 = (R1 >> 1U) - (T1 >> 1U); in arm_radix4_butterfly_q15()
937 /* xc' = (xa-xb+xc-xd) */ in arm_radix4_butterfly_q15()
938 /* yc' = (ya-yb+yc-yd) */ in arm_radix4_butterfly_q15()
945 /* T0 = (yb - yd), T1 = (xb - xd) */ in arm_radix4_butterfly_q15()
946 T0 = __SSAT(T0 - U0, 16U); in arm_radix4_butterfly_q15()
947 T1 = __SSAT(T1 - U1, 16U); in arm_radix4_butterfly_q15()
950 /* xb' = (xa+yb-xc-yd) */ in arm_radix4_butterfly_q15()
951 /* yb' = (ya-xb-yc+xd) */ in arm_radix4_butterfly_q15()
953 pSrc16[(i2 * 2U) + 1U] = (S1 >> 1U) - (T0 >> 1U); in arm_radix4_butterfly_q15()
956 /* xd' = (xa-yb-xc+yd) */ in arm_radix4_butterfly_q15()
957 /* yd' = (ya+xb-yc-xd) */ in arm_radix4_butterfly_q15()
958 pSrc16[i3 * 2U] = (S0 >> 1U) - (T1 >> 1U); in arm_radix4_butterfly_q15()
977 @param[in,out] pSrc16 points to the in-place buffer of Q15 data type
984 * Radix-4 IFFT algorithm used is :
987 * x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4]
1006 * Twiddle factors for radix-4 IFFT:
1011 * The real and imaginary output values for the radix-4 butterfly are
1014 * xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1)
1015 * yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1)
1016 * xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2)
1017 * yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2)
1018 * xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3)
1019 * yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3)
1032 q31_t R, S, T, U; in arm_radix4_butterfly_inverse_q15() local
1075 T = read_q15x2 (pSi0); in arm_radix4_butterfly_inverse_q15()
1076 T = __SHADD16(T, 0); in arm_radix4_butterfly_inverse_q15()
1077 T = __SHADD16(T, 0); in arm_radix4_butterfly_inverse_q15()
1085 R = __QADD16(T, S); in arm_radix4_butterfly_inverse_q15()
1087 /* S = packed((ya - yc), (xa - xc) ) */ in arm_radix4_butterfly_inverse_q15()
1088 S = __QSUB16(T, S); in arm_radix4_butterfly_inverse_q15()
1092 T = read_q15x2 (pSi1); in arm_radix4_butterfly_inverse_q15()
1093 T = __SHADD16(T, 0); in arm_radix4_butterfly_inverse_q15()
1094 T = __SHADD16(T, 0); in arm_radix4_butterfly_inverse_q15()
1101 /* T = packed((yb + yd), (xb + xd) ) */ in arm_radix4_butterfly_inverse_q15()
1102 T = __QADD16(T, U); in arm_radix4_butterfly_inverse_q15()
1107 write_q15x2_ia (&pSi0, __SHADD16(R, T)); in arm_radix4_butterfly_inverse_q15()
1109 /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */ in arm_radix4_butterfly_inverse_q15()
1110 R = __QSUB16(R, T); in arm_radix4_butterfly_inverse_q15()
1116 /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1118 /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1121 /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1123 /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1128 /* T = packed(yb, xb) */ in arm_radix4_butterfly_inverse_q15()
1129 T = read_q15x2 (pSi1); in arm_radix4_butterfly_inverse_q15()
1130 T = __SHADD16(T, 0); in arm_radix4_butterfly_inverse_q15()
1131 T = __SHADD16(T, 0); in arm_radix4_butterfly_inverse_q15()
1143 /* T = packed(yb-yd, xb-xd) */ in arm_radix4_butterfly_inverse_q15()
1144 T = __QSUB16(T, U); in arm_radix4_butterfly_inverse_q15()
1147 /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_inverse_q15()
1148 R = __QSAX(S, T); in arm_radix4_butterfly_inverse_q15()
1149 /* S = packed((ya-yc) + (xb- xd), (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_inverse_q15()
1150 S = __QASX(S, T); in arm_radix4_butterfly_inverse_q15()
1152 /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_inverse_q15()
1153 R = __QASX(S, T); in arm_radix4_butterfly_inverse_q15()
1154 /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ in arm_radix4_butterfly_inverse_q15()
1155 S = __QSAX(S, T); in arm_radix4_butterfly_inverse_q15()
1163 /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ in arm_radix4_butterfly_inverse_q15()
1165 /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ in arm_radix4_butterfly_inverse_q15()
1168 /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ in arm_radix4_butterfly_inverse_q15()
1170 /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ in arm_radix4_butterfly_inverse_q15()
1182 /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ in arm_radix4_butterfly_inverse_q15()
1184 /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ in arm_radix4_butterfly_inverse_q15()
1187 /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ in arm_radix4_butterfly_inverse_q15()
1189 /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ in arm_radix4_butterfly_inverse_q15()
1199 } while (--j); in arm_radix4_butterfly_inverse_q15()
1218 for (j = 0U; j <= (n2 - 1U); j++) in arm_radix4_butterfly_inverse_q15()
1238 T = read_q15x2 (pSi0); in arm_radix4_butterfly_inverse_q15()
1244 R = __QADD16(T, S); in arm_radix4_butterfly_inverse_q15()
1246 /* S = packed((ya - yc), (xa - xc)) */ in arm_radix4_butterfly_inverse_q15()
1247 S = __QSUB16(T, S); in arm_radix4_butterfly_inverse_q15()
1251 T = read_q15x2 (pSi1); in arm_radix4_butterfly_inverse_q15()
1256 /* T = packed( (yb + yd), (xb + xd)) */ in arm_radix4_butterfly_inverse_q15()
1257 T = __QADD16(T, U); in arm_radix4_butterfly_inverse_q15()
1263 out1 = __SHADD16(R, T); in arm_radix4_butterfly_inverse_q15()
1268 /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */ in arm_radix4_butterfly_inverse_q15()
1269 R = __SHSUB16(R, T); in arm_radix4_butterfly_inverse_q15()
1272 /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ in arm_radix4_butterfly_inverse_q15()
1275 /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1278 /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1281 /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ in arm_radix4_butterfly_inverse_q15()
1287 T = read_q15x2 (pSi1); in arm_radix4_butterfly_inverse_q15()
1290 /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1291 /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1300 /* T = packed(yb-yd, xb-xd) */ in arm_radix4_butterfly_inverse_q15()
1301 T = __QSUB16(T, U); in arm_radix4_butterfly_inverse_q15()
1304 /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_inverse_q15()
1305 R = __SHSAX(S, T); in arm_radix4_butterfly_inverse_q15()
1307 /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ in arm_radix4_butterfly_inverse_q15()
1308 S = __SHASX(S, T); in arm_radix4_butterfly_inverse_q15()
1314 /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ in arm_radix4_butterfly_inverse_q15()
1315 R = __SHASX(S, T); in arm_radix4_butterfly_inverse_q15()
1317 /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ in arm_radix4_butterfly_inverse_q15()
1318 S = __SHSAX(S, T); in arm_radix4_butterfly_inverse_q15()
1325 /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ in arm_radix4_butterfly_inverse_q15()
1326 /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ in arm_radix4_butterfly_inverse_q15()
1340 /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ in arm_radix4_butterfly_inverse_q15()
1341 /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ in arm_radix4_butterfly_inverse_q15()
1381 /* T = packed((yb + yd), (xb + xd)) */ in arm_radix4_butterfly_inverse_q15()
1382 T = __QADD16(xbyb, xdyd); in arm_radix4_butterfly_inverse_q15()
1385 ptr1 = ptr1 - 8U; in arm_radix4_butterfly_inverse_q15()
1390 write_q15x2_ia (&ptr1, __SHADD16(R, T)); in arm_radix4_butterfly_inverse_q15()
1392 /* T = packed((yb + yd), (xb + xd)) */ in arm_radix4_butterfly_inverse_q15()
1393 T = __QADD16(xbyb, xdyd); in arm_radix4_butterfly_inverse_q15()
1395 /* xc' = (xa-xb+xc-xd) */ in arm_radix4_butterfly_inverse_q15()
1396 /* yc' = (ya-yb+yc-yd) */ in arm_radix4_butterfly_inverse_q15()
1397 write_q15x2_ia (&ptr1, __SHSUB16(R, T)); in arm_radix4_butterfly_inverse_q15()
1399 /* S = packed((ya - yc), (xa - xc)) */ in arm_radix4_butterfly_inverse_q15()
1403 /* T = packed( (yb - yd), (xb - xd)) */ in arm_radix4_butterfly_inverse_q15()
1407 /* xb' = (xa+yb-xc-yd) */ in arm_radix4_butterfly_inverse_q15()
1408 /* yb' = (ya-xb-yc+xd) */ in arm_radix4_butterfly_inverse_q15()
1411 /* xd' = (xa-yb-xc+yd) */ in arm_radix4_butterfly_inverse_q15()
1412 /* yd' = (ya+xb-yc-xd) */ in arm_radix4_butterfly_inverse_q15()
1415 /* xb' = (xa+yb-xc-yd) */ in arm_radix4_butterfly_inverse_q15()
1416 /* yb' = (ya-xb-yc+xd) */ in arm_radix4_butterfly_inverse_q15()
1419 /* xd' = (xa-yb-xc+yd) */ in arm_radix4_butterfly_inverse_q15()
1420 /* yd' = (ya+xb-yc-xd) */ in arm_radix4_butterfly_inverse_q15()
1424 } while (--j); in arm_radix4_butterfly_inverse_q15()
1485 /* S0 = (ya - yc), S1 = (xa - xc) */ in arm_radix4_butterfly_inverse_q15()
1486 S0 = __SSAT(T0 - S0, 16U); in arm_radix4_butterfly_inverse_q15()
1487 S1 = __SSAT(T1 - S1, 16U); in arm_radix4_butterfly_inverse_q15()
1509 /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc)- (xb + xd) */ in arm_radix4_butterfly_inverse_q15()
1510 R0 = __SSAT(R0 - T0, 16U); in arm_radix4_butterfly_inverse_q15()
1511 R1 = __SSAT(R1 - T1, 16U); in arm_radix4_butterfly_inverse_q15()
1515 /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1516 out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16U); in arm_radix4_butterfly_inverse_q15()
1517 /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1537 /* T0 = yb-yd, T1 = xb-xd) */ in arm_radix4_butterfly_inverse_q15()
1538 T0 = __SSAT(T0 - U0, 16U); in arm_radix4_butterfly_inverse_q15()
1539 T1 = __SSAT(T1 - U1, 16U); in arm_radix4_butterfly_inverse_q15()
1540 /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */ in arm_radix4_butterfly_inverse_q15()
1542 R1 = (q15_t) __SSAT((q31_t) (S1 - T0), 16); in arm_radix4_butterfly_inverse_q15()
1543 /* S = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */ in arm_radix4_butterfly_inverse_q15()
1544 S0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16); in arm_radix4_butterfly_inverse_q15()
1551 /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ in arm_radix4_butterfly_inverse_q15()
1552 out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16U); in arm_radix4_butterfly_inverse_q15()
1553 /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ in arm_radix4_butterfly_inverse_q15()
1563 /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */ in arm_radix4_butterfly_inverse_q15()
1564 out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16U); in arm_radix4_butterfly_inverse_q15()
1565 /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */ in arm_radix4_butterfly_inverse_q15()
1577 } while (--j); in arm_radix4_butterfly_inverse_q15()
1597 for (j = 0U; j <= (n2 - 1U); j++) in arm_radix4_butterfly_inverse_q15()
1632 /* S0 = (ya - yc), S1 = (xa - xc) */ in arm_radix4_butterfly_inverse_q15()
1633 S0 = __SSAT(T0 - S0, 16U); in arm_radix4_butterfly_inverse_q15()
1634 S1 = __SSAT(T1 - S1, 16U); in arm_radix4_butterfly_inverse_q15()
1655 /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ in arm_radix4_butterfly_inverse_q15()
1656 R0 = (R0 >> 1U) - (T0 >> 1U); in arm_radix4_butterfly_inverse_q15()
1657 R1 = (R1 >> 1U) - (T1 >> 1U); in arm_radix4_butterfly_inverse_q15()
1659 /* (ya-yb+yc-yd)* (si2) - (xa-xb+xc-xd)* co2 */ in arm_radix4_butterfly_inverse_q15()
1660 out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16); in arm_radix4_butterfly_inverse_q15()
1661 /* (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1670 /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1671 /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ in arm_radix4_butterfly_inverse_q15()
1680 /* T0 = yb-yd, T1 = xb-xd) */ in arm_radix4_butterfly_inverse_q15()
1681 T0 = __SSAT(T0 - U0, 16U); in arm_radix4_butterfly_inverse_q15()
1682 T1 = __SSAT(T1 - U1, 16U); in arm_radix4_butterfly_inverse_q15()
1684 /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */ in arm_radix4_butterfly_inverse_q15()
1686 R1 = (S1 >> 1U) - (T0 >> 1U); in arm_radix4_butterfly_inverse_q15()
1688 /* S1 = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */ in arm_radix4_butterfly_inverse_q15()
1689 S0 = (S0 >> 1U) - (T1 >> 1U); in arm_radix4_butterfly_inverse_q15()
1693 out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16U); in arm_radix4_butterfly_inverse_q15()
1695 /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ in arm_radix4_butterfly_inverse_q15()
1696 /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ in arm_radix4_butterfly_inverse_q15()
1701 out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16U); in arm_radix4_butterfly_inverse_q15()
1704 /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */ in arm_radix4_butterfly_inverse_q15()
1705 /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */ in arm_radix4_butterfly_inverse_q15()
1731 for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1) in arm_radix4_butterfly_inverse_q15()
1750 /* S0 = (ya - yc), S1 = (xa - xc) */ in arm_radix4_butterfly_inverse_q15()
1751 S0 = __SSAT(T0 - S0, 16U); in arm_radix4_butterfly_inverse_q15()
1752 S1 = __SSAT(T1 - S1, 16U); in arm_radix4_butterfly_inverse_q15()
1772 /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ in arm_radix4_butterfly_inverse_q15()
1773 R0 = (R0 >> 1U) - (T0 >> 1U); in arm_radix4_butterfly_inverse_q15()
1774 R1 = (R1 >> 1U) - (T1 >> 1U); in arm_radix4_butterfly_inverse_q15()
1781 /* xc' = (xa-xb+xc-xd) */ in arm_radix4_butterfly_inverse_q15()
1782 /* yc' = (ya-yb+yc-yd) */ in arm_radix4_butterfly_inverse_q15()
1789 /* T0 = (yb - yd), T1 = (xb - xd) */ in arm_radix4_butterfly_inverse_q15()
1790 T0 = __SSAT(T0 - U0, 16U); in arm_radix4_butterfly_inverse_q15()
1791 T1 = __SSAT(T1 - U1, 16U); in arm_radix4_butterfly_inverse_q15()
1794 /* xb' = (xa-yb-xc+yd) */ in arm_radix4_butterfly_inverse_q15()
1795 /* yb' = (ya+xb-yc-xd) */ in arm_radix4_butterfly_inverse_q15()
1796 pSrc16[i2 * 2U] = (S0 >> 1U) - (T1 >> 1U); in arm_radix4_butterfly_inverse_q15()
1801 /* xd' = (xa+yb-xc-yd) */ in arm_radix4_butterfly_inverse_q15()
1802 /* yd' = (ya-xb-yc+xd) */ in arm_radix4_butterfly_inverse_q15()
1804 pSrc16[(i3 * 2U) + 1U] = (S1 >> 1U) - (T0 >> 1U); in arm_radix4_butterfly_inverse_q15()