summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/vDSP.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/vDSP.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'common/quicktime_win32/vDSP.h')
-rw-r--r--common/quicktime_win32/vDSP.h3177
1 files changed, 3177 insertions, 0 deletions
diff --git a/common/quicktime_win32/vDSP.h b/common/quicktime_win32/vDSP.h
new file mode 100644
index 0000000..1aef66e
--- /dev/null
+++ b/common/quicktime_win32/vDSP.h
@@ -0,0 +1,3177 @@
+/*
+ File: vDSP.h
+
+ Contains: AltiVec DSP Interfaces
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 2000-2001 by Apple Computer, Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+
+*/
+#ifndef __VDSP__
+#define __VDSP__
+
+#ifndef __CONDITIONALMACROS__
+#include <ConditionalMacros.h>
+#endif
+
+#ifndef __MACTYPES__
+#include <MacTypes.h>
+#endif
+
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if PRAGMA_IMPORT
+#pragma import on
+#endif
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack(2)
+#endif
+
+struct DSPComplex {
+ float real;
+ float imag;
+};
+typedef struct DSPComplex DSPComplex;
+struct DSPSplitComplex {
+ float * realp;
+ float * imagp;
+};
+typedef struct DSPSplitComplex DSPSplitComplex;
+struct DSPDoubleComplex {
+ double real;
+ double imag;
+};
+typedef struct DSPDoubleComplex DSPDoubleComplex;
+struct DSPDoubleSplitComplex {
+ double * realp;
+ double * imagp;
+};
+typedef struct DSPDoubleSplitComplex DSPDoubleSplitComplex;
+typedef struct OpaqueFFTSetup* FFTSetup;
+typedef struct OpaqueFFTSetupD* FFTSetupD;
+typedef SInt32 FFTDirection;
+enum {
+ kFFTDirection_Forward = 1,
+ kFFTDirection_Inverse = -1
+};
+
+typedef SInt32 FFTRadix;
+enum {
+ kFFTRadix2 = 0,
+ kFFTRadix3 = 1,
+ kFFTRadix5 = 2
+};
+
+/*
+-------------------------------------------------------------------------------
+ The criteria to invoke the PowerPC vector implementation is subject to
+ change and become less restrictive in the future.
+-------------------------------------------------------------------------------
+*/
+
+/*
+-------------------------------------------------------------------------------
+ Functions create_fftsetup and destroy_fftsetup.
+ create_fftsetupD and destroy_fftsetupD.
+
+ create_fftsetup will allocate memory and setup a weight array used by
+ the FFT. The call destroy_fftsetup will free the array.
+-------------------------------------------------------------------------------
+*/
+/*
+ * create_fftsetup()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( FFTSetup )
+create_fftsetup(
+ UInt32 log2n,
+ FFTRadix radix);
+
+
+/*
+ * destroy_fftsetup()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+destroy_fftsetup(FFTSetup setup);
+
+
+/*
+ * create_fftsetupD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( FFTSetupD )
+create_fftsetupD(
+ UInt32 log2n,
+ FFTRadix radix);
+
+
+/*
+ * destroy_fftsetupD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+destroy_fftsetupD(FFTSetupD setup);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Functions ctoz and ztoc.
+ ctozD and ztocD.
+
+ ctoz converts a complex array to a complex-split array
+ ztoc converts a complex-split array to a complex array
+
+ Criteria to invoke PowerPC vector code:
+ 1. size > 3
+ 2. strideC = 2
+ 3. strideZ = 1
+ 4. C is 16-byte aligned and Z.realp and Z.imagp are 16-byte aligned.
+-------------------------------------------------------------------------------
+*/
+/*
+ * ctoz()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+ctoz(
+ const DSPComplex C[],
+ SInt32 strideC,
+ DSPSplitComplex * Z,
+ SInt32 strideZ,
+ UInt32 size);
+
+
+/*
+ * ztoc()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+ztoc(
+ const DSPSplitComplex * Z,
+ SInt32 strideZ,
+ DSPComplex C[],
+ SInt32 strideC,
+ UInt32 size);
+
+
+/*
+ * ctozD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+ctozD(
+ const DSPDoubleComplex C[],
+ SInt32 strideC,
+ DSPDoubleSplitComplex * Z,
+ SInt32 strideZ,
+ UInt32 size);
+
+
+/*
+ * ztocD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+ztocD(
+ const DSPDoubleSplitComplex * Z,
+ SInt32 strideZ,
+ DSPDoubleComplex C[],
+ SInt32 strideC,
+ UInt32 size);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Functions fft_zip and fft_zipt
+ fft_zipD and fft_ziptD
+
+ In-place Split Complex Fourier Transform with or without temporary memory.
+
+ Criteria to invoke PowerPC vector code:
+
+ 1. ioData.realp and ioData.imagp must be 16-byte aligned.
+ 2. stride = 1
+ 3. 2 <= log2n <= 20
+ 4. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. The size of temporary memory for each part
+ is the lower value of 4*n and 16k. Direction can be either
+ kFFTDirection_Forward or kFFTDirection_Inverse.
+-------------------------------------------------------------------------------
+*/
+/*
+ * fft_zip()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft_zip(
+ FFTSetup setup,
+ DSPSplitComplex * ioData,
+ SInt32 stride,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+/*
+ * fft_zipt()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft_zipt(
+ FFTSetup setup,
+ DSPSplitComplex * ioData,
+ SInt32 stride,
+ DSPSplitComplex * bufferTemp,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+/*
+ * fft_zipD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft_zipD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * ioData,
+ SInt32 stride,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+/*
+ * fft_ziptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft_ziptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * ioData,
+ SInt32 stride,
+ DSPDoubleSplitComplex * bufferTemp,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Functions fft_zop and fft_zopt
+ fft_zopD and fft_zoptD
+
+ Out-of-place Split Complex Fourier Transform with or without temporary
+ memory
+
+ Criteria to invoke PowerPC vector code:
+
+ 1. signal.realp and signal.imagp must be 16-byte aligned.
+ 2. signalStride = 1
+ 3. result.realp and result.imagp must be 16-byte aligned.
+ 4. strideResult = 1
+ 5. 2 <= log2n <= 20
+ 6. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. The size of temporary memory for each part
+ is the lower value of 4*n and 16k. Direction can be either
+ kFFTDirection_Forward or kFFTDirection_Inverse.
+-------------------------------------------------------------------------------
+*/
+/*
+ * fft_zop()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft_zop(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+/*
+ * fft_zopt()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft_zopt(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ DSPSplitComplex * bufferTemp,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+/*
+ * fft_zopD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft_zopD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+/*
+ * fft_zoptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft_zoptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ DSPDoubleSplitComplex * bufferTemp,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Functions fft_zrip and fft_zript
+ fft_zripD and fft_zriptD
+
+ In-Place Real Fourier Transform with or without temporary memory,
+ split Complex Format
+
+ Criteria to invoke PowerPC vector code:
+ 1. ioData.realp and ioData.imagp must be 16-byte aligned.
+ 2. stride = 1
+ 3. 3 <= log2n <= 13
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. The size of temporary memory for each part
+ is the lower value of 4*n and 16k. Direction can be either
+ kFFTDirection_Forward or kFFTDirection_Inverse.
+-------------------------------------------------------------------------------
+*/
+/*
+ * fft_zrip()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft_zrip(
+ FFTSetup setup,
+ DSPSplitComplex * ioData,
+ SInt32 stride,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+/*
+ * fft_zript()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft_zript(
+ FFTSetup setup,
+ DSPSplitComplex * ioData,
+ SInt32 stride,
+ DSPSplitComplex * bufferTemp,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+/*
+ * fft_zripD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft_zripD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * ioData,
+ SInt32 stride,
+ UInt32 log2n,
+ FFTDirection flag);
+
+
+/*
+ * fft_zriptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft_zriptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * ioData,
+ SInt32 stride,
+ DSPDoubleSplitComplex * bufferTemp,
+ UInt32 log2n,
+ SInt32 flag);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Functions fft_zrop and fft_zropt
+ fft_zropD and fft_zroptD
+
+ Out-of-Place Real Fourier Transform with or without temporary memory,
+ split Complex Format
+
+ Criteria to invoke PowerPC vector code:
+ 1. signal.realp and signal.imagp must be 16-byte aligned.
+ 2. signalStride = 1
+ 3. result.realp and result.imagp must be be 16-byte aligned.
+ 4. strideResult = 1
+ 5. 3 <= log2n <= 13
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. The size of temporary memory for each part
+ is the lower value of 4*n and 16k. Direction can be either
+ kFFTDirection_Forward or kFFTDirection_Inverse.
+-------------------------------------------------------------------------------
+*/
+/*
+ * fft_zrop()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft_zrop(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+/*
+ * fft_zropt()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft_zropt(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ DSPSplitComplex * bufferTemp,
+ UInt32 log2n,
+ FFTDirection direction);
+
+
+/*
+ * fft_zropD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft_zropD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 log2n,
+ SInt32 flag);
+
+
+/*
+ * fft_zroptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft_zroptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ DSPDoubleSplitComplex * bufferTemp,
+ UInt32 log2n,
+ SInt32 flag);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Functions fft2d_zip and fft2d_zipt
+ fft2d_zipD and fft2d_ziptD
+
+ In-place two dimensional Split Complex Fourier Transform with or without
+ temporary memory
+
+ Criteria to invoke PowerPC vector code:
+ 1. ioData.realp and ioData.imagp must be 16-byte aligned.
+ 2. strideInRow = 1;
+ 3. strideInCol must be a multiple of 4
+ 4. 2 <= log2nInRow <= 12
+ 5. 2 <= log2nInCol <= 12
+ 6. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. The size of temporary memory for each part
+ is the lower value of 4*n and 16k. ( log2n = log2nInRow + log2nInCol )
+ Direction can be either kFFTDirection_Forward or kFFTDirection_Inverse.
+-------------------------------------------------------------------------------
+*/
+/*
+ * fft2d_zip()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft2d_zip(
+ FFTSetup setup,
+ DSPSplitComplex * ioData,
+ SInt32 strideInRow,
+ SInt32 strideInCol,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ FFTDirection direction);
+
+
+/*
+ * fft2d_zipt()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft2d_zipt(
+ FFTSetup setup,
+ DSPSplitComplex * ioData,
+ SInt32 strideInRow,
+ SInt32 strideInCol,
+ DSPSplitComplex * bufferTemp,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ FFTDirection direction);
+
+
+/*
+ * fft2d_zipD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft2d_zipD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * ioData,
+ SInt32 strideInRow,
+ SInt32 strideInCol,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ FFTDirection direction);
+
+
+/*
+ * fft2d_ziptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft2d_ziptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * ioData,
+ SInt32 strideInRow,
+ SInt32 strideInCol,
+ DSPDoubleSplitComplex * bufferTemp,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ FFTDirection direction);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Functions fft2d_zop and fft2d_zopt
+ fft2d_zopD and fft2d_zoptD
+
+ Out-of-Place two dimemsional Split Complex Fourier Transform with or
+ without temporary memory
+
+ Criteria to invoke PowerPC vector code:
+
+ 1. signal.realp and signal.imagp must be 16-byte aligned.
+ 2. signalStrideInRow = 1;
+ 3. signalStrideInCol must be a multiple of 4
+ 4. result.realp and result.imagp must be 16-byte aligned.
+ 5. strideResultInRow = 1;
+ 6. strideResultInCol must be a multiple of 4
+ 7. 2 <= log2nInRow <= 12
+ 8. 2 <= log2nInCol <= 12
+ 9. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. The size of temporary memory for each part
+ is the lower value of 4*n and 16k. ( log2n = log2nInRow + log2nInCol )
+ Direction can be either kFFTDirection_Forward or kFFTDirection_Inverse.
+-------------------------------------------------------------------------------
+*/
+/*
+ * fft2d_zop()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft2d_zop(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStrideInRow,
+ SInt32 signalStrideInCol,
+ DSPSplitComplex * result,
+ SInt32 strideResultInRow,
+ SInt32 strideResultInCol,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ SInt32 flag);
+
+
+/*
+ * fft2d_zopt()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft2d_zopt(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStrideInRow,
+ SInt32 signalStrideInCol,
+ DSPSplitComplex * result,
+ SInt32 strideResultInRow,
+ SInt32 strideResultInCol,
+ DSPSplitComplex * bufferTemp,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ SInt32 flag);
+
+
+/*
+ * fft2d_zopD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft2d_zopD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStrideInRow,
+ SInt32 signalStrideInCol,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResultInRow,
+ SInt32 strideResultInCol,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ SInt32 flag);
+
+
+/*
+ * fft2d_zoptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft2d_zoptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStrideInRow,
+ SInt32 signalStrideInCol,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResultInRow,
+ SInt32 strideResultInCol,
+ DSPDoubleSplitComplex * bufferTemp,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ SInt32 flag);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Functions fft2d_zrip and fft2d_zript
+ fft2d_zripD and fft2d_zriptD
+
+ In-place two dimensional Real Fourier Transform with or without temporary
+ memory, Split Complex Format
+
+ Criteria to invoke PowerPC vector code:
+ 1. ioData.realp and ioData.imagp must be 16-byte aligned.
+ 2. strideInRow = 1;
+ 3. strideInCol must be a multiple of 4
+ 4. 3 <= log2nInRow <= 12
+ 5. 3 <= log2nInCol <= 13
+ 6. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. The size of temporary memory for each part
+ is the lower value of 4*n and 16k. ( log2n = log2nInRow + log2nInCol )
+ Direction can be either kFFTDirection_Forward or kFFTDirection_Inverse.
+-------------------------------------------------------------------------------
+*/
+/*
+ * fft2d_zrip()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft2d_zrip(
+ FFTSetup setup,
+ DSPSplitComplex * ioData,
+ SInt32 strideInRow,
+ SInt32 strideInCol,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ FFTDirection direction);
+
+
+/*
+ * fft2d_zript()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft2d_zript(
+ FFTSetup setup,
+ DSPSplitComplex * ioData,
+ SInt32 strideInRow,
+ SInt32 strideInCol,
+ DSPSplitComplex * bufferTemp,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ FFTDirection direction);
+
+
+/*
+ * fft2d_zripD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft2d_zripD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 strideInRow,
+ SInt32 strideInCol,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ SInt32 flag);
+
+
+/*
+ * fft2d_zriptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft2d_zriptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 strideInRow,
+ SInt32 strideInCol,
+ DSPDoubleSplitComplex * bufferTemp,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ SInt32 flag);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Functions fft2d_zrop and fft2d_zropt
+ fft2d_zropD and fft2d_zroptD
+
+ Out-of-Place Two-Dimemsional Real Fourier Transform with or without
+ temporary memory, Split Complex Format
+
+ Criteria to invoke PowerPC vector code:
+ 1. signal.realp and signal.imagp must be 16-byte aligned.
+ 2. signalStrideInRow = 1;
+ 3. signalStrideInCol must be a multiple of 4
+ 4. result.realp and result.imagp must be 16-byte aligned.
+ 5. strideResultInRow = 1;
+ 6. strideResultInCol must be a multiple of 4
+ 7. 3 <= log2nInRow <= 12
+ 8. 3 <= log2nInCol <= 13
+ 9. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. The size of temporary memory for each part
+ is the lower value of 4*n and 16k. ( log2n = log2nInRow + log2nInCol )
+ Direction can be either kFFTDirection_Forward or kFFTDirection_Inverse.
+-------------------------------------------------------------------------------
+*/
+/*
+ * fft2d_zrop()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft2d_zrop(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStrideInRow,
+ SInt32 signalStrideInCol,
+ DSPSplitComplex * result,
+ SInt32 strideResultInRow,
+ SInt32 strideResultInCol,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ SInt32 flag);
+
+
+/*
+ * fft2d_zropt()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+fft2d_zropt(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStrideInRow,
+ SInt32 signalStrideInCol,
+ DSPSplitComplex * result,
+ SInt32 strideResultInRow,
+ SInt32 strideResultInCol,
+ DSPSplitComplex * bufferTemp,
+ UInt32 log2nInCol,
+ UInt32 log2nInRow,
+ SInt32 flag);
+
+
+/*
+ * fft2d_zropD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft2d_zropD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * ioData,
+ SInt32 Kr,
+ SInt32 Kc,
+ DSPDoubleSplitComplex * ioData2,
+ SInt32 Ir,
+ SInt32 Ic,
+ UInt32 log2nc,
+ UInt32 log2nr,
+ SInt32 flag);
+
+
+/*
+ * fft2d_zroptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft2d_zroptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * ioData,
+ SInt32 Kr,
+ SInt32 Kc,
+ DSPDoubleSplitComplex * ioData2,
+ SInt32 Ir,
+ SInt32 Ic,
+ DSPDoubleSplitComplex * temp,
+ UInt32 log2nc,
+ UInt32 log2nr,
+ SInt32 flag);
+
+
+
+/*
+________________________________________________________________________________
+ Functions fftm_zip and fftm_zipt
+ fftm_zipD and fftm_ziptD
+
+ In-Place multiple One_Dimensional Complex Fourier Transform with or
+ without temporary memory, Split Complex Format
+
+ Criteria to invoke PowerPC vector code:
+ 1. signal.realp and signal.imagp must be 16-byte aligned.
+ 2. signalStride = 1;
+ 3. fftStride must be a multiple of 4
+ 4. 2 <= log2n <= 12
+ 5. temp.realp and temp.imagp must be 16-byte aligned.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+________________________________________________________________________________
+*/
+/*
+ * fftm_zip()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zip(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zipt()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zipt(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPSplitComplex * temp,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zipD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zipD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_ziptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_ziptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPDoubleSplitComplex * temp,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+
+/*
+________________________________________________________________________________
+ Functions fftm_zop and fftm_zopt
+ fftm_zopD and fftm_zoptD
+
+ Out-Of-Place multiple One_Dimensional Complex Fourier Transform with or
+ without temporary memory, Split Complex Format
+
+ Criteria to invoke PowerPC vector code:
+ 1. signal.realp and signal.imagp must be 16-byte aligned.
+ 2. signalStride = 1;
+ 3. fftStride must be a multiple of 4
+ 4. result.realp and result.imagp must be 16-byte aligned.
+ 5. resultStride = 1;
+ 6. rfftStride must be a multiple of 4
+ 7. 2 <= log2n <= 12
+ 8. temp.realp and temp.imagp must be 16-byte aligned.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+________________________________________________________________________________
+*/
+/*
+ * fftm_zop()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zop(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPSplitComplex * result,
+ SInt32 resultStride,
+ SInt32 rfftStride,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zopt()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zopt(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPSplitComplex * result,
+ SInt32 resultStride,
+ SInt32 rfftStride,
+ DSPSplitComplex * temp,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zopD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zopD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPDoubleSplitComplex * result,
+ SInt32 resultStride,
+ SInt32 rfftStride,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zoptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zoptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPDoubleSplitComplex * result,
+ SInt32 resultStride,
+ SInt32 rfftStride,
+ DSPDoubleSplitComplex * temp,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+
+/*
+________________________________________________________________________________
+ Functions fftm_zrip and fftm_zript
+ fftm_zripD and fftm_zriptD
+
+ In-Place multiple One_Dimensional Real Fourier Transform with or
+ without temporary memory, Split Complex Format
+
+ Criteria to invoke PowerPC vector code:
+ 1. signal.realp and signal.imagp must be 16-byte aligned.
+ 2. signalStride = 1;
+ 3. fftStride must be a multiple of 4
+ 4. 3 <= log2n <= 13
+ 5. temp.realp and temp.imagp must be 16-byte aligned.
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+________________________________________________________________________________
+*/
+/*
+ * fftm_zrip()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zrip(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zript()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zript(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPSplitComplex * temp,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zripD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zripD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zriptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zriptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPDoubleSplitComplex * temp,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+
+/*
+________________________________________________________________________________
+ Functions fftm_zrop and fftm_zropt
+ fftm_zropD and fftm_zroptD
+
+ Out-Of-Place multiple One_Dimensional Real Fourier Transform with or
+ without temporary memory, Split Complex Format
+
+ Criteria to invoke PowerPC vector code:
+ 1. signal.realp and signal.imagp must be 16-byte aligned.
+ 2. signalStride = 1;
+ 3. fftStride must be a multiple of 4
+ 4. result.realp and result.imagp must be 16-byte aligned.
+ 5. resultStride = 1;
+ 6. rfftStride must be a multiple of 4
+ 7. 3 <= log2n <= 13
+ 8. temp.realp and temp.imagp must be 16-byte aligned.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+________________________________________________________________________________
+*/
+/*
+ * fftm_zrop()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zrop(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPSplitComplex * result,
+ SInt32 resultStride,
+ SInt32 rfftStride,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zropt()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zropt(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPSplitComplex * result,
+ SInt32 resultStride,
+ SInt32 rfftStride,
+ DSPSplitComplex * temp,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zropD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zropD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPDoubleSplitComplex * result,
+ SInt32 resultStride,
+ SInt32 rfftStride,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+/*
+ * fftm_zroptD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fftm_zroptD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ SInt32 fftStride,
+ DSPDoubleSplitComplex * result,
+ SInt32 resultStride,
+ SInt32 rfftStride,
+ DSPDoubleSplitComplex * temp,
+ UInt32 log2n,
+ UInt32 numFFT,
+ SInt32 flag);
+
+
+
+/*
+________________________________________________________________________________
+ Functions fft3_zop and fft5_zop
+ fft3_zopD and fft5_zopD
+
+ Out-Of-Place One_Dimensional Complex Fourier Transform in base-3 and
+ base-5 with or without temporary memory, Split Complex Format
+
+ Criteria to invoke PowerPC vector code:
+ 1. signal.realp and signal.imagp must be 16-byte aligned.
+ 2. signalStride = 1;
+ 3. result.realp and result.imagp must be 16-byte aligned.
+ 4. resultStride = 1;
+ 5. 3 <= log2n
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+________________________________________________________________________________
+*/
+/*
+ * fft3_zop()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft3_zop(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ DSPSplitComplex * result,
+ SInt32 resultStride,
+ UInt32 log2n,
+ SInt32 flag);
+
+
+/*
+ * fft5_zop()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft5_zop(
+ FFTSetup setup,
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ DSPSplitComplex * result,
+ SInt32 resultStride,
+ UInt32 log2n,
+ SInt32 flag);
+
+
+/*
+ * fft3_zopD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft3_zopD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * ioData,
+ SInt32 K,
+ DSPDoubleSplitComplex * ioData2,
+ SInt32 L,
+ UInt32 log2n,
+ SInt32 flag);
+
+
+/*
+ * fft5_zopD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+fft5_zopD(
+ FFTSetupD setup,
+ DSPDoubleSplitComplex * ioData,
+ SInt32 K,
+ DSPDoubleSplitComplex * ioData2,
+ SInt32 L,
+ UInt32 log2n,
+ SInt32 flag);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Function conv
+ convD
+
+ Floating Point Convolution and Correlation in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. signal and result must have relative alignement.
+ 2. 4 <= lenFilter <= 256
+ 3. lenResult > 36
+ 4. signalStride = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. strideFilter can be positive for
+ correlation or negative for convolution.
+-------------------------------------------------------------------------------
+*/
+/*
+ * conv()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+conv(
+ const float signal[],
+ SInt32 signalStride,
+ const float filter[],
+ SInt32 strideFilter,
+ float result[],
+ SInt32 strideResult,
+ SInt32 lenResult,
+ SInt32 lenFilter);
+
+
+/*
+ * convD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+convD(
+ const double signal[],
+ SInt32 signalStride,
+ const double filter[],
+ SInt32 strideFilter,
+ double result[],
+ SInt32 strideResult,
+ SInt32 lenResult,
+ SInt32 lenFilter);
+
+
+/*
+_______________________________________________________________________________
+ Functions f3x3, f5x5, and imgfir
+ f3x3D, f5x5D and imgfirD
+
+ Filter, 3x3, 5x5, MxN Single and Double Precision Convolution
+
+ Criteria to invoke PowerPC vector code:
+ 1. signal, filter, and result must have relative alignment and
+ be 16-byte aligned.
+ 2. for f3x3, NC >= 18
+ 3. for f5x5, NC >= 20
+ 4. for imgfir, NC >= 20
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+_______________________________________________________________________________
+*/
+/*
+ * f3x3()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+f3x3(
+ float * signal,
+ SInt32 rowStride,
+ SInt32 colStride,
+ float * filter,
+ float * result);
+
+
+/*
+ * f3x3D()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+f3x3D(
+ double * signal,
+ SInt32 rowStride,
+ SInt32 colStride,
+ double * filter,
+ double * result);
+
+
+/*
+ * f5x5()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+f5x5(
+ float * signal,
+ SInt32 rowStride,
+ SInt32 colStride,
+ float * filter,
+ float * result);
+
+
+/*
+ * f5x5D()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+f5x5D(
+ double * signal,
+ SInt32 rowStride,
+ SInt32 colStride,
+ double * filter,
+ double * result);
+
+
+/*
+ * imgfir()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+imgfir(
+ float * signal,
+ SInt32 numRow,
+ SInt32 numCol,
+ float * filter,
+ float * result,
+ SInt32 fnumRow,
+ SInt32 fnumCol);
+
+
+/*
+ * imgfirD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+imgfirD(
+ double * signal,
+ SInt32 numRow,
+ SInt32 numCol,
+ double * filter,
+ double * result,
+ SInt32 fnumRow,
+ SInt32 fnumCol);
+
+
+
+/*
+_______________________________________________________________________________
+ Function mtrans
+ mtransD
+
+ Single and Double Precision Matrix Transpose
+
+ Criteria to invoke PowerPC vector code:
+ 1. a = c
+ 2. a and c must be 16-byte aligned.
+ 3. M must be a multiple of 8.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+_______________________________________________________________________________
+*/
+/*
+ * mtrans()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+mtrans(
+ float * a,
+ SInt32 aStride,
+ float * c,
+ SInt32 cStride,
+ SInt32 M,
+ SInt32 N);
+
+
+/*
+ * mtransD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+mtransD(
+ double * a,
+ SInt32 aStride,
+ double * c,
+ SInt32 cStride,
+ SInt32 M,
+ SInt32 N);
+
+
+/*
+_______________________________________________________________________________
+ Function mmul
+ mmulD
+
+ Single and Double Precision Matrix Multiply
+
+ Criteria to invoke PowerPC vector code:
+ 1. a, b, c must be 16-byte aligned.
+ 2. M >= 8.
+ 3. N >= 32.
+ 4. P is a multiple of 8.
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+_______________________________________________________________________________
+*/
+/*
+ * mmul()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+mmul(
+ float * a,
+ SInt32 aStride,
+ float * b,
+ SInt32 bStride,
+ float * c,
+ SInt32 cStride,
+ SInt32 M,
+ SInt32 N,
+ SInt32 P);
+
+
+/*
+ * mmulD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+mmulD(
+ double * a,
+ SInt32 aStride,
+ double * b,
+ SInt32 bStride,
+ double * c,
+ SInt32 cStride,
+ SInt32 M,
+ SInt32 N,
+ SInt32 P);
+
+
+/*
+_______________________________________________________________________________
+ Function zmma, zmms, zmsm, and zmmul
+ zmmaD, zmmsD, zmsmD, and zmmulD
+
+ Single and Double Precision Complex Split Matrix mul/add, mul/sub, sub/mul,
+ and mul
+
+ Criteria to invoke PowerPC vector code:
+ 1. a, b, c, and d must be 16-byte aligned.
+ 2. N is a multiple of 4.
+ 3. P is a multiple of 4.
+ 4. I, J, K, L = 1;
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+_______________________________________________________________________________
+*/
+/*
+ * zmma()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zmma(
+ DSPSplitComplex * a,
+ SInt32 i,
+ DSPSplitComplex * b,
+ SInt32 j,
+ DSPSplitComplex * c,
+ SInt32 k,
+ DSPSplitComplex * d,
+ SInt32 l,
+ SInt32 M,
+ SInt32 N,
+ SInt32 P);
+
+
+/*
+ * zmmaD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zmmaD(
+ DSPDoubleSplitComplex * a,
+ SInt32 i,
+ DSPDoubleSplitComplex * b,
+ SInt32 j,
+ DSPDoubleSplitComplex * c,
+ SInt32 k,
+ DSPDoubleSplitComplex * d,
+ SInt32 l,
+ SInt32 M,
+ SInt32 N,
+ SInt32 P);
+
+
+/*
+ * zmms()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zmms(
+ DSPSplitComplex * a,
+ SInt32 i,
+ DSPSplitComplex * b,
+ SInt32 j,
+ DSPSplitComplex * c,
+ SInt32 k,
+ DSPSplitComplex * d,
+ SInt32 l,
+ SInt32 M,
+ SInt32 N,
+ SInt32 P);
+
+
+/*
+ * zmmsD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zmmsD(
+ DSPDoubleSplitComplex * a,
+ SInt32 i,
+ DSPDoubleSplitComplex * b,
+ SInt32 j,
+ DSPDoubleSplitComplex * c,
+ SInt32 k,
+ DSPDoubleSplitComplex * d,
+ SInt32 l,
+ SInt32 M,
+ SInt32 N,
+ SInt32 P);
+
+
+/*
+ * zmsm()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zmsm(
+ DSPSplitComplex * a,
+ SInt32 i,
+ DSPSplitComplex * b,
+ SInt32 j,
+ DSPSplitComplex * c,
+ SInt32 k,
+ DSPSplitComplex * d,
+ SInt32 l,
+ SInt32 M,
+ SInt32 N,
+ SInt32 P);
+
+
+/*
+ * zmsmD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zmsmD(
+ DSPDoubleSplitComplex * a,
+ SInt32 i,
+ DSPDoubleSplitComplex * b,
+ SInt32 j,
+ DSPDoubleSplitComplex * c,
+ SInt32 k,
+ DSPDoubleSplitComplex * d,
+ SInt32 l,
+ SInt32 M,
+ SInt32 N,
+ SInt32 P);
+
+
+/*
+ * zmmul()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zmmul(
+ DSPSplitComplex * a,
+ SInt32 i,
+ DSPSplitComplex * b,
+ SInt32 j,
+ DSPSplitComplex * c,
+ SInt32 k,
+ SInt32 M,
+ SInt32 N,
+ SInt32 P);
+
+
+/*
+ * zmmulD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zmmulD(
+ DSPDoubleSplitComplex * a,
+ SInt32 i,
+ DSPDoubleSplitComplex * b,
+ SInt32 j,
+ DSPDoubleSplitComplex * c,
+ SInt32 k,
+ SInt32 M,
+ SInt32 N,
+ SInt32 P);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function vadd
+ vaddD
+
+ Floating Point Add in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1 and input2 and result are all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * vadd()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vadd(
+ const float input1[],
+ SInt32 stride1,
+ const float input2[],
+ SInt32 stride2,
+ float result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * vaddD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+vaddD(
+ const double input1[],
+ SInt32 stride1,
+ const double input2[],
+ SInt32 stride2,
+ double result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function vsub
+ vsubD
+
+ Floating Point Substract in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1 and input2 and result are all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * vsub()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vsub(
+ const float input1[],
+ SInt32 stride1,
+ const float input2[],
+ SInt32 stride2,
+ float result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * vsubD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+vsubD(
+ const double input1[],
+ SInt32 stride1,
+ const double input2[],
+ SInt32 stride2,
+ double result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function vmul
+ vmulD
+
+ Floating Point Multiply in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1 and input2 and result must be all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * vmul()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vmul(
+ const float input1[],
+ SInt32 stride1,
+ const float input2[],
+ SInt32 stride2,
+ float result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * vmulD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+vmulD(
+ const double input1[],
+ SInt32 stride1,
+ const double input2[],
+ SInt32 stride2,
+ double result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function vsmul
+ vsmulD
+
+ Floating Point - Scalar Multiply in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1 and result are all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * vsmul()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vsmul(
+ const float input1[],
+ SInt32 stride1,
+ const float * input2,
+ float result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * vsmulD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+vsmulD(
+ const double input1[],
+ SInt32 stride1,
+ const double * input2,
+ double result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Function vsq
+ vsqD
+
+ Floating Point Square in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input and result are relatively aligned.
+ 2. size >= 8
+ 3. strideInput = 1
+ 4. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * vsq()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vsq(
+ const float input[],
+ SInt32 strideInput,
+ float result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * vsqD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+vsqD(
+ const double input[],
+ SInt32 strideInput,
+ double result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Function vssq
+ vssqD
+
+ Floating Point Signed Square in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input and result must be all relatively aligned.
+ 2. size >= 8
+ 3. strideInput = 1
+ 4. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * vssq()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vssq(
+ const float input[],
+ SInt32 strideInput,
+ float result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * vssqD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+vssqD(
+ const double input[],
+ SInt32 strideInput,
+ double result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function dotpr
+ dotprD
+
+ Floating Point Dot product in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1 and input2 are relatively aligned.
+ 2. size >= 20
+ 3. stride1 = 1
+ 4. stride2 = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * dotpr()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+dotpr(
+ const float input1[],
+ SInt32 stride1,
+ const float input2[],
+ SInt32 stride2,
+ float * result,
+ UInt32 size);
+
+
+/*
+ * dotprD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+dotprD(
+ const double input1[],
+ SInt32 stride1,
+ const double input2[],
+ SInt32 stride2,
+ double * result,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function vam
+ vamD
+
+ Floating Point vadd and Multiply in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1, input2, input_3 and result are all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. stride_3 = 1
+ 6. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * vam()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vam(
+ const float input1[],
+ SInt32 stride1,
+ const float input2[],
+ SInt32 stride2,
+ const float input3[],
+ SInt32 stride3,
+ float result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * vamD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+vamD(
+ const double input1[],
+ SInt32 stride1,
+ const double input2[],
+ SInt32 stride2,
+ const double input3[],
+ SInt32 stride3,
+ double result[],
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zconv
+ zconvD
+
+ Split Complex Convolution and Correlation in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. signal->realp, signal->imagp, result->realp, result->imagp
+ must be relatively aligned.
+ 2. 4 <= lenFilter <= 128
+ 3. lenResult > 20
+ 4. signalStride = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. strideFilter can be positive for correlation
+ or negative for convolution
+-------------------------------------------------------------------------------
+*/
+/*
+ * zconv()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zconv(
+ DSPSplitComplex * signal,
+ SInt32 signalStride,
+ DSPSplitComplex * filter,
+ SInt32 strideFilter,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ SInt32 lenResult,
+ SInt32 lenFilter);
+
+
+/*
+ * zconvD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zconvD(
+ DSPDoubleSplitComplex * signal,
+ SInt32 signalStride,
+ DSPDoubleSplitComplex * filter,
+ SInt32 strideFilter,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ SInt32 lenResult,
+ SInt32 lenFilter);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zvadd
+ zvaddD
+
+ Split Complex vadd in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1.realp, input1.imagp, input2.realp, input2.imagp,
+ result.realp, result.imagp must be all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * zvadd()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zvadd(
+ DSPSplitComplex * input1,
+ SInt32 stride1,
+ DSPSplitComplex * input2,
+ SInt32 stride2,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * zvaddD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zvaddD(
+ DSPDoubleSplitComplex * input1,
+ SInt32 stride1,
+ DSPDoubleSplitComplex * input2,
+ SInt32 stride2,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zvsub
+ zvsubD
+
+ Split Complex Substract in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1.realp, input1.imagp, input2.realp, input2.imagp,
+ result.realp, result.imagp must be all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * zvsub()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zvsub(
+ DSPSplitComplex * input1,
+ SInt32 stride1,
+ DSPSplitComplex * input2,
+ SInt32 stride2,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * zvsubD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zvsubD(
+ DSPDoubleSplitComplex * input1,
+ SInt32 stride1,
+ DSPDoubleSplitComplex * input2,
+ SInt32 stride2,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zvmul
+ zvmulD
+
+ Split Complex Multiply in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1.realp, input1.imagp, input2.realp, input2.imagp,
+ result.realp, result.imagp must be all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used. The conjugate value can be 1 or -1.
+-------------------------------------------------------------------------------
+*/
+/*
+ * zvmul()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zvmul(
+ DSPSplitComplex * input1,
+ SInt32 stride1,
+ DSPSplitComplex * input2,
+ SInt32 stride2,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size,
+ SInt32 conjugate);
+
+
+/*
+ * zvmulD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zvmulD(
+ DSPDoubleSplitComplex * input1,
+ SInt32 stride1,
+ DSPDoubleSplitComplex * input2,
+ SInt32 stride2,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size,
+ SInt32 conjugate);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zdotpr
+ zdotprD
+
+ Split Complex Dot product in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1.realp, input1.imagp, input2.realp, input2.imagp are all
+ relatively aligned.
+ 2. size >= 20
+ 3. stride1 = 1
+ 4. stride2 = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * zdotpr()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zdotpr(
+ DSPSplitComplex * input1,
+ SInt32 stride1,
+ DSPSplitComplex * input2,
+ SInt32 stride2,
+ DSPSplitComplex * result,
+ UInt32 size);
+
+
+/*
+ * zdotprD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zdotprD(
+ DSPDoubleSplitComplex * input1,
+ SInt32 stride1,
+ DSPDoubleSplitComplex * input2,
+ SInt32 stride2,
+ DSPDoubleSplitComplex * result,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zidotpr
+ zidotprD
+
+ Split Complex Inner Dot product in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1.realp, input1.imagp, input2.realp, input2.imagp must be
+ all relatively aligned.
+ 2. size >= 20
+ 3. stride1 = 1
+ 4. stride2 = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * zidotpr()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zidotpr(
+ DSPSplitComplex * input1,
+ SInt32 stride1,
+ DSPSplitComplex * input2,
+ SInt32 stride2,
+ DSPSplitComplex * result,
+ UInt32 size);
+
+
+/*
+ * zidotprD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zidotprD(
+ DSPDoubleSplitComplex * input1,
+ SInt32 stride1,
+ DSPDoubleSplitComplex * input2,
+ SInt32 stride2,
+ DSPDoubleSplitComplex * result,
+ UInt32 size);
+
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zrdotpr
+ zrdotprD
+
+ Split Complex - Real Dot product in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1.realp, input1.imagp, input2 are must be relatively aligned.
+ 2. size >= 16
+ 3. stride1 = 1
+ 4. stride2 = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * zrdotpr()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zrdotpr(
+ DSPSplitComplex * input1,
+ SInt32 stride1,
+ const float input2[],
+ SInt32 stride2,
+ DSPSplitComplex * result,
+ UInt32 size);
+
+
+/*
+ * zrdotprD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zrdotprD(
+ DSPDoubleSplitComplex * input1,
+ SInt32 stride1,
+ const double input2[],
+ SInt32 stride2,
+ DSPDoubleSplitComplex * result,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zvcma
+ zvcmaD
+
+ Split Complex Conjugate Multiply And vadd in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1.realp, input1.imagp, input2.realp, input2.imagp,
+ input_3.realp, input_3.imagp, result.realp, result.imagp
+ must be all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. stride_3 = 1
+ 6. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * zvcma()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zvcma(
+ DSPSplitComplex * input1,
+ SInt32 stride1,
+ DSPSplitComplex * input2,
+ SInt32 stride2,
+ DSPSplitComplex * input3,
+ SInt32 stride3,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * zvcmaD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zvcmaD(
+ DSPDoubleSplitComplex * input1,
+ SInt32 stride1,
+ DSPDoubleSplitComplex * input2,
+ SInt32 stride2,
+ DSPDoubleSplitComplex * input3,
+ SInt32 stride3,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zrvadd
+ zrvaddD
+
+ Split Complex - Real Add in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1.realp, input1.imagp, input2, result.realp, result.imagp
+ are all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * zrvadd()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zrvadd(
+ DSPSplitComplex * input1,
+ SInt32 stride1,
+ const float input2[],
+ SInt32 stride2,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * zrvaddD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zrvaddD(
+ DSPDoubleSplitComplex * input1,
+ SInt32 stride1,
+ const double input2[],
+ SInt32 stride2,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zrvsub
+ zrvsubD
+
+ Split Complex - Real Substract in Single and Double Precision
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1.realp, input1.imagp, input2, result.realp, result.imagp
+ must be all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * zrvsub()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zrvsub(
+ DSPSplitComplex * input1,
+ SInt32 stride1,
+ const float input2[],
+ SInt32 stride2,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * zrvsubD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zrvsubD(
+ DSPDoubleSplitComplex * input1,
+ SInt32 stride1,
+ const double input2[],
+ SInt32 stride2,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+-------------------------------------------------------------------------------
+ Function zrvmul
+ zrvmulD
+
+ Split Complex - Real Multiply
+
+ Criteria to invoke PowerPC vector code:
+ 1. input1.realp, input1.imagp, input2, result.realp, result.imagp
+ must be all relatively aligned.
+ 2. size >= 8
+ 3. stride1 = 1
+ 4. stride2 = 1
+ 5. strideResult = 1
+
+ If any of the above criteria are not satisfied, the PowerPC scalar code
+ implementation will be used.
+-------------------------------------------------------------------------------
+*/
+/*
+ * zrvmul()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+zrvmul(
+ DSPSplitComplex * input1,
+ SInt32 stride1,
+ const float input2[],
+ SInt32 stride2,
+ DSPSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+/*
+ * zrvmulD()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.2 and later
+ */
+EXTERN_API_C( void )
+zrvmulD(
+ DSPDoubleSplitComplex * input1,
+ SInt32 stride1,
+ const double input2[],
+ SInt32 stride2,
+ DSPDoubleSplitComplex * result,
+ SInt32 strideResult,
+ UInt32 size);
+
+
+
+#ifndef USE_NON_APPLE_STANDARD_DATATYPES
+#define USE_NON_APPLE_STANDARD_DATATYPES 1
+#endif /* !defined(USE_NON_APPLE_STANDARD_DATATYPES) */
+
+#if USE_NON_APPLE_STANDARD_DATATYPES
+enum {
+ FFT_FORWARD = kFFTDirection_Forward,
+ FFT_INVERSE = kFFTDirection_Inverse
+};
+
+enum {
+ FFT_RADIX2 = kFFTRadix2,
+ FFT_RADIX3 = kFFTRadix3,
+ FFT_RADIX5 = kFFTRadix5
+};
+
+
+typedef DSPComplex COMPLEX;
+typedef DSPSplitComplex COMPLEX_SPLIT;
+typedef DSPDoubleComplex DOUBLE_COMPLEX;
+typedef DSPDoubleSplitComplex DOUBLE_COMPLEX_SPLIT;
+#endif /* USE_NON_APPLE_STANDARD_DATATYPES */
+
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=reset
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(pop)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack()
+#endif
+
+#ifdef PRAGMA_IMPORT_OFF
+#pragma import off
+#elif PRAGMA_IMPORT
+#pragma import reset
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __VDSP__ */
+