Home | History | Annotate | Download | only in aecm

Lines Matching refs:fft

37 static void WindowAndFFTNeon(WebRtc_Word16* fft,
52 // fft[j] = (WebRtc_Word16)WEBRTC_SPL_MUL_16_16_RSFT((time_signal[i]
61 __asm__("vst2.16 {d20, d21}, [%0, :128]" : : "r"(&fft[j]) : "q10");
63 // fft[PART_LEN2 + j] = (WebRtc_Word16)WEBRTC_SPL_MUL_16_16_RSFT(
73 __asm__("vst2.16 {d20, d21}, [%0, :128]" : : "r"(&fft[PART_LEN2 + j]) : "q10");
76 WebRtcSpl_ComplexBitReverse(fft, PART_LEN_SHIFT);
77 WebRtcSpl_ComplexFFT(fft, PART_LEN_SHIFT, 1);
81 __asm__("vld2.16 {d20, d21, d22, d23}, [%0, :256]" : : "r"(&fft[j]) : "q10", "q11");
90 WebRtc_Word16* fft,
99 // We overwrite two more elements in fft[], but it's ok.
104 __asm__("vst2.16 {d22, d23}, [%0, :128]" : : "r"(&fft[j]): "q11");
107 __asm__("vst2.16 {d20, d21}, [%0]" : : "r"(&fft[PART_LEN4 - j - 6]): "q10");
110 fft[PART_LEN2] = efw[PART_LEN].real;
111 fft[PART_LEN2 + 1] = -efw[PART_LEN].imag;
113 // Inverse FFT, result should be scaled with outCFFT.
114 WebRtcSpl_ComplexBitReverse(fft, PART_LEN_SHIFT);
115 outCFFT = WebRtcSpl_ComplexIFFT(fft, PART_LEN_SHIFT, 1);
119 __asm__("vld2.16 {d20, d21, d22, d23}, [%0, :256]" : : "r"(&fft[j]) : "q10", "q11");
120 __asm__("vst1.16 {d20, d21}, [%0, :128]" : : "r"(&fft[i]): "q10");
132 // fft[i] = (WebRtc_Word16)WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(
133 // fft[i], WebRtcAecm_kSqrtHanning[i], 14);
134 __asm__("vld1.16 %P0, [%1, :64]" : "=w"(tmp16x4_0) : "r"(&fft[i]));
139 // tmp32no1 = WEBRTC_SPL_SHIFT_W32((WebRtc_Word32)fft[i],
143 // fft[i] = (WebRtc_Word16)WEBRTC_SPL_SAT(WEBRTC_SPL_WORD16_MAX,
145 // output[i] = fft[i];
150 __asm__("vst1.16 %P0, [%1, :64]" : : "w"(tmp16x4_0), "r"(&fft[i]));
154 // fft[PART_LEN + i], WebRtcAecm_kSqrtHanning[PART_LEN - i], 14);
155 __asm__("vld1.16 %P0, [%1, :64]" : "=w"(tmp16x4_0) : "r"(&fft[PART_LEN + i]));