Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3177 lines
83 KiB

  1. /*
  2. File: vDSP.h
  3. Contains: AltiVec DSP Interfaces
  4. Version: QuickTime 7.3
  5. Copyright: (c) 2007 (c) 2000-2001 by Apple Computer, Inc., all rights reserved.
  6. Bugs?: For bug reports, consult the following page on
  7. the World Wide Web:
  8. http://developer.apple.com/bugreporter/
  9. */
  10. #ifndef __VDSP__
  11. #define __VDSP__
  12. #ifndef __CONDITIONALMACROS__
  13. #include <ConditionalMacros.h>
  14. #endif
  15. #ifndef __MACTYPES__
  16. #include <MacTypes.h>
  17. #endif
  18. #if PRAGMA_ONCE
  19. #pragma once
  20. #endif
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. #if PRAGMA_IMPORT
  25. #pragma import on
  26. #endif
  27. #if PRAGMA_STRUCT_ALIGN
  28. #pragma options align=mac68k
  29. #elif PRAGMA_STRUCT_PACKPUSH
  30. #pragma pack(push, 2)
  31. #elif PRAGMA_STRUCT_PACK
  32. #pragma pack(2)
  33. #endif
  34. struct DSPComplex {
  35. float real;
  36. float imag;
  37. };
  38. typedef struct DSPComplex DSPComplex;
  39. struct DSPSplitComplex {
  40. float * realp;
  41. float * imagp;
  42. };
  43. typedef struct DSPSplitComplex DSPSplitComplex;
  44. struct DSPDoubleComplex {
  45. double real;
  46. double imag;
  47. };
  48. typedef struct DSPDoubleComplex DSPDoubleComplex;
  49. struct DSPDoubleSplitComplex {
  50. double * realp;
  51. double * imagp;
  52. };
  53. typedef struct DSPDoubleSplitComplex DSPDoubleSplitComplex;
  54. typedef struct OpaqueFFTSetup* FFTSetup;
  55. typedef struct OpaqueFFTSetupD* FFTSetupD;
  56. typedef SInt32 FFTDirection;
  57. enum {
  58. kFFTDirection_Forward = 1,
  59. kFFTDirection_Inverse = -1
  60. };
  61. typedef SInt32 FFTRadix;
  62. enum {
  63. kFFTRadix2 = 0,
  64. kFFTRadix3 = 1,
  65. kFFTRadix5 = 2
  66. };
  67. /*
  68. -------------------------------------------------------------------------------
  69. The criteria to invoke the PowerPC vector implementation is subject to
  70. change and become less restrictive in the future.
  71. -------------------------------------------------------------------------------
  72. */
  73. /*
  74. -------------------------------------------------------------------------------
  75. Functions create_fftsetup and destroy_fftsetup.
  76. create_fftsetupD and destroy_fftsetupD.
  77. create_fftsetup will allocate memory and setup a weight array used by
  78. the FFT. The call destroy_fftsetup will free the array.
  79. -------------------------------------------------------------------------------
  80. */
  81. /*
  82. * create_fftsetup()
  83. *
  84. * Availability:
  85. * Non-Carbon CFM: in vecLib 1.0 and later
  86. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  87. * Mac OS X: in version 10.0 and later
  88. */
  89. EXTERN_API_C( FFTSetup )
  90. create_fftsetup(
  91. UInt32 log2n,
  92. FFTRadix radix);
  93. /*
  94. * destroy_fftsetup()
  95. *
  96. * Availability:
  97. * Non-Carbon CFM: in vecLib 1.0 and later
  98. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  99. * Mac OS X: in version 10.0 and later
  100. */
  101. EXTERN_API_C( void )
  102. destroy_fftsetup(FFTSetup setup);
  103. /*
  104. * create_fftsetupD()
  105. *
  106. * Availability:
  107. * Non-Carbon CFM: not available
  108. * CarbonLib: not available
  109. * Mac OS X: in version 10.2 and later
  110. */
  111. EXTERN_API_C( FFTSetupD )
  112. create_fftsetupD(
  113. UInt32 log2n,
  114. FFTRadix radix);
  115. /*
  116. * destroy_fftsetupD()
  117. *
  118. * Availability:
  119. * Non-Carbon CFM: not available
  120. * CarbonLib: not available
  121. * Mac OS X: in version 10.2 and later
  122. */
  123. EXTERN_API_C( void )
  124. destroy_fftsetupD(FFTSetupD setup);
  125. /*
  126. -------------------------------------------------------------------------------
  127. Functions ctoz and ztoc.
  128. ctozD and ztocD.
  129. ctoz converts a complex array to a complex-split array
  130. ztoc converts a complex-split array to a complex array
  131. Criteria to invoke PowerPC vector code:
  132. 1. size > 3
  133. 2. strideC = 2
  134. 3. strideZ = 1
  135. 4. C is 16-byte aligned and Z.realp and Z.imagp are 16-byte aligned.
  136. -------------------------------------------------------------------------------
  137. */
  138. /*
  139. * ctoz()
  140. *
  141. * Availability:
  142. * Non-Carbon CFM: in vecLib 1.0 and later
  143. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  144. * Mac OS X: in version 10.0 and later
  145. */
  146. EXTERN_API_C( void )
  147. ctoz(
  148. const DSPComplex C[],
  149. SInt32 strideC,
  150. DSPSplitComplex * Z,
  151. SInt32 strideZ,
  152. UInt32 size);
  153. /*
  154. * ztoc()
  155. *
  156. * Availability:
  157. * Non-Carbon CFM: in vecLib 1.0 and later
  158. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  159. * Mac OS X: in version 10.0 and later
  160. */
  161. EXTERN_API_C( void )
  162. ztoc(
  163. const DSPSplitComplex * Z,
  164. SInt32 strideZ,
  165. DSPComplex C[],
  166. SInt32 strideC,
  167. UInt32 size);
  168. /*
  169. * ctozD()
  170. *
  171. * Availability:
  172. * Non-Carbon CFM: not available
  173. * CarbonLib: not available
  174. * Mac OS X: in version 10.2 and later
  175. */
  176. EXTERN_API_C( void )
  177. ctozD(
  178. const DSPDoubleComplex C[],
  179. SInt32 strideC,
  180. DSPDoubleSplitComplex * Z,
  181. SInt32 strideZ,
  182. UInt32 size);
  183. /*
  184. * ztocD()
  185. *
  186. * Availability:
  187. * Non-Carbon CFM: not available
  188. * CarbonLib: not available
  189. * Mac OS X: in version 10.2 and later
  190. */
  191. EXTERN_API_C( void )
  192. ztocD(
  193. const DSPDoubleSplitComplex * Z,
  194. SInt32 strideZ,
  195. DSPDoubleComplex C[],
  196. SInt32 strideC,
  197. UInt32 size);
  198. /*
  199. -------------------------------------------------------------------------------
  200. Functions fft_zip and fft_zipt
  201. fft_zipD and fft_ziptD
  202. In-place Split Complex Fourier Transform with or without temporary memory.
  203. Criteria to invoke PowerPC vector code:
  204. 1. ioData.realp and ioData.imagp must be 16-byte aligned.
  205. 2. stride = 1
  206. 3. 2 <= log2n <= 20
  207. 4. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
  208. If any of the above criteria are not satisfied, the PowerPC scalar code
  209. implementation will be used. The size of temporary memory for each part
  210. is the lower value of 4*n and 16k. Direction can be either
  211. kFFTDirection_Forward or kFFTDirection_Inverse.
  212. -------------------------------------------------------------------------------
  213. */
  214. /*
  215. * fft_zip()
  216. *
  217. * Availability:
  218. * Non-Carbon CFM: in vecLib 1.0 and later
  219. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  220. * Mac OS X: in version 10.0 and later
  221. */
  222. EXTERN_API_C( void )
  223. fft_zip(
  224. FFTSetup setup,
  225. DSPSplitComplex * ioData,
  226. SInt32 stride,
  227. UInt32 log2n,
  228. FFTDirection direction);
  229. /*
  230. * fft_zipt()
  231. *
  232. * Availability:
  233. * Non-Carbon CFM: in vecLib 1.0 and later
  234. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  235. * Mac OS X: in version 10.0 and later
  236. */
  237. EXTERN_API_C( void )
  238. fft_zipt(
  239. FFTSetup setup,
  240. DSPSplitComplex * ioData,
  241. SInt32 stride,
  242. DSPSplitComplex * bufferTemp,
  243. UInt32 log2n,
  244. FFTDirection direction);
  245. /*
  246. * fft_zipD()
  247. *
  248. * Availability:
  249. * Non-Carbon CFM: not available
  250. * CarbonLib: not available
  251. * Mac OS X: in version 10.2 and later
  252. */
  253. EXTERN_API_C( void )
  254. fft_zipD(
  255. FFTSetupD setup,
  256. DSPDoubleSplitComplex * ioData,
  257. SInt32 stride,
  258. UInt32 log2n,
  259. FFTDirection direction);
  260. /*
  261. * fft_ziptD()
  262. *
  263. * Availability:
  264. * Non-Carbon CFM: not available
  265. * CarbonLib: not available
  266. * Mac OS X: in version 10.2 and later
  267. */
  268. EXTERN_API_C( void )
  269. fft_ziptD(
  270. FFTSetupD setup,
  271. DSPDoubleSplitComplex * ioData,
  272. SInt32 stride,
  273. DSPDoubleSplitComplex * bufferTemp,
  274. UInt32 log2n,
  275. FFTDirection direction);
  276. /*
  277. -------------------------------------------------------------------------------
  278. Functions fft_zop and fft_zopt
  279. fft_zopD and fft_zoptD
  280. Out-of-place Split Complex Fourier Transform with or without temporary
  281. memory
  282. Criteria to invoke PowerPC vector code:
  283. 1. signal.realp and signal.imagp must be 16-byte aligned.
  284. 2. signalStride = 1
  285. 3. result.realp and result.imagp must be 16-byte aligned.
  286. 4. strideResult = 1
  287. 5. 2 <= log2n <= 20
  288. 6. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
  289. If any of the above criteria are not satisfied, the PowerPC scalar code
  290. implementation will be used. The size of temporary memory for each part
  291. is the lower value of 4*n and 16k. Direction can be either
  292. kFFTDirection_Forward or kFFTDirection_Inverse.
  293. -------------------------------------------------------------------------------
  294. */
  295. /*
  296. * fft_zop()
  297. *
  298. * Availability:
  299. * Non-Carbon CFM: in vecLib 1.0 and later
  300. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  301. * Mac OS X: in version 10.0 and later
  302. */
  303. EXTERN_API_C( void )
  304. fft_zop(
  305. FFTSetup setup,
  306. DSPSplitComplex * signal,
  307. SInt32 signalStride,
  308. DSPSplitComplex * result,
  309. SInt32 strideResult,
  310. UInt32 log2n,
  311. FFTDirection direction);
  312. /*
  313. * fft_zopt()
  314. *
  315. * Availability:
  316. * Non-Carbon CFM: in vecLib 1.0 and later
  317. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  318. * Mac OS X: in version 10.0 and later
  319. */
  320. EXTERN_API_C( void )
  321. fft_zopt(
  322. FFTSetup setup,
  323. DSPSplitComplex * signal,
  324. SInt32 signalStride,
  325. DSPSplitComplex * result,
  326. SInt32 strideResult,
  327. DSPSplitComplex * bufferTemp,
  328. UInt32 log2n,
  329. FFTDirection direction);
  330. /*
  331. * fft_zopD()
  332. *
  333. * Availability:
  334. * Non-Carbon CFM: not available
  335. * CarbonLib: not available
  336. * Mac OS X: in version 10.2 and later
  337. */
  338. EXTERN_API_C( void )
  339. fft_zopD(
  340. FFTSetupD setup,
  341. DSPDoubleSplitComplex * signal,
  342. SInt32 signalStride,
  343. DSPDoubleSplitComplex * result,
  344. SInt32 strideResult,
  345. UInt32 log2n,
  346. FFTDirection direction);
  347. /*
  348. * fft_zoptD()
  349. *
  350. * Availability:
  351. * Non-Carbon CFM: not available
  352. * CarbonLib: not available
  353. * Mac OS X: in version 10.2 and later
  354. */
  355. EXTERN_API_C( void )
  356. fft_zoptD(
  357. FFTSetupD setup,
  358. DSPDoubleSplitComplex * signal,
  359. SInt32 signalStride,
  360. DSPDoubleSplitComplex * result,
  361. SInt32 strideResult,
  362. DSPDoubleSplitComplex * bufferTemp,
  363. UInt32 log2n,
  364. FFTDirection direction);
  365. /*
  366. -------------------------------------------------------------------------------
  367. Functions fft_zrip and fft_zript
  368. fft_zripD and fft_zriptD
  369. In-Place Real Fourier Transform with or without temporary memory,
  370. split Complex Format
  371. Criteria to invoke PowerPC vector code:
  372. 1. ioData.realp and ioData.imagp must be 16-byte aligned.
  373. 2. stride = 1
  374. 3. 3 <= log2n <= 13
  375. If any of the above criteria are not satisfied, the PowerPC scalar code
  376. implementation will be used. The size of temporary memory for each part
  377. is the lower value of 4*n and 16k. Direction can be either
  378. kFFTDirection_Forward or kFFTDirection_Inverse.
  379. -------------------------------------------------------------------------------
  380. */
  381. /*
  382. * fft_zrip()
  383. *
  384. * Availability:
  385. * Non-Carbon CFM: in vecLib 1.0 and later
  386. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  387. * Mac OS X: in version 10.0 and later
  388. */
  389. EXTERN_API_C( void )
  390. fft_zrip(
  391. FFTSetup setup,
  392. DSPSplitComplex * ioData,
  393. SInt32 stride,
  394. UInt32 log2n,
  395. FFTDirection direction);
  396. /*
  397. * fft_zript()
  398. *
  399. * Availability:
  400. * Non-Carbon CFM: in vecLib 1.0 and later
  401. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  402. * Mac OS X: in version 10.0 and later
  403. */
  404. EXTERN_API_C( void )
  405. fft_zript(
  406. FFTSetup setup,
  407. DSPSplitComplex * ioData,
  408. SInt32 stride,
  409. DSPSplitComplex * bufferTemp,
  410. UInt32 log2n,
  411. FFTDirection direction);
  412. /*
  413. * fft_zripD()
  414. *
  415. * Availability:
  416. * Non-Carbon CFM: not available
  417. * CarbonLib: not available
  418. * Mac OS X: in version 10.2 and later
  419. */
  420. EXTERN_API_C( void )
  421. fft_zripD(
  422. FFTSetupD setup,
  423. DSPDoubleSplitComplex * ioData,
  424. SInt32 stride,
  425. UInt32 log2n,
  426. FFTDirection flag);
  427. /*
  428. * fft_zriptD()
  429. *
  430. * Availability:
  431. * Non-Carbon CFM: not available
  432. * CarbonLib: not available
  433. * Mac OS X: in version 10.2 and later
  434. */
  435. EXTERN_API_C( void )
  436. fft_zriptD(
  437. FFTSetupD setup,
  438. DSPDoubleSplitComplex * ioData,
  439. SInt32 stride,
  440. DSPDoubleSplitComplex * bufferTemp,
  441. UInt32 log2n,
  442. SInt32 flag);
  443. /*
  444. -------------------------------------------------------------------------------
  445. Functions fft_zrop and fft_zropt
  446. fft_zropD and fft_zroptD
  447. Out-of-Place Real Fourier Transform with or without temporary memory,
  448. split Complex Format
  449. Criteria to invoke PowerPC vector code:
  450. 1. signal.realp and signal.imagp must be 16-byte aligned.
  451. 2. signalStride = 1
  452. 3. result.realp and result.imagp must be be 16-byte aligned.
  453. 4. strideResult = 1
  454. 5. 3 <= log2n <= 13
  455. If any of the above criteria are not satisfied, the PowerPC scalar code
  456. implementation will be used. The size of temporary memory for each part
  457. is the lower value of 4*n and 16k. Direction can be either
  458. kFFTDirection_Forward or kFFTDirection_Inverse.
  459. -------------------------------------------------------------------------------
  460. */
  461. /*
  462. * fft_zrop()
  463. *
  464. * Availability:
  465. * Non-Carbon CFM: in vecLib 1.0 and later
  466. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  467. * Mac OS X: in version 10.0 and later
  468. */
  469. EXTERN_API_C( void )
  470. fft_zrop(
  471. FFTSetup setup,
  472. DSPSplitComplex * signal,
  473. SInt32 signalStride,
  474. DSPSplitComplex * result,
  475. SInt32 strideResult,
  476. UInt32 log2n,
  477. FFTDirection direction);
  478. /*
  479. * fft_zropt()
  480. *
  481. * Availability:
  482. * Non-Carbon CFM: in vecLib 1.0 and later
  483. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  484. * Mac OS X: in version 10.0 and later
  485. */
  486. EXTERN_API_C( void )
  487. fft_zropt(
  488. FFTSetup setup,
  489. DSPSplitComplex * signal,
  490. SInt32 signalStride,
  491. DSPSplitComplex * result,
  492. SInt32 strideResult,
  493. DSPSplitComplex * bufferTemp,
  494. UInt32 log2n,
  495. FFTDirection direction);
  496. /*
  497. * fft_zropD()
  498. *
  499. * Availability:
  500. * Non-Carbon CFM: not available
  501. * CarbonLib: not available
  502. * Mac OS X: in version 10.2 and later
  503. */
  504. EXTERN_API_C( void )
  505. fft_zropD(
  506. FFTSetupD setup,
  507. DSPDoubleSplitComplex * signal,
  508. SInt32 signalStride,
  509. DSPDoubleSplitComplex * result,
  510. SInt32 strideResult,
  511. UInt32 log2n,
  512. SInt32 flag);
  513. /*
  514. * fft_zroptD()
  515. *
  516. * Availability:
  517. * Non-Carbon CFM: not available
  518. * CarbonLib: not available
  519. * Mac OS X: in version 10.2 and later
  520. */
  521. EXTERN_API_C( void )
  522. fft_zroptD(
  523. FFTSetupD setup,
  524. DSPDoubleSplitComplex * signal,
  525. SInt32 signalStride,
  526. DSPDoubleSplitComplex * result,
  527. SInt32 strideResult,
  528. DSPDoubleSplitComplex * bufferTemp,
  529. UInt32 log2n,
  530. SInt32 flag);
  531. /*
  532. -------------------------------------------------------------------------------
  533. Functions fft2d_zip and fft2d_zipt
  534. fft2d_zipD and fft2d_ziptD
  535. In-place two dimensional Split Complex Fourier Transform with or without
  536. temporary memory
  537. Criteria to invoke PowerPC vector code:
  538. 1. ioData.realp and ioData.imagp must be 16-byte aligned.
  539. 2. strideInRow = 1;
  540. 3. strideInCol must be a multiple of 4
  541. 4. 2 <= log2nInRow <= 12
  542. 5. 2 <= log2nInCol <= 12
  543. 6. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
  544. If any of the above criteria are not satisfied, the PowerPC scalar code
  545. implementation will be used. The size of temporary memory for each part
  546. is the lower value of 4*n and 16k. ( log2n = log2nInRow + log2nInCol )
  547. Direction can be either kFFTDirection_Forward or kFFTDirection_Inverse.
  548. -------------------------------------------------------------------------------
  549. */
  550. /*
  551. * fft2d_zip()
  552. *
  553. * Availability:
  554. * Non-Carbon CFM: in vecLib 1.0 and later
  555. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  556. * Mac OS X: in version 10.0 and later
  557. */
  558. EXTERN_API_C( void )
  559. fft2d_zip(
  560. FFTSetup setup,
  561. DSPSplitComplex * ioData,
  562. SInt32 strideInRow,
  563. SInt32 strideInCol,
  564. UInt32 log2nInCol,
  565. UInt32 log2nInRow,
  566. FFTDirection direction);
  567. /*
  568. * fft2d_zipt()
  569. *
  570. * Availability:
  571. * Non-Carbon CFM: in vecLib 1.0 and later
  572. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  573. * Mac OS X: in version 10.0 and later
  574. */
  575. EXTERN_API_C( void )
  576. fft2d_zipt(
  577. FFTSetup setup,
  578. DSPSplitComplex * ioData,
  579. SInt32 strideInRow,
  580. SInt32 strideInCol,
  581. DSPSplitComplex * bufferTemp,
  582. UInt32 log2nInCol,
  583. UInt32 log2nInRow,
  584. FFTDirection direction);
  585. /*
  586. * fft2d_zipD()
  587. *
  588. * Availability:
  589. * Non-Carbon CFM: not available
  590. * CarbonLib: not available
  591. * Mac OS X: in version 10.2 and later
  592. */
  593. EXTERN_API_C( void )
  594. fft2d_zipD(
  595. FFTSetupD setup,
  596. DSPDoubleSplitComplex * ioData,
  597. SInt32 strideInRow,
  598. SInt32 strideInCol,
  599. UInt32 log2nInCol,
  600. UInt32 log2nInRow,
  601. FFTDirection direction);
  602. /*
  603. * fft2d_ziptD()
  604. *
  605. * Availability:
  606. * Non-Carbon CFM: not available
  607. * CarbonLib: not available
  608. * Mac OS X: in version 10.2 and later
  609. */
  610. EXTERN_API_C( void )
  611. fft2d_ziptD(
  612. FFTSetupD setup,
  613. DSPDoubleSplitComplex * ioData,
  614. SInt32 strideInRow,
  615. SInt32 strideInCol,
  616. DSPDoubleSplitComplex * bufferTemp,
  617. UInt32 log2nInCol,
  618. UInt32 log2nInRow,
  619. FFTDirection direction);
  620. /*
  621. -------------------------------------------------------------------------------
  622. Functions fft2d_zop and fft2d_zopt
  623. fft2d_zopD and fft2d_zoptD
  624. Out-of-Place two dimemsional Split Complex Fourier Transform with or
  625. without temporary memory
  626. Criteria to invoke PowerPC vector code:
  627. 1. signal.realp and signal.imagp must be 16-byte aligned.
  628. 2. signalStrideInRow = 1;
  629. 3. signalStrideInCol must be a multiple of 4
  630. 4. result.realp and result.imagp must be 16-byte aligned.
  631. 5. strideResultInRow = 1;
  632. 6. strideResultInCol must be a multiple of 4
  633. 7. 2 <= log2nInRow <= 12
  634. 8. 2 <= log2nInCol <= 12
  635. 9. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
  636. If any of the above criteria are not satisfied, the PowerPC scalar code
  637. implementation will be used. The size of temporary memory for each part
  638. is the lower value of 4*n and 16k. ( log2n = log2nInRow + log2nInCol )
  639. Direction can be either kFFTDirection_Forward or kFFTDirection_Inverse.
  640. -------------------------------------------------------------------------------
  641. */
  642. /*
  643. * fft2d_zop()
  644. *
  645. * Availability:
  646. * Non-Carbon CFM: in vecLib 1.0 and later
  647. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  648. * Mac OS X: in version 10.0 and later
  649. */
  650. EXTERN_API_C( void )
  651. fft2d_zop(
  652. FFTSetup setup,
  653. DSPSplitComplex * signal,
  654. SInt32 signalStrideInRow,
  655. SInt32 signalStrideInCol,
  656. DSPSplitComplex * result,
  657. SInt32 strideResultInRow,
  658. SInt32 strideResultInCol,
  659. UInt32 log2nInCol,
  660. UInt32 log2nInRow,
  661. SInt32 flag);
  662. /*
  663. * fft2d_zopt()
  664. *
  665. * Availability:
  666. * Non-Carbon CFM: in vecLib 1.0 and later
  667. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  668. * Mac OS X: in version 10.0 and later
  669. */
  670. EXTERN_API_C( void )
  671. fft2d_zopt(
  672. FFTSetup setup,
  673. DSPSplitComplex * signal,
  674. SInt32 signalStrideInRow,
  675. SInt32 signalStrideInCol,
  676. DSPSplitComplex * result,
  677. SInt32 strideResultInRow,
  678. SInt32 strideResultInCol,
  679. DSPSplitComplex * bufferTemp,
  680. UInt32 log2nInCol,
  681. UInt32 log2nInRow,
  682. SInt32 flag);
  683. /*
  684. * fft2d_zopD()
  685. *
  686. * Availability:
  687. * Non-Carbon CFM: not available
  688. * CarbonLib: not available
  689. * Mac OS X: in version 10.2 and later
  690. */
  691. EXTERN_API_C( void )
  692. fft2d_zopD(
  693. FFTSetupD setup,
  694. DSPDoubleSplitComplex * signal,
  695. SInt32 signalStrideInRow,
  696. SInt32 signalStrideInCol,
  697. DSPDoubleSplitComplex * result,
  698. SInt32 strideResultInRow,
  699. SInt32 strideResultInCol,
  700. UInt32 log2nInCol,
  701. UInt32 log2nInRow,
  702. SInt32 flag);
  703. /*
  704. * fft2d_zoptD()
  705. *
  706. * Availability:
  707. * Non-Carbon CFM: not available
  708. * CarbonLib: not available
  709. * Mac OS X: in version 10.2 and later
  710. */
  711. EXTERN_API_C( void )
  712. fft2d_zoptD(
  713. FFTSetupD setup,
  714. DSPDoubleSplitComplex * signal,
  715. SInt32 signalStrideInRow,
  716. SInt32 signalStrideInCol,
  717. DSPDoubleSplitComplex * result,
  718. SInt32 strideResultInRow,
  719. SInt32 strideResultInCol,
  720. DSPDoubleSplitComplex * bufferTemp,
  721. UInt32 log2nInCol,
  722. UInt32 log2nInRow,
  723. SInt32 flag);
  724. /*
  725. -------------------------------------------------------------------------------
  726. Functions fft2d_zrip and fft2d_zript
  727. fft2d_zripD and fft2d_zriptD
  728. In-place two dimensional Real Fourier Transform with or without temporary
  729. memory, Split Complex Format
  730. Criteria to invoke PowerPC vector code:
  731. 1. ioData.realp and ioData.imagp must be 16-byte aligned.
  732. 2. strideInRow = 1;
  733. 3. strideInCol must be a multiple of 4
  734. 4. 3 <= log2nInRow <= 12
  735. 5. 3 <= log2nInCol <= 13
  736. 6. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
  737. If any of the above criteria are not satisfied, the PowerPC scalar code
  738. implementation will be used. The size of temporary memory for each part
  739. is the lower value of 4*n and 16k. ( log2n = log2nInRow + log2nInCol )
  740. Direction can be either kFFTDirection_Forward or kFFTDirection_Inverse.
  741. -------------------------------------------------------------------------------
  742. */
  743. /*
  744. * fft2d_zrip()
  745. *
  746. * Availability:
  747. * Non-Carbon CFM: in vecLib 1.0 and later
  748. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  749. * Mac OS X: in version 10.0 and later
  750. */
  751. EXTERN_API_C( void )
  752. fft2d_zrip(
  753. FFTSetup setup,
  754. DSPSplitComplex * ioData,
  755. SInt32 strideInRow,
  756. SInt32 strideInCol,
  757. UInt32 log2nInCol,
  758. UInt32 log2nInRow,
  759. FFTDirection direction);
  760. /*
  761. * fft2d_zript()
  762. *
  763. * Availability:
  764. * Non-Carbon CFM: in vecLib 1.0 and later
  765. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  766. * Mac OS X: in version 10.0 and later
  767. */
  768. EXTERN_API_C( void )
  769. fft2d_zript(
  770. FFTSetup setup,
  771. DSPSplitComplex * ioData,
  772. SInt32 strideInRow,
  773. SInt32 strideInCol,
  774. DSPSplitComplex * bufferTemp,
  775. UInt32 log2nInCol,
  776. UInt32 log2nInRow,
  777. FFTDirection direction);
  778. /*
  779. * fft2d_zripD()
  780. *
  781. * Availability:
  782. * Non-Carbon CFM: not available
  783. * CarbonLib: not available
  784. * Mac OS X: in version 10.2 and later
  785. */
  786. EXTERN_API_C( void )
  787. fft2d_zripD(
  788. FFTSetupD setup,
  789. DSPDoubleSplitComplex * signal,
  790. SInt32 strideInRow,
  791. SInt32 strideInCol,
  792. UInt32 log2nInCol,
  793. UInt32 log2nInRow,
  794. SInt32 flag);
  795. /*
  796. * fft2d_zriptD()
  797. *
  798. * Availability:
  799. * Non-Carbon CFM: not available
  800. * CarbonLib: not available
  801. * Mac OS X: in version 10.2 and later
  802. */
  803. EXTERN_API_C( void )
  804. fft2d_zriptD(
  805. FFTSetupD setup,
  806. DSPDoubleSplitComplex * signal,
  807. SInt32 strideInRow,
  808. SInt32 strideInCol,
  809. DSPDoubleSplitComplex * bufferTemp,
  810. UInt32 log2nInCol,
  811. UInt32 log2nInRow,
  812. SInt32 flag);
  813. /*
  814. -------------------------------------------------------------------------------
  815. Functions fft2d_zrop and fft2d_zropt
  816. fft2d_zropD and fft2d_zroptD
  817. Out-of-Place Two-Dimemsional Real Fourier Transform with or without
  818. temporary memory, Split Complex Format
  819. Criteria to invoke PowerPC vector code:
  820. 1. signal.realp and signal.imagp must be 16-byte aligned.
  821. 2. signalStrideInRow = 1;
  822. 3. signalStrideInCol must be a multiple of 4
  823. 4. result.realp and result.imagp must be 16-byte aligned.
  824. 5. strideResultInRow = 1;
  825. 6. strideResultInCol must be a multiple of 4
  826. 7. 3 <= log2nInRow <= 12
  827. 8. 3 <= log2nInCol <= 13
  828. 9. bufferTemp.realp and bufferTemp.imagp must be 16-byte aligned.
  829. If any of the above criteria are not satisfied, the PowerPC scalar code
  830. implementation will be used. The size of temporary memory for each part
  831. is the lower value of 4*n and 16k. ( log2n = log2nInRow + log2nInCol )
  832. Direction can be either kFFTDirection_Forward or kFFTDirection_Inverse.
  833. -------------------------------------------------------------------------------
  834. */
  835. /*
  836. * fft2d_zrop()
  837. *
  838. * Availability:
  839. * Non-Carbon CFM: in vecLib 1.0 and later
  840. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  841. * Mac OS X: in version 10.0 and later
  842. */
  843. EXTERN_API_C( void )
  844. fft2d_zrop(
  845. FFTSetup setup,
  846. DSPSplitComplex * signal,
  847. SInt32 signalStrideInRow,
  848. SInt32 signalStrideInCol,
  849. DSPSplitComplex * result,
  850. SInt32 strideResultInRow,
  851. SInt32 strideResultInCol,
  852. UInt32 log2nInCol,
  853. UInt32 log2nInRow,
  854. SInt32 flag);
  855. /*
  856. * fft2d_zropt()
  857. *
  858. * Availability:
  859. * Non-Carbon CFM: in vecLib 1.0 and later
  860. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  861. * Mac OS X: in version 10.0 and later
  862. */
  863. EXTERN_API_C( void )
  864. fft2d_zropt(
  865. FFTSetup setup,
  866. DSPSplitComplex * signal,
  867. SInt32 signalStrideInRow,
  868. SInt32 signalStrideInCol,
  869. DSPSplitComplex * result,
  870. SInt32 strideResultInRow,
  871. SInt32 strideResultInCol,
  872. DSPSplitComplex * bufferTemp,
  873. UInt32 log2nInCol,
  874. UInt32 log2nInRow,
  875. SInt32 flag);
  876. /*
  877. * fft2d_zropD()
  878. *
  879. * Availability:
  880. * Non-Carbon CFM: not available
  881. * CarbonLib: not available
  882. * Mac OS X: in version 10.2 and later
  883. */
  884. EXTERN_API_C( void )
  885. fft2d_zropD(
  886. FFTSetupD setup,
  887. DSPDoubleSplitComplex * ioData,
  888. SInt32 Kr,
  889. SInt32 Kc,
  890. DSPDoubleSplitComplex * ioData2,
  891. SInt32 Ir,
  892. SInt32 Ic,
  893. UInt32 log2nc,
  894. UInt32 log2nr,
  895. SInt32 flag);
  896. /*
  897. * fft2d_zroptD()
  898. *
  899. * Availability:
  900. * Non-Carbon CFM: not available
  901. * CarbonLib: not available
  902. * Mac OS X: in version 10.2 and later
  903. */
  904. EXTERN_API_C( void )
  905. fft2d_zroptD(
  906. FFTSetupD setup,
  907. DSPDoubleSplitComplex * ioData,
  908. SInt32 Kr,
  909. SInt32 Kc,
  910. DSPDoubleSplitComplex * ioData2,
  911. SInt32 Ir,
  912. SInt32 Ic,
  913. DSPDoubleSplitComplex * temp,
  914. UInt32 log2nc,
  915. UInt32 log2nr,
  916. SInt32 flag);
  917. /*
  918. ________________________________________________________________________________
  919. Functions fftm_zip and fftm_zipt
  920. fftm_zipD and fftm_ziptD
  921. In-Place multiple One_Dimensional Complex Fourier Transform with or
  922. without temporary memory, Split Complex Format
  923. Criteria to invoke PowerPC vector code:
  924. 1. signal.realp and signal.imagp must be 16-byte aligned.
  925. 2. signalStride = 1;
  926. 3. fftStride must be a multiple of 4
  927. 4. 2 <= log2n <= 12
  928. 5. temp.realp and temp.imagp must be 16-byte aligned.
  929. If any of the above criteria are not satisfied, the PowerPC scalar code
  930. implementation will be used.
  931. ________________________________________________________________________________
  932. */
  933. /*
  934. * fftm_zip()
  935. *
  936. * Availability:
  937. * Non-Carbon CFM: not available
  938. * CarbonLib: not available
  939. * Mac OS X: in version 10.2 and later
  940. */
  941. EXTERN_API_C( void )
  942. fftm_zip(
  943. FFTSetup setup,
  944. DSPSplitComplex * signal,
  945. SInt32 signalStride,
  946. SInt32 fftStride,
  947. UInt32 log2n,
  948. UInt32 numFFT,
  949. SInt32 flag);
  950. /*
  951. * fftm_zipt()
  952. *
  953. * Availability:
  954. * Non-Carbon CFM: not available
  955. * CarbonLib: not available
  956. * Mac OS X: in version 10.2 and later
  957. */
  958. EXTERN_API_C( void )
  959. fftm_zipt(
  960. FFTSetup setup,
  961. DSPSplitComplex * signal,
  962. SInt32 signalStride,
  963. SInt32 fftStride,
  964. DSPSplitComplex * temp,
  965. UInt32 log2n,
  966. UInt32 numFFT,
  967. SInt32 flag);
  968. /*
  969. * fftm_zipD()
  970. *
  971. * Availability:
  972. * Non-Carbon CFM: not available
  973. * CarbonLib: not available
  974. * Mac OS X: in version 10.2 and later
  975. */
  976. EXTERN_API_C( void )
  977. fftm_zipD(
  978. FFTSetupD setup,
  979. DSPDoubleSplitComplex * signal,
  980. SInt32 signalStride,
  981. SInt32 fftStride,
  982. UInt32 log2n,
  983. UInt32 numFFT,
  984. SInt32 flag);
  985. /*
  986. * fftm_ziptD()
  987. *
  988. * Availability:
  989. * Non-Carbon CFM: not available
  990. * CarbonLib: not available
  991. * Mac OS X: in version 10.2 and later
  992. */
  993. EXTERN_API_C( void )
  994. fftm_ziptD(
  995. FFTSetupD setup,
  996. DSPDoubleSplitComplex * signal,
  997. SInt32 signalStride,
  998. SInt32 fftStride,
  999. DSPDoubleSplitComplex * temp,
  1000. UInt32 log2n,
  1001. UInt32 numFFT,
  1002. SInt32 flag);
  1003. /*
  1004. ________________________________________________________________________________
  1005. Functions fftm_zop and fftm_zopt
  1006. fftm_zopD and fftm_zoptD
  1007. Out-Of-Place multiple One_Dimensional Complex Fourier Transform with or
  1008. without temporary memory, Split Complex Format
  1009. Criteria to invoke PowerPC vector code:
  1010. 1. signal.realp and signal.imagp must be 16-byte aligned.
  1011. 2. signalStride = 1;
  1012. 3. fftStride must be a multiple of 4
  1013. 4. result.realp and result.imagp must be 16-byte aligned.
  1014. 5. resultStride = 1;
  1015. 6. rfftStride must be a multiple of 4
  1016. 7. 2 <= log2n <= 12
  1017. 8. temp.realp and temp.imagp must be 16-byte aligned.
  1018. If any of the above criteria are not satisfied, the PowerPC scalar code
  1019. implementation will be used.
  1020. ________________________________________________________________________________
  1021. */
  1022. /*
  1023. * fftm_zop()
  1024. *
  1025. * Availability:
  1026. * Non-Carbon CFM: not available
  1027. * CarbonLib: not available
  1028. * Mac OS X: in version 10.2 and later
  1029. */
  1030. EXTERN_API_C( void )
  1031. fftm_zop(
  1032. FFTSetup setup,
  1033. DSPSplitComplex * signal,
  1034. SInt32 signalStride,
  1035. SInt32 fftStride,
  1036. DSPSplitComplex * result,
  1037. SInt32 resultStride,
  1038. SInt32 rfftStride,
  1039. UInt32 log2n,
  1040. UInt32 numFFT,
  1041. SInt32 flag);
  1042. /*
  1043. * fftm_zopt()
  1044. *
  1045. * Availability:
  1046. * Non-Carbon CFM: not available
  1047. * CarbonLib: not available
  1048. * Mac OS X: in version 10.2 and later
  1049. */
  1050. EXTERN_API_C( void )
  1051. fftm_zopt(
  1052. FFTSetup setup,
  1053. DSPSplitComplex * signal,
  1054. SInt32 signalStride,
  1055. SInt32 fftStride,
  1056. DSPSplitComplex * result,
  1057. SInt32 resultStride,
  1058. SInt32 rfftStride,
  1059. DSPSplitComplex * temp,
  1060. UInt32 log2n,
  1061. UInt32 numFFT,
  1062. SInt32 flag);
  1063. /*
  1064. * fftm_zopD()
  1065. *
  1066. * Availability:
  1067. * Non-Carbon CFM: not available
  1068. * CarbonLib: not available
  1069. * Mac OS X: in version 10.2 and later
  1070. */
  1071. EXTERN_API_C( void )
  1072. fftm_zopD(
  1073. FFTSetupD setup,
  1074. DSPDoubleSplitComplex * signal,
  1075. SInt32 signalStride,
  1076. SInt32 fftStride,
  1077. DSPDoubleSplitComplex * result,
  1078. SInt32 resultStride,
  1079. SInt32 rfftStride,
  1080. UInt32 log2n,
  1081. UInt32 numFFT,
  1082. SInt32 flag);
  1083. /*
  1084. * fftm_zoptD()
  1085. *
  1086. * Availability:
  1087. * Non-Carbon CFM: not available
  1088. * CarbonLib: not available
  1089. * Mac OS X: in version 10.2 and later
  1090. */
  1091. EXTERN_API_C( void )
  1092. fftm_zoptD(
  1093. FFTSetupD setup,
  1094. DSPDoubleSplitComplex * signal,
  1095. SInt32 signalStride,
  1096. SInt32 fftStride,
  1097. DSPDoubleSplitComplex * result,
  1098. SInt32 resultStride,
  1099. SInt32 rfftStride,
  1100. DSPDoubleSplitComplex * temp,
  1101. UInt32 log2n,
  1102. UInt32 numFFT,
  1103. SInt32 flag);
  1104. /*
  1105. ________________________________________________________________________________
  1106. Functions fftm_zrip and fftm_zript
  1107. fftm_zripD and fftm_zriptD
  1108. In-Place multiple One_Dimensional Real Fourier Transform with or
  1109. without temporary memory, Split Complex Format
  1110. Criteria to invoke PowerPC vector code:
  1111. 1. signal.realp and signal.imagp must be 16-byte aligned.
  1112. 2. signalStride = 1;
  1113. 3. fftStride must be a multiple of 4
  1114. 4. 3 <= log2n <= 13
  1115. 5. temp.realp and temp.imagp must be 16-byte aligned.
  1116. If any of the above criteria are not satisfied, the PowerPC scalar code
  1117. implementation will be used.
  1118. ________________________________________________________________________________
  1119. */
  1120. /*
  1121. * fftm_zrip()
  1122. *
  1123. * Availability:
  1124. * Non-Carbon CFM: not available
  1125. * CarbonLib: not available
  1126. * Mac OS X: in version 10.2 and later
  1127. */
  1128. EXTERN_API_C( void )
  1129. fftm_zrip(
  1130. FFTSetup setup,
  1131. DSPSplitComplex * signal,
  1132. SInt32 signalStride,
  1133. SInt32 fftStride,
  1134. UInt32 log2n,
  1135. UInt32 numFFT,
  1136. SInt32 flag);
  1137. /*
  1138. * fftm_zript()
  1139. *
  1140. * Availability:
  1141. * Non-Carbon CFM: not available
  1142. * CarbonLib: not available
  1143. * Mac OS X: in version 10.2 and later
  1144. */
  1145. EXTERN_API_C( void )
  1146. fftm_zript(
  1147. FFTSetup setup,
  1148. DSPSplitComplex * signal,
  1149. SInt32 signalStride,
  1150. SInt32 fftStride,
  1151. DSPSplitComplex * temp,
  1152. UInt32 log2n,
  1153. UInt32 numFFT,
  1154. SInt32 flag);
  1155. /*
  1156. * fftm_zripD()
  1157. *
  1158. * Availability:
  1159. * Non-Carbon CFM: not available
  1160. * CarbonLib: not available
  1161. * Mac OS X: in version 10.2 and later
  1162. */
  1163. EXTERN_API_C( void )
  1164. fftm_zripD(
  1165. FFTSetupD setup,
  1166. DSPDoubleSplitComplex * signal,
  1167. SInt32 signalStride,
  1168. SInt32 fftStride,
  1169. UInt32 log2n,
  1170. UInt32 numFFT,
  1171. SInt32 flag);
  1172. /*
  1173. * fftm_zriptD()
  1174. *
  1175. * Availability:
  1176. * Non-Carbon CFM: not available
  1177. * CarbonLib: not available
  1178. * Mac OS X: in version 10.2 and later
  1179. */
  1180. EXTERN_API_C( void )
  1181. fftm_zriptD(
  1182. FFTSetupD setup,
  1183. DSPDoubleSplitComplex * signal,
  1184. SInt32 signalStride,
  1185. SInt32 fftStride,
  1186. DSPDoubleSplitComplex * temp,
  1187. UInt32 log2n,
  1188. UInt32 numFFT,
  1189. SInt32 flag);
  1190. /*
  1191. ________________________________________________________________________________
  1192. Functions fftm_zrop and fftm_zropt
  1193. fftm_zropD and fftm_zroptD
  1194. Out-Of-Place multiple One_Dimensional Real Fourier Transform with or
  1195. without temporary memory, Split Complex Format
  1196. Criteria to invoke PowerPC vector code:
  1197. 1. signal.realp and signal.imagp must be 16-byte aligned.
  1198. 2. signalStride = 1;
  1199. 3. fftStride must be a multiple of 4
  1200. 4. result.realp and result.imagp must be 16-byte aligned.
  1201. 5. resultStride = 1;
  1202. 6. rfftStride must be a multiple of 4
  1203. 7. 3 <= log2n <= 13
  1204. 8. temp.realp and temp.imagp must be 16-byte aligned.
  1205. If any of the above criteria are not satisfied, the PowerPC scalar code
  1206. implementation will be used.
  1207. ________________________________________________________________________________
  1208. */
  1209. /*
  1210. * fftm_zrop()
  1211. *
  1212. * Availability:
  1213. * Non-Carbon CFM: not available
  1214. * CarbonLib: not available
  1215. * Mac OS X: in version 10.2 and later
  1216. */
  1217. EXTERN_API_C( void )
  1218. fftm_zrop(
  1219. FFTSetup setup,
  1220. DSPSplitComplex * signal,
  1221. SInt32 signalStride,
  1222. SInt32 fftStride,
  1223. DSPSplitComplex * result,
  1224. SInt32 resultStride,
  1225. SInt32 rfftStride,
  1226. UInt32 log2n,
  1227. UInt32 numFFT,
  1228. SInt32 flag);
  1229. /*
  1230. * fftm_zropt()
  1231. *
  1232. * Availability:
  1233. * Non-Carbon CFM: not available
  1234. * CarbonLib: not available
  1235. * Mac OS X: in version 10.2 and later
  1236. */
  1237. EXTERN_API_C( void )
  1238. fftm_zropt(
  1239. FFTSetup setup,
  1240. DSPSplitComplex * signal,
  1241. SInt32 signalStride,
  1242. SInt32 fftStride,
  1243. DSPSplitComplex * result,
  1244. SInt32 resultStride,
  1245. SInt32 rfftStride,
  1246. DSPSplitComplex * temp,
  1247. UInt32 log2n,
  1248. UInt32 numFFT,
  1249. SInt32 flag);
  1250. /*
  1251. * fftm_zropD()
  1252. *
  1253. * Availability:
  1254. * Non-Carbon CFM: not available
  1255. * CarbonLib: not available
  1256. * Mac OS X: in version 10.2 and later
  1257. */
  1258. EXTERN_API_C( void )
  1259. fftm_zropD(
  1260. FFTSetupD setup,
  1261. DSPDoubleSplitComplex * signal,
  1262. SInt32 signalStride,
  1263. SInt32 fftStride,
  1264. DSPDoubleSplitComplex * result,
  1265. SInt32 resultStride,
  1266. SInt32 rfftStride,
  1267. UInt32 log2n,
  1268. UInt32 numFFT,
  1269. SInt32 flag);
  1270. /*
  1271. * fftm_zroptD()
  1272. *
  1273. * Availability:
  1274. * Non-Carbon CFM: not available
  1275. * CarbonLib: not available
  1276. * Mac OS X: in version 10.2 and later
  1277. */
  1278. EXTERN_API_C( void )
  1279. fftm_zroptD(
  1280. FFTSetupD setup,
  1281. DSPDoubleSplitComplex * signal,
  1282. SInt32 signalStride,
  1283. SInt32 fftStride,
  1284. DSPDoubleSplitComplex * result,
  1285. SInt32 resultStride,
  1286. SInt32 rfftStride,
  1287. DSPDoubleSplitComplex * temp,
  1288. UInt32 log2n,
  1289. UInt32 numFFT,
  1290. SInt32 flag);
  1291. /*
  1292. ________________________________________________________________________________
  1293. Functions fft3_zop and fft5_zop
  1294. fft3_zopD and fft5_zopD
  1295. Out-Of-Place One_Dimensional Complex Fourier Transform in base-3 and
  1296. base-5 with or without temporary memory, Split Complex Format
  1297. Criteria to invoke PowerPC vector code:
  1298. 1. signal.realp and signal.imagp must be 16-byte aligned.
  1299. 2. signalStride = 1;
  1300. 3. result.realp and result.imagp must be 16-byte aligned.
  1301. 4. resultStride = 1;
  1302. 5. 3 <= log2n
  1303. If any of the above criteria are not satisfied, the PowerPC scalar code
  1304. implementation will be used.
  1305. ________________________________________________________________________________
  1306. */
  1307. /*
  1308. * fft3_zop()
  1309. *
  1310. * Availability:
  1311. * Non-Carbon CFM: not available
  1312. * CarbonLib: not available
  1313. * Mac OS X: in version 10.2 and later
  1314. */
  1315. EXTERN_API_C( void )
  1316. fft3_zop(
  1317. FFTSetup setup,
  1318. DSPSplitComplex * signal,
  1319. SInt32 signalStride,
  1320. DSPSplitComplex * result,
  1321. SInt32 resultStride,
  1322. UInt32 log2n,
  1323. SInt32 flag);
  1324. /*
  1325. * fft5_zop()
  1326. *
  1327. * Availability:
  1328. * Non-Carbon CFM: not available
  1329. * CarbonLib: not available
  1330. * Mac OS X: in version 10.2 and later
  1331. */
  1332. EXTERN_API_C( void )
  1333. fft5_zop(
  1334. FFTSetup setup,
  1335. DSPSplitComplex * signal,
  1336. SInt32 signalStride,
  1337. DSPSplitComplex * result,
  1338. SInt32 resultStride,
  1339. UInt32 log2n,
  1340. SInt32 flag);
  1341. /*
  1342. * fft3_zopD()
  1343. *
  1344. * Availability:
  1345. * Non-Carbon CFM: not available
  1346. * CarbonLib: not available
  1347. * Mac OS X: in version 10.2 and later
  1348. */
  1349. EXTERN_API_C( void )
  1350. fft3_zopD(
  1351. FFTSetupD setup,
  1352. DSPDoubleSplitComplex * ioData,
  1353. SInt32 K,
  1354. DSPDoubleSplitComplex * ioData2,
  1355. SInt32 L,
  1356. UInt32 log2n,
  1357. SInt32 flag);
  1358. /*
  1359. * fft5_zopD()
  1360. *
  1361. * Availability:
  1362. * Non-Carbon CFM: not available
  1363. * CarbonLib: not available
  1364. * Mac OS X: in version 10.2 and later
  1365. */
  1366. EXTERN_API_C( void )
  1367. fft5_zopD(
  1368. FFTSetupD setup,
  1369. DSPDoubleSplitComplex * ioData,
  1370. SInt32 K,
  1371. DSPDoubleSplitComplex * ioData2,
  1372. SInt32 L,
  1373. UInt32 log2n,
  1374. SInt32 flag);
  1375. /*
  1376. -------------------------------------------------------------------------------
  1377. Function conv
  1378. convD
  1379. Floating Point Convolution and Correlation in Single and Double Precision
  1380. Criteria to invoke PowerPC vector code:
  1381. 1. signal and result must have relative alignement.
  1382. 2. 4 <= lenFilter <= 256
  1383. 3. lenResult > 36
  1384. 4. signalStride = 1
  1385. 5. strideResult = 1
  1386. If any of the above criteria are not satisfied, the PowerPC scalar code
  1387. implementation will be used. strideFilter can be positive for
  1388. correlation or negative for convolution.
  1389. -------------------------------------------------------------------------------
  1390. */
  1391. /*
  1392. * conv()
  1393. *
  1394. * Availability:
  1395. * Non-Carbon CFM: in vecLib 1.0 and later
  1396. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  1397. * Mac OS X: in version 10.0 and later
  1398. */
  1399. EXTERN_API_C( void )
  1400. conv(
  1401. const float signal[],
  1402. SInt32 signalStride,
  1403. const float filter[],
  1404. SInt32 strideFilter,
  1405. float result[],
  1406. SInt32 strideResult,
  1407. SInt32 lenResult,
  1408. SInt32 lenFilter);
  1409. /*
  1410. * convD()
  1411. *
  1412. * Availability:
  1413. * Non-Carbon CFM: not available
  1414. * CarbonLib: not available
  1415. * Mac OS X: in version 10.2 and later
  1416. */
  1417. EXTERN_API_C( void )
  1418. convD(
  1419. const double signal[],
  1420. SInt32 signalStride,
  1421. const double filter[],
  1422. SInt32 strideFilter,
  1423. double result[],
  1424. SInt32 strideResult,
  1425. SInt32 lenResult,
  1426. SInt32 lenFilter);
  1427. /*
  1428. _______________________________________________________________________________
  1429. Functions f3x3, f5x5, and imgfir
  1430. f3x3D, f5x5D and imgfirD
  1431. Filter, 3x3, 5x5, MxN Single and Double Precision Convolution
  1432. Criteria to invoke PowerPC vector code:
  1433. 1. signal, filter, and result must have relative alignment and
  1434. be 16-byte aligned.
  1435. 2. for f3x3, NC >= 18
  1436. 3. for f5x5, NC >= 20
  1437. 4. for imgfir, NC >= 20
  1438. If any of the above criteria are not satisfied, the PowerPC scalar code
  1439. implementation will be used.
  1440. _______________________________________________________________________________
  1441. */
  1442. /*
  1443. * f3x3()
  1444. *
  1445. * Availability:
  1446. * Non-Carbon CFM: not available
  1447. * CarbonLib: not available
  1448. * Mac OS X: in version 10.2 and later
  1449. */
  1450. EXTERN_API_C( void )
  1451. f3x3(
  1452. float * signal,
  1453. SInt32 rowStride,
  1454. SInt32 colStride,
  1455. float * filter,
  1456. float * result);
  1457. /*
  1458. * f3x3D()
  1459. *
  1460. * Availability:
  1461. * Non-Carbon CFM: not available
  1462. * CarbonLib: not available
  1463. * Mac OS X: in version 10.2 and later
  1464. */
  1465. EXTERN_API_C( void )
  1466. f3x3D(
  1467. double * signal,
  1468. SInt32 rowStride,
  1469. SInt32 colStride,
  1470. double * filter,
  1471. double * result);
  1472. /*
  1473. * f5x5()
  1474. *
  1475. * Availability:
  1476. * Non-Carbon CFM: not available
  1477. * CarbonLib: not available
  1478. * Mac OS X: in version 10.2 and later
  1479. */
  1480. EXTERN_API_C( void )
  1481. f5x5(
  1482. float * signal,
  1483. SInt32 rowStride,
  1484. SInt32 colStride,
  1485. float * filter,
  1486. float * result);
  1487. /*
  1488. * f5x5D()
  1489. *
  1490. * Availability:
  1491. * Non-Carbon CFM: not available
  1492. * CarbonLib: not available
  1493. * Mac OS X: in version 10.2 and later
  1494. */
  1495. EXTERN_API_C( void )
  1496. f5x5D(
  1497. double * signal,
  1498. SInt32 rowStride,
  1499. SInt32 colStride,
  1500. double * filter,
  1501. double * result);
  1502. /*
  1503. * imgfir()
  1504. *
  1505. * Availability:
  1506. * Non-Carbon CFM: not available
  1507. * CarbonLib: not available
  1508. * Mac OS X: in version 10.2 and later
  1509. */
  1510. EXTERN_API_C( void )
  1511. imgfir(
  1512. float * signal,
  1513. SInt32 numRow,
  1514. SInt32 numCol,
  1515. float * filter,
  1516. float * result,
  1517. SInt32 fnumRow,
  1518. SInt32 fnumCol);
  1519. /*
  1520. * imgfirD()
  1521. *
  1522. * Availability:
  1523. * Non-Carbon CFM: not available
  1524. * CarbonLib: not available
  1525. * Mac OS X: in version 10.2 and later
  1526. */
  1527. EXTERN_API_C( void )
  1528. imgfirD(
  1529. double * signal,
  1530. SInt32 numRow,
  1531. SInt32 numCol,
  1532. double * filter,
  1533. double * result,
  1534. SInt32 fnumRow,
  1535. SInt32 fnumCol);
  1536. /*
  1537. _______________________________________________________________________________
  1538. Function mtrans
  1539. mtransD
  1540. Single and Double Precision Matrix Transpose
  1541. Criteria to invoke PowerPC vector code:
  1542. 1. a = c
  1543. 2. a and c must be 16-byte aligned.
  1544. 3. M must be a multiple of 8.
  1545. If any of the above criteria are not satisfied, the PowerPC scalar code
  1546. implementation will be used.
  1547. _______________________________________________________________________________
  1548. */
  1549. /*
  1550. * mtrans()
  1551. *
  1552. * Availability:
  1553. * Non-Carbon CFM: not available
  1554. * CarbonLib: not available
  1555. * Mac OS X: in version 10.2 and later
  1556. */
  1557. EXTERN_API_C( void )
  1558. mtrans(
  1559. float * a,
  1560. SInt32 aStride,
  1561. float * c,
  1562. SInt32 cStride,
  1563. SInt32 M,
  1564. SInt32 N);
  1565. /*
  1566. * mtransD()
  1567. *
  1568. * Availability:
  1569. * Non-Carbon CFM: not available
  1570. * CarbonLib: not available
  1571. * Mac OS X: in version 10.2 and later
  1572. */
  1573. EXTERN_API_C( void )
  1574. mtransD(
  1575. double * a,
  1576. SInt32 aStride,
  1577. double * c,
  1578. SInt32 cStride,
  1579. SInt32 M,
  1580. SInt32 N);
  1581. /*
  1582. _______________________________________________________________________________
  1583. Function mmul
  1584. mmulD
  1585. Single and Double Precision Matrix Multiply
  1586. Criteria to invoke PowerPC vector code:
  1587. 1. a, b, c must be 16-byte aligned.
  1588. 2. M >= 8.
  1589. 3. N >= 32.
  1590. 4. P is a multiple of 8.
  1591. If any of the above criteria are not satisfied, the PowerPC scalar code
  1592. implementation will be used.
  1593. _______________________________________________________________________________
  1594. */
  1595. /*
  1596. * mmul()
  1597. *
  1598. * Availability:
  1599. * Non-Carbon CFM: not available
  1600. * CarbonLib: not available
  1601. * Mac OS X: in version 10.2 and later
  1602. */
  1603. EXTERN_API_C( void )
  1604. mmul(
  1605. float * a,
  1606. SInt32 aStride,
  1607. float * b,
  1608. SInt32 bStride,
  1609. float * c,
  1610. SInt32 cStride,
  1611. SInt32 M,
  1612. SInt32 N,
  1613. SInt32 P);
  1614. /*
  1615. * mmulD()
  1616. *
  1617. * Availability:
  1618. * Non-Carbon CFM: not available
  1619. * CarbonLib: not available
  1620. * Mac OS X: in version 10.2 and later
  1621. */
  1622. EXTERN_API_C( void )
  1623. mmulD(
  1624. double * a,
  1625. SInt32 aStride,
  1626. double * b,
  1627. SInt32 bStride,
  1628. double * c,
  1629. SInt32 cStride,
  1630. SInt32 M,
  1631. SInt32 N,
  1632. SInt32 P);
  1633. /*
  1634. _______________________________________________________________________________
  1635. Function zmma, zmms, zmsm, and zmmul
  1636. zmmaD, zmmsD, zmsmD, and zmmulD
  1637. Single and Double Precision Complex Split Matrix mul/add, mul/sub, sub/mul,
  1638. and mul
  1639. Criteria to invoke PowerPC vector code:
  1640. 1. a, b, c, and d must be 16-byte aligned.
  1641. 2. N is a multiple of 4.
  1642. 3. P is a multiple of 4.
  1643. 4. I, J, K, L = 1;
  1644. If any of the above criteria are not satisfied, the PowerPC scalar code
  1645. implementation will be used.
  1646. _______________________________________________________________________________
  1647. */
  1648. /*
  1649. * zmma()
  1650. *
  1651. * Availability:
  1652. * Non-Carbon CFM: not available
  1653. * CarbonLib: not available
  1654. * Mac OS X: in version 10.2 and later
  1655. */
  1656. EXTERN_API_C( void )
  1657. zmma(
  1658. DSPSplitComplex * a,
  1659. SInt32 i,
  1660. DSPSplitComplex * b,
  1661. SInt32 j,
  1662. DSPSplitComplex * c,
  1663. SInt32 k,
  1664. DSPSplitComplex * d,
  1665. SInt32 l,
  1666. SInt32 M,
  1667. SInt32 N,
  1668. SInt32 P);
  1669. /*
  1670. * zmmaD()
  1671. *
  1672. * Availability:
  1673. * Non-Carbon CFM: not available
  1674. * CarbonLib: not available
  1675. * Mac OS X: in version 10.2 and later
  1676. */
  1677. EXTERN_API_C( void )
  1678. zmmaD(
  1679. DSPDoubleSplitComplex * a,
  1680. SInt32 i,
  1681. DSPDoubleSplitComplex * b,
  1682. SInt32 j,
  1683. DSPDoubleSplitComplex * c,
  1684. SInt32 k,
  1685. DSPDoubleSplitComplex * d,
  1686. SInt32 l,
  1687. SInt32 M,
  1688. SInt32 N,
  1689. SInt32 P);
  1690. /*
  1691. * zmms()
  1692. *
  1693. * Availability:
  1694. * Non-Carbon CFM: not available
  1695. * CarbonLib: not available
  1696. * Mac OS X: in version 10.2 and later
  1697. */
  1698. EXTERN_API_C( void )
  1699. zmms(
  1700. DSPSplitComplex * a,
  1701. SInt32 i,
  1702. DSPSplitComplex * b,
  1703. SInt32 j,
  1704. DSPSplitComplex * c,
  1705. SInt32 k,
  1706. DSPSplitComplex * d,
  1707. SInt32 l,
  1708. SInt32 M,
  1709. SInt32 N,
  1710. SInt32 P);
  1711. /*
  1712. * zmmsD()
  1713. *
  1714. * Availability:
  1715. * Non-Carbon CFM: not available
  1716. * CarbonLib: not available
  1717. * Mac OS X: in version 10.2 and later
  1718. */
  1719. EXTERN_API_C( void )
  1720. zmmsD(
  1721. DSPDoubleSplitComplex * a,
  1722. SInt32 i,
  1723. DSPDoubleSplitComplex * b,
  1724. SInt32 j,
  1725. DSPDoubleSplitComplex * c,
  1726. SInt32 k,
  1727. DSPDoubleSplitComplex * d,
  1728. SInt32 l,
  1729. SInt32 M,
  1730. SInt32 N,
  1731. SInt32 P);
  1732. /*
  1733. * zmsm()
  1734. *
  1735. * Availability:
  1736. * Non-Carbon CFM: not available
  1737. * CarbonLib: not available
  1738. * Mac OS X: in version 10.2 and later
  1739. */
  1740. EXTERN_API_C( void )
  1741. zmsm(
  1742. DSPSplitComplex * a,
  1743. SInt32 i,
  1744. DSPSplitComplex * b,
  1745. SInt32 j,
  1746. DSPSplitComplex * c,
  1747. SInt32 k,
  1748. DSPSplitComplex * d,
  1749. SInt32 l,
  1750. SInt32 M,
  1751. SInt32 N,
  1752. SInt32 P);
  1753. /*
  1754. * zmsmD()
  1755. *
  1756. * Availability:
  1757. * Non-Carbon CFM: not available
  1758. * CarbonLib: not available
  1759. * Mac OS X: in version 10.2 and later
  1760. */
  1761. EXTERN_API_C( void )
  1762. zmsmD(
  1763. DSPDoubleSplitComplex * a,
  1764. SInt32 i,
  1765. DSPDoubleSplitComplex * b,
  1766. SInt32 j,
  1767. DSPDoubleSplitComplex * c,
  1768. SInt32 k,
  1769. DSPDoubleSplitComplex * d,
  1770. SInt32 l,
  1771. SInt32 M,
  1772. SInt32 N,
  1773. SInt32 P);
  1774. /*
  1775. * zmmul()
  1776. *
  1777. * Availability:
  1778. * Non-Carbon CFM: not available
  1779. * CarbonLib: not available
  1780. * Mac OS X: in version 10.2 and later
  1781. */
  1782. EXTERN_API_C( void )
  1783. zmmul(
  1784. DSPSplitComplex * a,
  1785. SInt32 i,
  1786. DSPSplitComplex * b,
  1787. SInt32 j,
  1788. DSPSplitComplex * c,
  1789. SInt32 k,
  1790. SInt32 M,
  1791. SInt32 N,
  1792. SInt32 P);
  1793. /*
  1794. * zmmulD()
  1795. *
  1796. * Availability:
  1797. * Non-Carbon CFM: not available
  1798. * CarbonLib: not available
  1799. * Mac OS X: in version 10.2 and later
  1800. */
  1801. EXTERN_API_C( void )
  1802. zmmulD(
  1803. DSPDoubleSplitComplex * a,
  1804. SInt32 i,
  1805. DSPDoubleSplitComplex * b,
  1806. SInt32 j,
  1807. DSPDoubleSplitComplex * c,
  1808. SInt32 k,
  1809. SInt32 M,
  1810. SInt32 N,
  1811. SInt32 P);
  1812. /*
  1813. -------------------------------------------------------------------------------
  1814. Function vadd
  1815. vaddD
  1816. Floating Point Add in Single and Double Precision
  1817. Criteria to invoke PowerPC vector code:
  1818. 1. input1 and input2 and result are all relatively aligned.
  1819. 2. size >= 8
  1820. 3. stride1 = 1
  1821. 4. stride2 = 1
  1822. 5. strideResult = 1
  1823. If any of the above criteria are not satisfied, the PowerPC scalar code
  1824. implementation will be used.
  1825. -------------------------------------------------------------------------------
  1826. */
  1827. /*
  1828. * vadd()
  1829. *
  1830. * Availability:
  1831. * Non-Carbon CFM: in vecLib 1.0 and later
  1832. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  1833. * Mac OS X: in version 10.0 and later
  1834. */
  1835. EXTERN_API_C( void )
  1836. vadd(
  1837. const float input1[],
  1838. SInt32 stride1,
  1839. const float input2[],
  1840. SInt32 stride2,
  1841. float result[],
  1842. SInt32 strideResult,
  1843. UInt32 size);
  1844. /*
  1845. * vaddD()
  1846. *
  1847. * Availability:
  1848. * Non-Carbon CFM: not available
  1849. * CarbonLib: not available
  1850. * Mac OS X: in version 10.2 and later
  1851. */
  1852. EXTERN_API_C( void )
  1853. vaddD(
  1854. const double input1[],
  1855. SInt32 stride1,
  1856. const double input2[],
  1857. SInt32 stride2,
  1858. double result[],
  1859. SInt32 strideResult,
  1860. UInt32 size);
  1861. /*
  1862. -------------------------------------------------------------------------------
  1863. Function vsub
  1864. vsubD
  1865. Floating Point Substract in Single and Double Precision
  1866. Criteria to invoke PowerPC vector code:
  1867. 1. input1 and input2 and result are all relatively aligned.
  1868. 2. size >= 8
  1869. 3. stride1 = 1
  1870. 4. stride2 = 1
  1871. 5. strideResult = 1
  1872. If any of the above criteria are not satisfied, the PowerPC scalar code
  1873. implementation will be used.
  1874. -------------------------------------------------------------------------------
  1875. */
  1876. /*
  1877. * vsub()
  1878. *
  1879. * Availability:
  1880. * Non-Carbon CFM: in vecLib 1.0 and later
  1881. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  1882. * Mac OS X: in version 10.0 and later
  1883. */
  1884. EXTERN_API_C( void )
  1885. vsub(
  1886. const float input1[],
  1887. SInt32 stride1,
  1888. const float input2[],
  1889. SInt32 stride2,
  1890. float result[],
  1891. SInt32 strideResult,
  1892. UInt32 size);
  1893. /*
  1894. * vsubD()
  1895. *
  1896. * Availability:
  1897. * Non-Carbon CFM: not available
  1898. * CarbonLib: not available
  1899. * Mac OS X: in version 10.2 and later
  1900. */
  1901. EXTERN_API_C( void )
  1902. vsubD(
  1903. const double input1[],
  1904. SInt32 stride1,
  1905. const double input2[],
  1906. SInt32 stride2,
  1907. double result[],
  1908. SInt32 strideResult,
  1909. UInt32 size);
  1910. /*
  1911. -------------------------------------------------------------------------------
  1912. Function vmul
  1913. vmulD
  1914. Floating Point Multiply in Single and Double Precision
  1915. Criteria to invoke PowerPC vector code:
  1916. 1. input1 and input2 and result must be all relatively aligned.
  1917. 2. size >= 8
  1918. 3. stride1 = 1
  1919. 4. stride2 = 1
  1920. 5. strideResult = 1
  1921. If any of the above criteria are not satisfied, the PowerPC scalar code
  1922. implementation will be used.
  1923. -------------------------------------------------------------------------------
  1924. */
  1925. /*
  1926. * vmul()
  1927. *
  1928. * Availability:
  1929. * Non-Carbon CFM: in vecLib 1.0 and later
  1930. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  1931. * Mac OS X: in version 10.0 and later
  1932. */
  1933. EXTERN_API_C( void )
  1934. vmul(
  1935. const float input1[],
  1936. SInt32 stride1,
  1937. const float input2[],
  1938. SInt32 stride2,
  1939. float result[],
  1940. SInt32 strideResult,
  1941. UInt32 size);
  1942. /*
  1943. * vmulD()
  1944. *
  1945. * Availability:
  1946. * Non-Carbon CFM: not available
  1947. * CarbonLib: not available
  1948. * Mac OS X: in version 10.2 and later
  1949. */
  1950. EXTERN_API_C( void )
  1951. vmulD(
  1952. const double input1[],
  1953. SInt32 stride1,
  1954. const double input2[],
  1955. SInt32 stride2,
  1956. double result[],
  1957. SInt32 strideResult,
  1958. UInt32 size);
  1959. /*
  1960. -------------------------------------------------------------------------------
  1961. Function vsmul
  1962. vsmulD
  1963. Floating Point - Scalar Multiply in Single and Double Precision
  1964. Criteria to invoke PowerPC vector code:
  1965. 1. input1 and result are all relatively aligned.
  1966. 2. size >= 8
  1967. 3. stride1 = 1
  1968. 5. strideResult = 1
  1969. If any of the above criteria are not satisfied, the PowerPC scalar code
  1970. implementation will be used.
  1971. -------------------------------------------------------------------------------
  1972. */
  1973. /*
  1974. * vsmul()
  1975. *
  1976. * Availability:
  1977. * Non-Carbon CFM: in vecLib 1.0 and later
  1978. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  1979. * Mac OS X: in version 10.0 and later
  1980. */
  1981. EXTERN_API_C( void )
  1982. vsmul(
  1983. const float input1[],
  1984. SInt32 stride1,
  1985. const float * input2,
  1986. float result[],
  1987. SInt32 strideResult,
  1988. UInt32 size);
  1989. /*
  1990. * vsmulD()
  1991. *
  1992. * Availability:
  1993. * Non-Carbon CFM: not available
  1994. * CarbonLib: not available
  1995. * Mac OS X: in version 10.2 and later
  1996. */
  1997. EXTERN_API_C( void )
  1998. vsmulD(
  1999. const double input1[],
  2000. SInt32 stride1,
  2001. const double * input2,
  2002. double result[],
  2003. SInt32 strideResult,
  2004. UInt32 size);
  2005. /*
  2006. -------------------------------------------------------------------------------
  2007. Function vsq
  2008. vsqD
  2009. Floating Point Square in Single and Double Precision
  2010. Criteria to invoke PowerPC vector code:
  2011. 1. input and result are relatively aligned.
  2012. 2. size >= 8
  2013. 3. strideInput = 1
  2014. 4. strideResult = 1
  2015. If any of the above criteria are not satisfied, the PowerPC scalar code
  2016. implementation will be used.
  2017. -------------------------------------------------------------------------------
  2018. */
  2019. /*
  2020. * vsq()
  2021. *
  2022. * Availability:
  2023. * Non-Carbon CFM: in vecLib 1.0 and later
  2024. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2025. * Mac OS X: in version 10.0 and later
  2026. */
  2027. EXTERN_API_C( void )
  2028. vsq(
  2029. const float input[],
  2030. SInt32 strideInput,
  2031. float result[],
  2032. SInt32 strideResult,
  2033. UInt32 size);
  2034. /*
  2035. * vsqD()
  2036. *
  2037. * Availability:
  2038. * Non-Carbon CFM: not available
  2039. * CarbonLib: not available
  2040. * Mac OS X: in version 10.2 and later
  2041. */
  2042. EXTERN_API_C( void )
  2043. vsqD(
  2044. const double input[],
  2045. SInt32 strideInput,
  2046. double result[],
  2047. SInt32 strideResult,
  2048. UInt32 size);
  2049. /*
  2050. -------------------------------------------------------------------------------
  2051. Function vssq
  2052. vssqD
  2053. Floating Point Signed Square in Single and Double Precision
  2054. Criteria to invoke PowerPC vector code:
  2055. 1. input and result must be all relatively aligned.
  2056. 2. size >= 8
  2057. 3. strideInput = 1
  2058. 4. strideResult = 1
  2059. If any of the above criteria are not satisfied, the PowerPC scalar code
  2060. implementation will be used.
  2061. -------------------------------------------------------------------------------
  2062. */
  2063. /*
  2064. * vssq()
  2065. *
  2066. * Availability:
  2067. * Non-Carbon CFM: in vecLib 1.0 and later
  2068. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2069. * Mac OS X: in version 10.0 and later
  2070. */
  2071. EXTERN_API_C( void )
  2072. vssq(
  2073. const float input[],
  2074. SInt32 strideInput,
  2075. float result[],
  2076. SInt32 strideResult,
  2077. UInt32 size);
  2078. /*
  2079. * vssqD()
  2080. *
  2081. * Availability:
  2082. * Non-Carbon CFM: not available
  2083. * CarbonLib: not available
  2084. * Mac OS X: in version 10.2 and later
  2085. */
  2086. EXTERN_API_C( void )
  2087. vssqD(
  2088. const double input[],
  2089. SInt32 strideInput,
  2090. double result[],
  2091. SInt32 strideResult,
  2092. UInt32 size);
  2093. /*
  2094. -------------------------------------------------------------------------------
  2095. Function dotpr
  2096. dotprD
  2097. Floating Point Dot product in Single and Double Precision
  2098. Criteria to invoke PowerPC vector code:
  2099. 1. input1 and input2 are relatively aligned.
  2100. 2. size >= 20
  2101. 3. stride1 = 1
  2102. 4. stride2 = 1
  2103. If any of the above criteria are not satisfied, the PowerPC scalar code
  2104. implementation will be used.
  2105. -------------------------------------------------------------------------------
  2106. */
  2107. /*
  2108. * dotpr()
  2109. *
  2110. * Availability:
  2111. * Non-Carbon CFM: in vecLib 1.0 and later
  2112. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2113. * Mac OS X: in version 10.0 and later
  2114. */
  2115. EXTERN_API_C( void )
  2116. dotpr(
  2117. const float input1[],
  2118. SInt32 stride1,
  2119. const float input2[],
  2120. SInt32 stride2,
  2121. float * result,
  2122. UInt32 size);
  2123. /*
  2124. * dotprD()
  2125. *
  2126. * Availability:
  2127. * Non-Carbon CFM: not available
  2128. * CarbonLib: not available
  2129. * Mac OS X: in version 10.2 and later
  2130. */
  2131. EXTERN_API_C( void )
  2132. dotprD(
  2133. const double input1[],
  2134. SInt32 stride1,
  2135. const double input2[],
  2136. SInt32 stride2,
  2137. double * result,
  2138. UInt32 size);
  2139. /*
  2140. -------------------------------------------------------------------------------
  2141. Function vam
  2142. vamD
  2143. Floating Point vadd and Multiply in Single and Double Precision
  2144. Criteria to invoke PowerPC vector code:
  2145. 1. input1, input2, input_3 and result are all relatively aligned.
  2146. 2. size >= 8
  2147. 3. stride1 = 1
  2148. 4. stride2 = 1
  2149. 5. stride_3 = 1
  2150. 6. strideResult = 1
  2151. If any of the above criteria are not satisfied, the PowerPC scalar code
  2152. implementation will be used.
  2153. -------------------------------------------------------------------------------
  2154. */
  2155. /*
  2156. * vam()
  2157. *
  2158. * Availability:
  2159. * Non-Carbon CFM: in vecLib 1.0 and later
  2160. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2161. * Mac OS X: in version 10.0 and later
  2162. */
  2163. EXTERN_API_C( void )
  2164. vam(
  2165. const float input1[],
  2166. SInt32 stride1,
  2167. const float input2[],
  2168. SInt32 stride2,
  2169. const float input3[],
  2170. SInt32 stride3,
  2171. float result[],
  2172. SInt32 strideResult,
  2173. UInt32 size);
  2174. /*
  2175. * vamD()
  2176. *
  2177. * Availability:
  2178. * Non-Carbon CFM: not available
  2179. * CarbonLib: not available
  2180. * Mac OS X: in version 10.2 and later
  2181. */
  2182. EXTERN_API_C( void )
  2183. vamD(
  2184. const double input1[],
  2185. SInt32 stride1,
  2186. const double input2[],
  2187. SInt32 stride2,
  2188. const double input3[],
  2189. SInt32 stride3,
  2190. double result[],
  2191. SInt32 strideResult,
  2192. UInt32 size);
  2193. /*
  2194. -------------------------------------------------------------------------------
  2195. Function zconv
  2196. zconvD
  2197. Split Complex Convolution and Correlation in Single and Double Precision
  2198. Criteria to invoke PowerPC vector code:
  2199. 1. signal->realp, signal->imagp, result->realp, result->imagp
  2200. must be relatively aligned.
  2201. 2. 4 <= lenFilter <= 128
  2202. 3. lenResult > 20
  2203. 4. signalStride = 1
  2204. 5. strideResult = 1
  2205. If any of the above criteria are not satisfied, the PowerPC scalar code
  2206. implementation will be used. strideFilter can be positive for correlation
  2207. or negative for convolution
  2208. -------------------------------------------------------------------------------
  2209. */
  2210. /*
  2211. * zconv()
  2212. *
  2213. * Availability:
  2214. * Non-Carbon CFM: in vecLib 1.0 and later
  2215. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2216. * Mac OS X: in version 10.0 and later
  2217. */
  2218. EXTERN_API_C( void )
  2219. zconv(
  2220. DSPSplitComplex * signal,
  2221. SInt32 signalStride,
  2222. DSPSplitComplex * filter,
  2223. SInt32 strideFilter,
  2224. DSPSplitComplex * result,
  2225. SInt32 strideResult,
  2226. SInt32 lenResult,
  2227. SInt32 lenFilter);
  2228. /*
  2229. * zconvD()
  2230. *
  2231. * Availability:
  2232. * Non-Carbon CFM: not available
  2233. * CarbonLib: not available
  2234. * Mac OS X: in version 10.2 and later
  2235. */
  2236. EXTERN_API_C( void )
  2237. zconvD(
  2238. DSPDoubleSplitComplex * signal,
  2239. SInt32 signalStride,
  2240. DSPDoubleSplitComplex * filter,
  2241. SInt32 strideFilter,
  2242. DSPDoubleSplitComplex * result,
  2243. SInt32 strideResult,
  2244. SInt32 lenResult,
  2245. SInt32 lenFilter);
  2246. /*
  2247. -------------------------------------------------------------------------------
  2248. Function zvadd
  2249. zvaddD
  2250. Split Complex vadd in Single and Double Precision
  2251. Criteria to invoke PowerPC vector code:
  2252. 1. input1.realp, input1.imagp, input2.realp, input2.imagp,
  2253. result.realp, result.imagp must be all relatively aligned.
  2254. 2. size >= 8
  2255. 3. stride1 = 1
  2256. 4. stride2 = 1
  2257. 5. strideResult = 1
  2258. If any of the above criteria are not satisfied, the PowerPC scalar code
  2259. implementation will be used.
  2260. -------------------------------------------------------------------------------
  2261. */
  2262. /*
  2263. * zvadd()
  2264. *
  2265. * Availability:
  2266. * Non-Carbon CFM: in vecLib 1.0 and later
  2267. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2268. * Mac OS X: in version 10.0 and later
  2269. */
  2270. EXTERN_API_C( void )
  2271. zvadd(
  2272. DSPSplitComplex * input1,
  2273. SInt32 stride1,
  2274. DSPSplitComplex * input2,
  2275. SInt32 stride2,
  2276. DSPSplitComplex * result,
  2277. SInt32 strideResult,
  2278. UInt32 size);
  2279. /*
  2280. * zvaddD()
  2281. *
  2282. * Availability:
  2283. * Non-Carbon CFM: not available
  2284. * CarbonLib: not available
  2285. * Mac OS X: in version 10.2 and later
  2286. */
  2287. EXTERN_API_C( void )
  2288. zvaddD(
  2289. DSPDoubleSplitComplex * input1,
  2290. SInt32 stride1,
  2291. DSPDoubleSplitComplex * input2,
  2292. SInt32 stride2,
  2293. DSPDoubleSplitComplex * result,
  2294. SInt32 strideResult,
  2295. UInt32 size);
  2296. /*
  2297. -------------------------------------------------------------------------------
  2298. Function zvsub
  2299. zvsubD
  2300. Split Complex Substract in Single and Double Precision
  2301. Criteria to invoke PowerPC vector code:
  2302. 1. input1.realp, input1.imagp, input2.realp, input2.imagp,
  2303. result.realp, result.imagp must be all relatively aligned.
  2304. 2. size >= 8
  2305. 3. stride1 = 1
  2306. 4. stride2 = 1
  2307. 5. strideResult = 1
  2308. If any of the above criteria are not satisfied, the PowerPC scalar code
  2309. implementation will be used.
  2310. -------------------------------------------------------------------------------
  2311. */
  2312. /*
  2313. * zvsub()
  2314. *
  2315. * Availability:
  2316. * Non-Carbon CFM: in vecLib 1.0 and later
  2317. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2318. * Mac OS X: in version 10.0 and later
  2319. */
  2320. EXTERN_API_C( void )
  2321. zvsub(
  2322. DSPSplitComplex * input1,
  2323. SInt32 stride1,
  2324. DSPSplitComplex * input2,
  2325. SInt32 stride2,
  2326. DSPSplitComplex * result,
  2327. SInt32 strideResult,
  2328. UInt32 size);
  2329. /*
  2330. * zvsubD()
  2331. *
  2332. * Availability:
  2333. * Non-Carbon CFM: not available
  2334. * CarbonLib: not available
  2335. * Mac OS X: in version 10.2 and later
  2336. */
  2337. EXTERN_API_C( void )
  2338. zvsubD(
  2339. DSPDoubleSplitComplex * input1,
  2340. SInt32 stride1,
  2341. DSPDoubleSplitComplex * input2,
  2342. SInt32 stride2,
  2343. DSPDoubleSplitComplex * result,
  2344. SInt32 strideResult,
  2345. UInt32 size);
  2346. /*
  2347. -------------------------------------------------------------------------------
  2348. Function zvmul
  2349. zvmulD
  2350. Split Complex Multiply in Single and Double Precision
  2351. Criteria to invoke PowerPC vector code:
  2352. 1. input1.realp, input1.imagp, input2.realp, input2.imagp,
  2353. result.realp, result.imagp must be all relatively aligned.
  2354. 2. size >= 8
  2355. 3. stride1 = 1
  2356. 4. stride2 = 1
  2357. 5. strideResult = 1
  2358. If any of the above criteria are not satisfied, the PowerPC scalar code
  2359. implementation will be used. The conjugate value can be 1 or -1.
  2360. -------------------------------------------------------------------------------
  2361. */
  2362. /*
  2363. * zvmul()
  2364. *
  2365. * Availability:
  2366. * Non-Carbon CFM: in vecLib 1.0 and later
  2367. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2368. * Mac OS X: in version 10.0 and later
  2369. */
  2370. EXTERN_API_C( void )
  2371. zvmul(
  2372. DSPSplitComplex * input1,
  2373. SInt32 stride1,
  2374. DSPSplitComplex * input2,
  2375. SInt32 stride2,
  2376. DSPSplitComplex * result,
  2377. SInt32 strideResult,
  2378. UInt32 size,
  2379. SInt32 conjugate);
  2380. /*
  2381. * zvmulD()
  2382. *
  2383. * Availability:
  2384. * Non-Carbon CFM: not available
  2385. * CarbonLib: not available
  2386. * Mac OS X: in version 10.2 and later
  2387. */
  2388. EXTERN_API_C( void )
  2389. zvmulD(
  2390. DSPDoubleSplitComplex * input1,
  2391. SInt32 stride1,
  2392. DSPDoubleSplitComplex * input2,
  2393. SInt32 stride2,
  2394. DSPDoubleSplitComplex * result,
  2395. SInt32 strideResult,
  2396. UInt32 size,
  2397. SInt32 conjugate);
  2398. /*
  2399. -------------------------------------------------------------------------------
  2400. Function zdotpr
  2401. zdotprD
  2402. Split Complex Dot product in Single and Double Precision
  2403. Criteria to invoke PowerPC vector code:
  2404. 1. input1.realp, input1.imagp, input2.realp, input2.imagp are all
  2405. relatively aligned.
  2406. 2. size >= 20
  2407. 3. stride1 = 1
  2408. 4. stride2 = 1
  2409. If any of the above criteria are not satisfied, the PowerPC scalar code
  2410. implementation will be used.
  2411. -------------------------------------------------------------------------------
  2412. */
  2413. /*
  2414. * zdotpr()
  2415. *
  2416. * Availability:
  2417. * Non-Carbon CFM: in vecLib 1.0 and later
  2418. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2419. * Mac OS X: in version 10.0 and later
  2420. */
  2421. EXTERN_API_C( void )
  2422. zdotpr(
  2423. DSPSplitComplex * input1,
  2424. SInt32 stride1,
  2425. DSPSplitComplex * input2,
  2426. SInt32 stride2,
  2427. DSPSplitComplex * result,
  2428. UInt32 size);
  2429. /*
  2430. * zdotprD()
  2431. *
  2432. * Availability:
  2433. * Non-Carbon CFM: not available
  2434. * CarbonLib: not available
  2435. * Mac OS X: in version 10.2 and later
  2436. */
  2437. EXTERN_API_C( void )
  2438. zdotprD(
  2439. DSPDoubleSplitComplex * input1,
  2440. SInt32 stride1,
  2441. DSPDoubleSplitComplex * input2,
  2442. SInt32 stride2,
  2443. DSPDoubleSplitComplex * result,
  2444. UInt32 size);
  2445. /*
  2446. -------------------------------------------------------------------------------
  2447. Function zidotpr
  2448. zidotprD
  2449. Split Complex Inner Dot product in Single and Double Precision
  2450. Criteria to invoke PowerPC vector code:
  2451. 1. input1.realp, input1.imagp, input2.realp, input2.imagp must be
  2452. all relatively aligned.
  2453. 2. size >= 20
  2454. 3. stride1 = 1
  2455. 4. stride2 = 1
  2456. If any of the above criteria are not satisfied, the PowerPC scalar code
  2457. implementation will be used.
  2458. -------------------------------------------------------------------------------
  2459. */
  2460. /*
  2461. * zidotpr()
  2462. *
  2463. * Availability:
  2464. * Non-Carbon CFM: in vecLib 1.0 and later
  2465. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2466. * Mac OS X: in version 10.0 and later
  2467. */
  2468. EXTERN_API_C( void )
  2469. zidotpr(
  2470. DSPSplitComplex * input1,
  2471. SInt32 stride1,
  2472. DSPSplitComplex * input2,
  2473. SInt32 stride2,
  2474. DSPSplitComplex * result,
  2475. UInt32 size);
  2476. /*
  2477. * zidotprD()
  2478. *
  2479. * Availability:
  2480. * Non-Carbon CFM: not available
  2481. * CarbonLib: not available
  2482. * Mac OS X: in version 10.2 and later
  2483. */
  2484. EXTERN_API_C( void )
  2485. zidotprD(
  2486. DSPDoubleSplitComplex * input1,
  2487. SInt32 stride1,
  2488. DSPDoubleSplitComplex * input2,
  2489. SInt32 stride2,
  2490. DSPDoubleSplitComplex * result,
  2491. UInt32 size);
  2492. /*
  2493. -------------------------------------------------------------------------------
  2494. Function zrdotpr
  2495. zrdotprD
  2496. Split Complex - Real Dot product in Single and Double Precision
  2497. Criteria to invoke PowerPC vector code:
  2498. 1. input1.realp, input1.imagp, input2 are must be relatively aligned.
  2499. 2. size >= 16
  2500. 3. stride1 = 1
  2501. 4. stride2 = 1
  2502. If any of the above criteria are not satisfied, the PowerPC scalar code
  2503. implementation will be used.
  2504. -------------------------------------------------------------------------------
  2505. */
  2506. /*
  2507. * zrdotpr()
  2508. *
  2509. * Availability:
  2510. * Non-Carbon CFM: in vecLib 1.0 and later
  2511. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2512. * Mac OS X: in version 10.0 and later
  2513. */
  2514. EXTERN_API_C( void )
  2515. zrdotpr(
  2516. DSPSplitComplex * input1,
  2517. SInt32 stride1,
  2518. const float input2[],
  2519. SInt32 stride2,
  2520. DSPSplitComplex * result,
  2521. UInt32 size);
  2522. /*
  2523. * zrdotprD()
  2524. *
  2525. * Availability:
  2526. * Non-Carbon CFM: not available
  2527. * CarbonLib: not available
  2528. * Mac OS X: in version 10.2 and later
  2529. */
  2530. EXTERN_API_C( void )
  2531. zrdotprD(
  2532. DSPDoubleSplitComplex * input1,
  2533. SInt32 stride1,
  2534. const double input2[],
  2535. SInt32 stride2,
  2536. DSPDoubleSplitComplex * result,
  2537. UInt32 size);
  2538. /*
  2539. -------------------------------------------------------------------------------
  2540. Function zvcma
  2541. zvcmaD
  2542. Split Complex Conjugate Multiply And vadd in Single and Double Precision
  2543. Criteria to invoke PowerPC vector code:
  2544. 1. input1.realp, input1.imagp, input2.realp, input2.imagp,
  2545. input_3.realp, input_3.imagp, result.realp, result.imagp
  2546. must be all relatively aligned.
  2547. 2. size >= 8
  2548. 3. stride1 = 1
  2549. 4. stride2 = 1
  2550. 5. stride_3 = 1
  2551. 6. strideResult = 1
  2552. If any of the above criteria are not satisfied, the PowerPC scalar code
  2553. implementation will be used.
  2554. -------------------------------------------------------------------------------
  2555. */
  2556. /*
  2557. * zvcma()
  2558. *
  2559. * Availability:
  2560. * Non-Carbon CFM: in vecLib 1.0 and later
  2561. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2562. * Mac OS X: in version 10.0 and later
  2563. */
  2564. EXTERN_API_C( void )
  2565. zvcma(
  2566. DSPSplitComplex * input1,
  2567. SInt32 stride1,
  2568. DSPSplitComplex * input2,
  2569. SInt32 stride2,
  2570. DSPSplitComplex * input3,
  2571. SInt32 stride3,
  2572. DSPSplitComplex * result,
  2573. SInt32 strideResult,
  2574. UInt32 size);
  2575. /*
  2576. * zvcmaD()
  2577. *
  2578. * Availability:
  2579. * Non-Carbon CFM: not available
  2580. * CarbonLib: not available
  2581. * Mac OS X: in version 10.2 and later
  2582. */
  2583. EXTERN_API_C( void )
  2584. zvcmaD(
  2585. DSPDoubleSplitComplex * input1,
  2586. SInt32 stride1,
  2587. DSPDoubleSplitComplex * input2,
  2588. SInt32 stride2,
  2589. DSPDoubleSplitComplex * input3,
  2590. SInt32 stride3,
  2591. DSPDoubleSplitComplex * result,
  2592. SInt32 strideResult,
  2593. UInt32 size);
  2594. /*
  2595. -------------------------------------------------------------------------------
  2596. Function zrvadd
  2597. zrvaddD
  2598. Split Complex - Real Add in Single and Double Precision
  2599. Criteria to invoke PowerPC vector code:
  2600. 1. input1.realp, input1.imagp, input2, result.realp, result.imagp
  2601. are all relatively aligned.
  2602. 2. size >= 8
  2603. 3. stride1 = 1
  2604. 4. stride2 = 1
  2605. 5. strideResult = 1
  2606. If any of the above criteria are not satisfied, the PowerPC scalar code
  2607. implementation will be used.
  2608. -------------------------------------------------------------------------------
  2609. */
  2610. /*
  2611. * zrvadd()
  2612. *
  2613. * Availability:
  2614. * Non-Carbon CFM: in vecLib 1.0 and later
  2615. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2616. * Mac OS X: in version 10.0 and later
  2617. */
  2618. EXTERN_API_C( void )
  2619. zrvadd(
  2620. DSPSplitComplex * input1,
  2621. SInt32 stride1,
  2622. const float input2[],
  2623. SInt32 stride2,
  2624. DSPSplitComplex * result,
  2625. SInt32 strideResult,
  2626. UInt32 size);
  2627. /*
  2628. * zrvaddD()
  2629. *
  2630. * Availability:
  2631. * Non-Carbon CFM: not available
  2632. * CarbonLib: not available
  2633. * Mac OS X: in version 10.2 and later
  2634. */
  2635. EXTERN_API_C( void )
  2636. zrvaddD(
  2637. DSPDoubleSplitComplex * input1,
  2638. SInt32 stride1,
  2639. const double input2[],
  2640. SInt32 stride2,
  2641. DSPDoubleSplitComplex * result,
  2642. SInt32 strideResult,
  2643. UInt32 size);
  2644. /*
  2645. -------------------------------------------------------------------------------
  2646. Function zrvsub
  2647. zrvsubD
  2648. Split Complex - Real Substract in Single and Double Precision
  2649. Criteria to invoke PowerPC vector code:
  2650. 1. input1.realp, input1.imagp, input2, result.realp, result.imagp
  2651. must be all relatively aligned.
  2652. 2. size >= 8
  2653. 3. stride1 = 1
  2654. 4. stride2 = 1
  2655. 5. strideResult = 1
  2656. If any of the above criteria are not satisfied, the PowerPC scalar code
  2657. implementation will be used.
  2658. -------------------------------------------------------------------------------
  2659. */
  2660. /*
  2661. * zrvsub()
  2662. *
  2663. * Availability:
  2664. * Non-Carbon CFM: in vecLib 1.0 and later
  2665. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2666. * Mac OS X: in version 10.0 and later
  2667. */
  2668. EXTERN_API_C( void )
  2669. zrvsub(
  2670. DSPSplitComplex * input1,
  2671. SInt32 stride1,
  2672. const float input2[],
  2673. SInt32 stride2,
  2674. DSPSplitComplex * result,
  2675. SInt32 strideResult,
  2676. UInt32 size);
  2677. /*
  2678. * zrvsubD()
  2679. *
  2680. * Availability:
  2681. * Non-Carbon CFM: not available
  2682. * CarbonLib: not available
  2683. * Mac OS X: in version 10.2 and later
  2684. */
  2685. EXTERN_API_C( void )
  2686. zrvsubD(
  2687. DSPDoubleSplitComplex * input1,
  2688. SInt32 stride1,
  2689. const double input2[],
  2690. SInt32 stride2,
  2691. DSPDoubleSplitComplex * result,
  2692. SInt32 strideResult,
  2693. UInt32 size);
  2694. /*
  2695. -------------------------------------------------------------------------------
  2696. Function zrvmul
  2697. zrvmulD
  2698. Split Complex - Real Multiply
  2699. Criteria to invoke PowerPC vector code:
  2700. 1. input1.realp, input1.imagp, input2, result.realp, result.imagp
  2701. must be all relatively aligned.
  2702. 2. size >= 8
  2703. 3. stride1 = 1
  2704. 4. stride2 = 1
  2705. 5. strideResult = 1
  2706. If any of the above criteria are not satisfied, the PowerPC scalar code
  2707. implementation will be used.
  2708. -------------------------------------------------------------------------------
  2709. */
  2710. /*
  2711. * zrvmul()
  2712. *
  2713. * Availability:
  2714. * Non-Carbon CFM: in vecLib 1.0 and later
  2715. * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
  2716. * Mac OS X: in version 10.0 and later
  2717. */
  2718. EXTERN_API_C( void )
  2719. zrvmul(
  2720. DSPSplitComplex * input1,
  2721. SInt32 stride1,
  2722. const float input2[],
  2723. SInt32 stride2,
  2724. DSPSplitComplex * result,
  2725. SInt32 strideResult,
  2726. UInt32 size);
  2727. /*
  2728. * zrvmulD()
  2729. *
  2730. * Availability:
  2731. * Non-Carbon CFM: not available
  2732. * CarbonLib: not available
  2733. * Mac OS X: in version 10.2 and later
  2734. */
  2735. EXTERN_API_C( void )
  2736. zrvmulD(
  2737. DSPDoubleSplitComplex * input1,
  2738. SInt32 stride1,
  2739. const double input2[],
  2740. SInt32 stride2,
  2741. DSPDoubleSplitComplex * result,
  2742. SInt32 strideResult,
  2743. UInt32 size);
  2744. #ifndef USE_NON_APPLE_STANDARD_DATATYPES
  2745. #define USE_NON_APPLE_STANDARD_DATATYPES 1
  2746. #endif /* !defined(USE_NON_APPLE_STANDARD_DATATYPES) */
  2747. #if USE_NON_APPLE_STANDARD_DATATYPES
  2748. enum {
  2749. FFT_FORWARD = kFFTDirection_Forward,
  2750. FFT_INVERSE = kFFTDirection_Inverse
  2751. };
  2752. enum {
  2753. FFT_RADIX2 = kFFTRadix2,
  2754. FFT_RADIX3 = kFFTRadix3,
  2755. FFT_RADIX5 = kFFTRadix5
  2756. };
  2757. typedef DSPComplex COMPLEX;
  2758. typedef DSPSplitComplex COMPLEX_SPLIT;
  2759. typedef DSPDoubleComplex DOUBLE_COMPLEX;
  2760. typedef DSPDoubleSplitComplex DOUBLE_COMPLEX_SPLIT;
  2761. #endif /* USE_NON_APPLE_STANDARD_DATATYPES */
  2762. #if PRAGMA_STRUCT_ALIGN
  2763. #pragma options align=reset
  2764. #elif PRAGMA_STRUCT_PACKPUSH
  2765. #pragma pack(pop)
  2766. #elif PRAGMA_STRUCT_PACK
  2767. #pragma pack()
  2768. #endif
  2769. #ifdef PRAGMA_IMPORT_OFF
  2770. #pragma import off
  2771. #elif PRAGMA_IMPORT
  2772. #pragma import reset
  2773. #endif
  2774. #ifdef __cplusplus
  2775. }
  2776. #endif
  2777. #endif /* __VDSP__ */