| Index: third_party/openmax_dl/dl/sp/src/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S
 | 
| diff --git a/third_party/openmax_dl/dl/sp/src/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S b/third_party/openmax_dl/dl/sp/src/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..3bc5f02a74335d92d2d14f29d0f45569ee273fd7
 | 
| --- /dev/null
 | 
| +++ b/third_party/openmax_dl/dl/sp/src/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S
 | 
| @@ -0,0 +1,163 @@
 | 
| +@//
 | 
| +@//  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
 | 
| +@//
 | 
| +@//  Use of this source code is governed by a BSD-style license
 | 
| +@//  that can be found in the LICENSE file in the root of the source
 | 
| +@//  tree. An additional intellectual property rights grant can be found
 | 
| +@//  in the file PATENTS.  All contributing project authors may
 | 
| +@//  be found in the AUTHORS file in the root of the source tree.
 | 
| +@//
 | 
| +@//  This file was originally licensed as follows. It has been
 | 
| +@//  relicensed with permission from the copyright holders.
 | 
| +
 | 
| +@//
 | 
| +@// 
 | 
| +@// File Name:  armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.s
 | 
| +@// OpenMAX DL: v1.0.2
 | 
| +@// Last Modified Revision:   5995
 | 
| +@// Last Modified Date:       Fri, 08 Jun 2007
 | 
| +@// 
 | 
| +@// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
 | 
| +@// 
 | 
| +@// 
 | 
| +@//
 | 
| +@// Description:
 | 
| +@// Compute the first stage of a Radix 2 DIT in-order out-of-place FFT 
 | 
| +@// stage for a N point complex signal.
 | 
| +@// 
 | 
| +
 | 
| +        
 | 
| +@// Include standard headers
 | 
| +
 | 
| +#include "dl/api/armCOMM_s.h"
 | 
| +#include "dl/api/omxtypes_s.h"
 | 
| +        
 | 
| +        
 | 
| +@// Import symbols required from other files
 | 
| +@// (For example tables)
 | 
| +    
 | 
| +        
 | 
| +        
 | 
| +        
 | 
| +@// Set debugging level        
 | 
| +@//DEBUG_ON    SETL {TRUE}
 | 
| +
 | 
| +
 | 
| +
 | 
| +@// Guarding implementation by the processor name
 | 
| +    
 | 
| +    
 | 
| +            
 | 
| +@// Guarding implementation by the processor name
 | 
| +    
 | 
| +    
 | 
| +@//Input Registers
 | 
| +
 | 
| +#define pSrc		r0
 | 
| +#define pDst		r2
 | 
| +#define pTwiddle	r1
 | 
| +#define pPingPongBuf	r5
 | 
| +#define subFFTNum	r6
 | 
| +#define subFFTSize	r7
 | 
| +
 | 
| +
 | 
| +@//Output Registers
 | 
| +
 | 
| +
 | 
| +@//Local Scratch Registers
 | 
| +
 | 
| +#define pointStep	r3
 | 
| +#define outPointStep	r3
 | 
| +#define grpSize		r4
 | 
| +#define setCount	r4
 | 
| +#define step		r8
 | 
| +#define dstStep		r8
 | 
| +
 | 
| +@// Neon Registers
 | 
| +
 | 
| +#define dX0	D0.S32
 | 
| +#define dX1	D1.S32
 | 
| +#define dY0	D2.S32
 | 
| +#define dY1	D3.S32
 | 
| +
 | 
| +
 | 
| +        .MACRO FFTSTAGE scaled, inverse, name
 | 
| +        
 | 
| +        @// Define stack arguments
 | 
| +        
 | 
| +        
 | 
| +        @// update subFFTSize and subFFTNum into RN6 and RN7 for the next stage
 | 
| +        
 | 
| +        
 | 
| +        MOV        subFFTSize,#2
 | 
| +        LSR        grpSize,subFFTNum,#1  
 | 
| +        MOV        subFFTNum,grpSize 
 | 
| +        
 | 
| +        
 | 
| +        @// pT0+1 increments pT0 by 8 bytes
 | 
| +        @// pT0+pointStep = increment of 8*pointStep bytes = 4*grpSize bytes
 | 
| +        @// Note: outPointStep = pointStep for firststage
 | 
| +        @// Note: setCount = grpSize/2 (reuse the updated grpSize for setCount)
 | 
| +        
 | 
| +        MOV        pointStep,grpSize,LSL #3
 | 
| +        RSB        step,pointStep,#8 
 | 
| +        
 | 
| +        
 | 
| +        @// Loop on the sets for grp zero
 | 
| +
 | 
| +grpZeroSetLoop\name :	
 | 
| +        
 | 
| +        VLD1    dX0,[pSrc],pointStep
 | 
| +        VLD1    dX1,[pSrc],step                   @// step = -pointStep + 8
 | 
| +        SUBS    setCount,setCount,#1              @// decrement the loop counter
 | 
| +        
 | 
| +        .ifeqs "\scaled", "TRUE"
 | 
| +        
 | 
| +            VHADD    dY0,dX0,dX1
 | 
| +            VHSUB    dY1,dX0,dX1
 | 
| +        
 | 
| +        .ELSE
 | 
| +        
 | 
| +            VADD    dY0,dX0,dX1
 | 
| +            VSUB    dY1,dX0,dX1
 | 
| +        
 | 
| +         
 | 
| +        .ENDIF
 | 
| +        
 | 
| +        VST1    dY0,[pDst],outPointStep
 | 
| +        VST1    dY1,[pDst],dstStep                  @// dstStep =  step = -pointStep + 8
 | 
| +               
 | 
| +        BGT     grpZeroSetLoop\name
 | 
| +        
 | 
| +        
 | 
| +        @// reset pSrc to pDst for the next stage
 | 
| +        SUB     pSrc,pDst,pointStep                     @// pDst -= 2*grpSize 
 | 
| +        MOV     pDst,pPingPongBuf
 | 
| +                
 | 
| +        .endm
 | 
| +        
 | 
| +        
 | 
| +                
 | 
| +        M_START armSP_FFTFwd_CToC_SC32_Radix2_fs_OutOfPlace_unsafe,r4
 | 
| +        FFTSTAGE "FALSE","FALSE",fwd
 | 
| +        M_END
 | 
| +
 | 
| +        
 | 
| +        
 | 
| +        M_START armSP_FFTInv_CToC_SC32_Radix2_fs_OutOfPlace_unsafe,r4
 | 
| +        FFTSTAGE "FALSE","TRUE",inv
 | 
| +        M_END
 | 
| + 
 | 
| +        
 | 
| +        
 | 
| +        M_START armSP_FFTFwd_CToC_SC32_Sfs_Radix2_fs_OutOfPlace_unsafe,r4
 | 
| +        FFTSTAGE "TRUE","FALSE",fwdsfs
 | 
| +        M_END
 | 
| +
 | 
| +        
 | 
| +        
 | 
| +        M_START armSP_FFTInv_CToC_SC32_Sfs_Radix2_fs_OutOfPlace_unsafe,r4
 | 
| +        FFTSTAGE "TRUE","TRUE",invsfs
 | 
| +        M_END
 | 
| +
 | 
| +	.end
 | 
| 
 |