1da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com/* 2da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 3da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com * 4da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com * Use of this source code is governed by a BSD-style license 5da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com * that can be found in the LICENSE file in the root of the source 6da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com * tree. An additional intellectual property rights grant can be found 7da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com * in the file PATENTS. All contributing project authors may 8da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com * be found in the AUTHORS file in the root of the source tree. 9da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com * 10da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com */ 11da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com#include "dl/api/omxtypes.h" 12da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com#include <stdbool.h> 13da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 14da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Fwd_Radix4_fs( 15da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 16da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 17da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n); 18da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 19da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Inv_Radix4_fs( 20da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 21da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 22da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n); 23da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 24da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Fwd_Radix4_fs_sse( 25da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 26da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 27da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n); 28da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 29da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Inv_Radix4_fs_sse( 30da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 31da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 32da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n); 33da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 34da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Fwd_Radix4_ms( 35da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 36da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 37da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *twiddle, 38da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n, 39da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_size, 40da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_num); 41da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 42da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Inv_Radix4_ms( 43da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 44da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 45da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *twiddle, 46da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n, 47da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_size, 48da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_num); 49da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 50da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Fwd_Radix4_ms_sse( 51da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 52da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 53da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *twiddle, 54da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n, 55da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_size, 56da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_num); 57da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 58da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Inv_Radix4_ms_sse( 59da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 60da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 61da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *twiddle, 62da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n, 63da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_size, 64da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_num); 65da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 66da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Fwd_Radix4_ls( 67da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 68da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 69da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *twiddle, 70da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n); 71da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 72da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Inv_Radix4_ls( 73da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 74da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 75da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *twiddle, 76da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n); 77da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 78da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Fwd_Radix4_ls_sse( 79da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 80da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 81da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *twiddle, 82da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n); 83da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 84da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comextern void x86SP_FFT_CToC_FC32_Inv_Radix4_ls_sse( 85da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *in, 86da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out, 87da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *twiddle, 88da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n); 89da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 9056df947c78b5c65a7d3bc558287602c83ccc793artoy@google.comextern void x86SP_FFT_CToC_FC32_Fwd_Radix2_ls( 9156df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com const OMX_F32 *in, 9256df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com OMX_F32 *out, 9356df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com const OMX_F32 *twiddle, 9456df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com OMX_INT n); 9556df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com 9656df947c78b5c65a7d3bc558287602c83ccc793artoy@google.comextern void x86SP_FFT_CToC_FC32_Inv_Radix2_ls( 9756df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com const OMX_F32 *in, 9856df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com OMX_F32 *out, 9956df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com const OMX_F32 *twiddle, 10056df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com OMX_INT n); 10156df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com 10256df947c78b5c65a7d3bc558287602c83ccc793artoy@google.comextern void x86SP_FFT_CToC_FC32_Fwd_Radix2_ls_sse( 10356df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com const OMX_F32 *in, 10456df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com OMX_F32 *out, 10556df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com const OMX_F32 *twiddle, 10656df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com OMX_INT n); 10756df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com 10856df947c78b5c65a7d3bc558287602c83ccc793artoy@google.comextern void x86SP_FFT_CToC_FC32_Inv_Radix2_ls_sse( 10956df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com const OMX_F32 *in, 11056df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com OMX_F32 *out, 11156df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com const OMX_F32 *twiddle, 11256df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com OMX_INT n); 11356df947c78b5c65a7d3bc558287602c83ccc793artoy@google.com 114da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comOMX_F32* x86SP_F32_radix4_kernel_OutOfPlace( 115da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *src, 116da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *buf1, 117da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *buf2, 118da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *twiddle, 119da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n, 120da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com bool forward_fft) { 121da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_size; 122da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_num; 123da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n_by_4 = n >> 2; 124da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *in = buf1; 125da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *out = buf2; 126da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 127da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com if (forward_fft) 128da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Fwd_Radix4_fs(src, in, n); 129da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com else 130da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Inv_Radix4_fs(src, in, n); 131da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 132da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com for (sub_size = 4, sub_num = n_by_4; 133da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com sub_size < n_by_4; 134da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com sub_size = sub_size << 2, sub_num = sub_num >> 2) { 135da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 136da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com if (forward_fft) { 137da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Fwd_Radix4_ms(in, out, twiddle, 138da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com n, sub_size, sub_num); 139da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com } else { 140da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Inv_Radix4_ms(in, out, twiddle, 141da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com n, sub_size, sub_num); 142da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com } 143da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 144da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *temp = out; 145da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com out = in; 146da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com in = temp; 147da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com } 148da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 149da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com if (forward_fft) { 150da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com if (sub_num == 2) 151da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Fwd_Radix2_ls(in, out, twiddle, n); 152da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com else 153da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Fwd_Radix4_ls(in, out, twiddle, n); 154da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com } else { 155da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com if (sub_num == 2) 156da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Inv_Radix2_ls(in, out, twiddle, n); 157da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com else 158da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Inv_Radix4_ls(in, out, twiddle, n); 159da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com } 160da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 161da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com return out; 162da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com} 163da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 164da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.comOMX_F32* x86SP_F32_radix4_kernel_OutOfPlace_sse( 165da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *src, 166da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *buf1, 167da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *buf2, 168da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com const OMX_F32 *twiddle, 169da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n, 170da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com // true for forward, false for inverse. 171da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com bool forward_fft) { 172da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT sub_size, sub_num; 173da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_INT n_by_4 = n >> 2; 174da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *in, *out; 175da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com in = buf1; 176da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com out = buf2; 177da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 178da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com if (forward_fft) 179da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Fwd_Radix4_fs_sse(src, in, n); 180da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com else 181da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Inv_Radix4_fs_sse(src, in, n); 182da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 183da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com for (sub_size = 4, sub_num = n_by_4; 184da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com sub_size < n_by_4; 185da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com sub_size = sub_size << 2, sub_num = sub_num >> 2) { 186da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 187da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com if (forward_fft) { 188da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Fwd_Radix4_ms_sse(in, out, twiddle, 189da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com n, sub_size, sub_num); 190da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com } else { 191da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Inv_Radix4_ms_sse(in, out, twiddle, 192da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com n, sub_size, sub_num); 193da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com } 194da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 195da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com OMX_F32 *temp = out; 196da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com out = in; 197da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com in = temp; 198da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com } 199da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 200da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com // If n is not power of 4, sub_num == 2. 201da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com if (forward_fft) { 202da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com if (sub_num == 2) 203da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Fwd_Radix2_ls_sse(in, out, twiddle, n); 204da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com else 205da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Fwd_Radix4_ls_sse(in, out, twiddle, n); 206da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com } else { 207da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com if (sub_num == 2) 208da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Inv_Radix2_ls_sse(in, out, twiddle, n); 209da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com else 210da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com x86SP_FFT_CToC_FC32_Inv_Radix4_ls_sse(in, out, twiddle, n); 211da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com } 212da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com 213da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com return out; 214da04d4f8ef493ab7bf1fbdaffe206899f03681c2rtoy@google.com} 215