Subversion Repositories AFRtranscoder

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. #ifndef _REF_H
  3. #define _REF_H
  4.  
  5. #include <math.h>
  6. #include <stdint.h>
  7. #include "arm_math.h"
  8.  
  9. #ifdef  __cplusplus
  10. extern "C"
  11. {
  12. #endif
  13.  
  14. #ifndef PI
  15. #define PI                                      3.14159265358979f
  16. #endif
  17.  
  18.   /**
  19.    * @brief 8-bit fractional data type in 1.7 format.
  20.    */
  21. //  typedef int8_t q7_t;
  22.  
  23.   /**
  24.    * @brief 16-bit fractional data type in 1.15 format.
  25.    */
  26. //  typedef int16_t q15_t;
  27.  
  28.   /**
  29.    * @brief 32-bit fractional data type in 1.31 format.
  30.    */
  31. //  typedef int32_t q31_t;
  32.  
  33.   /**
  34.    * @brief 64-bit fractional data type in 1.63 format.
  35.    */
  36. //  typedef int64_t q63_t;
  37.  
  38.   /**
  39.    * @brief 32-bit floating-point type definition.
  40.    */
  41. //  typedef float float32_t;
  42.  
  43.   /**
  44.    * @brief 64-bit floating-point type definition.
  45.    */
  46. //  typedef double float64_t;
  47.  
  48.  
  49.   /**
  50.    * @brief Error status returned by some functions in the library.
  51.    */
  52.  
  53.   typedef enum
  54.   {
  55.     REF_Q7 = 0,
  56.     REF_Q15,
  57.     REF_Q31,
  58.     REF_F32,
  59.   } dataType;
  60.  
  61.  
  62. #define FLT_MAX  3.40282347e+38F
  63. #define DBL_MAX  1.79769313486231571e+308
  64.  
  65. #define FLT_MIN  1.175494351e-38F
  66. #define DBL_MIN  2.22507385850720138e-308
  67.  
  68. #define SCHAR_MIN (-128)
  69.     /* mimimum value for an object of type signed char */
  70. #define SCHAR_MAX 127
  71.     /* maximum value for an object of type signed char */
  72. #define UCHAR_MAX 255
  73.     /* maximum value for an object of type unsigned char */
  74. #define SHRT_MIN  (-0x8000)
  75.     /* minimum value for an object of type short int */
  76. #define SHRT_MAX  0x7fff
  77.     /* maximum value for an object of type short int */
  78. #define USHRT_MAX 65535
  79.     /* maximum value for an object of type unsigned short int */
  80. #define INT_MIN   (~0x7fffffff)  /* -2147483648 and 0x80000000 are unsigned */
  81.     /* minimum value for an object of type int */
  82. #define INT_MAX   0x7fffffff
  83.     /* maximum value for an object of type int */
  84. #define UINT_MAX  0xffffffffU
  85.     /* maximum value for an object of type unsigned int */
  86. #define LONG_MIN  (~0x7fffffffL)
  87.     /* minimum value for an object of type long int */
  88. #define LONG_MAX  0x7fffffffL
  89.     /* maximum value for an object of type long int */
  90. #define ULONG_MAX 0xffffffffUL
  91.     /* maximum value for an object of type unsigned long int */
  92.  
  93.         /*
  94.          * Ref Lib Global Variables
  95.          */
  96. extern float32_t scratchArray[];
  97. extern arm_cfft_instance_f32 ref_cfft_sR_f32_len8192;
  98.  
  99.         /*
  100.          * Ref Lib Functions
  101.          */
  102.  
  103.         /*
  104.          * Helper Functions
  105.          */
  106. q31_t ref_sat_n(q31_t num, uint32_t bits);
  107.  
  108. q31_t ref_sat_q31(q63_t num);
  109.  
  110. q15_t ref_sat_q15(q31_t num);
  111.  
  112. q7_t ref_sat_q7(q15_t num);
  113.  
  114. float32_t ref_pow(float32_t a, uint32_t b);
  115.  
  116. extern float32_t tempMatrixArray[];
  117.  
  118. float32_t ref_detrm(float32_t *pSrc, float32_t *temp, uint32_t size);
  119.  
  120. void ref_cofact(float32_t *pSrc, float32_t *pDst, float32_t *temp, uint32_t size);
  121.  
  122. float64_t ref_detrm64(float64_t *pSrc, float64_t *temp, uint32_t size);
  123.  
  124. void ref_cofact64(float64_t *pSrc, float64_t *pDst, float64_t *temp, uint32_t size);
  125.  
  126.         /*
  127.          * Basic Math Functions
  128.          */
  129. void ref_abs_f32(
  130.   float32_t * pSrc,
  131.   float32_t * pDst,
  132.   uint32_t blockSize);
  133.  
  134. void ref_abs_q31(
  135.   q31_t * pSrc,
  136.   q31_t * pDst,
  137.   uint32_t blockSize);
  138.  
  139. void ref_abs_q15(
  140.   q15_t * pSrc,
  141.   q15_t * pDst,
  142.   uint32_t blockSize);
  143.  
  144. void ref_abs_q7(
  145.   q7_t * pSrc,
  146.   q7_t * pDst,
  147.   uint32_t blockSize);
  148.  
  149. void ref_add_f32(
  150.   float32_t * pSrcA,
  151.   float32_t * pSrcB,
  152.   float32_t * pDst,
  153.   uint32_t blockSize);
  154.  
  155. void ref_add_q31(
  156.   q31_t * pSrcA,
  157.   q31_t * pSrcB,
  158.   q31_t * pDst,
  159.   uint32_t blockSize);
  160.  
  161. void ref_add_q15(
  162.   q15_t * pSrcA,
  163.   q15_t * pSrcB,
  164.   q15_t * pDst,
  165.   uint32_t blockSize);
  166.  
  167. void ref_add_q7(
  168.   q7_t * pSrcA,
  169.   q7_t * pSrcB,
  170.   q7_t * pDst,
  171.   uint32_t blockSize);
  172.  
  173. void ref_dot_prod_f32(
  174.   float32_t * pSrcA,
  175.   float32_t * pSrcB,
  176.   uint32_t blockSize,
  177.   float32_t * result);
  178.  
  179. void ref_dot_prod_q31(
  180.   q31_t * pSrcA,
  181.   q31_t * pSrcB,
  182.   uint32_t blockSize,
  183.   q63_t * result);
  184.  
  185. void ref_dot_prod_q15(
  186.   q15_t * pSrcA,
  187.   q15_t * pSrcB,
  188.   uint32_t blockSize,
  189.   q63_t * result);
  190.  
  191. void ref_dot_prod_q7(
  192.   q7_t * pSrcA,
  193.   q7_t * pSrcB,
  194.   uint32_t blockSize,
  195.   q31_t * result);
  196.  
  197. void ref_mult_f32(
  198.   float32_t * pSrcA,
  199.   float32_t * pSrcB,
  200.   float32_t * pDst,
  201.   uint32_t blockSize);
  202.  
  203. void ref_mult_q31(
  204.   q31_t * pSrcA,
  205.   q31_t * pSrcB,
  206.   q31_t * pDst,
  207.   uint32_t blockSize);
  208.  
  209. void ref_mult_q15(
  210.   q15_t * pSrcA,
  211.   q15_t * pSrcB,
  212.   q15_t * pDst,
  213.   uint32_t blockSize);
  214.  
  215. void ref_mult_q7(
  216.   q7_t * pSrcA,
  217.   q7_t * pSrcB,
  218.   q7_t * pDst,
  219.   uint32_t blockSize);
  220.  
  221. void ref_negate_f32(
  222.   float32_t * pSrc,
  223.   float32_t * pDst,
  224.   uint32_t blockSize);
  225.  
  226. void ref_negate_q31(
  227.   q31_t * pSrc,
  228.   q31_t * pDst,
  229.   uint32_t blockSize);
  230.  
  231. void ref_negate_q15(
  232.   q15_t * pSrc,
  233.   q15_t * pDst,
  234.   uint32_t blockSize);
  235.  
  236. void ref_negate_q7(
  237.   q7_t * pSrc,
  238.   q7_t * pDst,
  239.   uint32_t blockSize);
  240.  
  241. void ref_offset_f32(
  242.   float32_t * pSrc,
  243.   float32_t offset,
  244.   float32_t * pDst,
  245.   uint32_t blockSize);
  246.  
  247. void ref_offset_q31(
  248.   q31_t * pSrc,
  249.   q31_t offset,
  250.   q31_t * pDst,
  251.   uint32_t blockSize);
  252.  
  253. void ref_offset_q15(
  254.   q15_t * pSrc,
  255.   q15_t offset,
  256.   q15_t * pDst,
  257.   uint32_t blockSize);
  258.  
  259. void ref_offset_q7(
  260.   q7_t * pSrc,
  261.   q7_t offset,
  262.   q7_t * pDst,
  263.   uint32_t blockSize);
  264.  
  265. void ref_scale_f32(
  266.   float32_t * pSrc,
  267.   float32_t scale,
  268.   float32_t * pDst,
  269.   uint32_t blockSize);
  270.  
  271. void ref_scale_q31(
  272.   q31_t * pSrc,
  273.   q31_t scaleFract,
  274.   int8_t shift,
  275.   q31_t * pDst,
  276.   uint32_t blockSize);
  277.  
  278. void ref_scale_q15(
  279.   q15_t * pSrc,
  280.   q15_t scaleFract,
  281.   int8_t shift,
  282.   q15_t * pDst,
  283.   uint32_t blockSize);
  284.  
  285. void ref_scale_q7(
  286.   q7_t * pSrc,
  287.   q7_t scaleFract,
  288.   int8_t shift,
  289.   q7_t * pDst,
  290.   uint32_t blockSize);
  291.  
  292. void ref_shift_q31(
  293.   q31_t * pSrc,
  294.   int8_t shiftBits,
  295.   q31_t * pDst,
  296.   uint32_t blockSize);
  297.  
  298. void ref_shift_q15(
  299.   q15_t * pSrc,
  300.   int8_t shiftBits,
  301.   q15_t * pDst,
  302.   uint32_t blockSize);
  303.  
  304. void ref_shift_q7(
  305.   q7_t * pSrc,
  306.   int8_t shiftBits,
  307.   q7_t * pDst,
  308.   uint32_t blockSize);
  309.  
  310. void ref_sub_f32(
  311.   float32_t * pSrcA,
  312.   float32_t * pSrcB,
  313.   float32_t * pDst,
  314.   uint32_t blockSize);
  315.  
  316. void ref_sub_q31(
  317.   q31_t * pSrcA,
  318.   q31_t * pSrcB,
  319.   q31_t * pDst,
  320.   uint32_t blockSize);
  321.  
  322. void ref_sub_q15(
  323.   q15_t * pSrcA,
  324.   q15_t * pSrcB,
  325.   q15_t * pDst,
  326.   uint32_t blockSize);
  327.  
  328. void ref_sub_q7(
  329.   q7_t * pSrcA,
  330.   q7_t * pSrcB,
  331.   q7_t * pDst,
  332.   uint32_t blockSize);
  333.  
  334.         /*
  335.          * Complex Math Functions
  336.          */
  337. void ref_cmplx_conj_f32(
  338.   float32_t * pSrc,
  339.   float32_t * pDst,
  340.   uint32_t numSamples);
  341.  
  342. void ref_cmplx_conj_q31(
  343.   q31_t * pSrc,
  344.   q31_t * pDst,
  345.   uint32_t numSamples);
  346.  
  347. void ref_cmplx_conj_q15(
  348.   q15_t * pSrc,
  349.   q15_t * pDst,
  350.   uint32_t numSamples);
  351.  
  352. void ref_cmplx_dot_prod_f32(
  353.   float32_t * pSrcA,
  354.   float32_t * pSrcB,
  355.   uint32_t numSamples,
  356.   float32_t * realResult,
  357.   float32_t * imagResult);
  358.  
  359. void ref_cmplx_dot_prod_q31(
  360.   q31_t * pSrcA,
  361.   q31_t * pSrcB,
  362.   uint32_t numSamples,
  363.   q63_t * realResult,
  364.   q63_t * imagResult);
  365.  
  366. void ref_cmplx_dot_prod_q15(
  367.   q15_t * pSrcA,
  368.   q15_t * pSrcB,
  369.   uint32_t numSamples,
  370.   q31_t * realResult,
  371.   q31_t * imagResult);
  372.  
  373. void ref_cmplx_mag_f32(
  374.   float32_t * pSrc,
  375.   float32_t * pDst,
  376.   uint32_t numSamples);
  377.  
  378. void ref_cmplx_mag_q31(
  379.   q31_t * pSrc,
  380.   q31_t * pDst,
  381.   uint32_t numSamples);
  382.  
  383. void ref_cmplx_mag_q15(
  384.   q15_t * pSrc,
  385.   q15_t * pDst,
  386.   uint32_t numSamples);
  387.  
  388. void ref_cmplx_mag_squared_f32(
  389.   float32_t * pSrc,
  390.   float32_t * pDst,
  391.   uint32_t numSamples);
  392.  
  393. void ref_cmplx_mag_squared_q31(
  394.   q31_t * pSrc,
  395.   q31_t * pDst,
  396.   uint32_t numSamples);
  397.  
  398. void ref_cmplx_mag_squared_q15(
  399.   q15_t * pSrc,
  400.   q15_t * pDst,
  401.   uint32_t numSamples);
  402.  
  403. void ref_cmplx_mult_cmplx_f32(
  404.   float32_t * pSrcA,
  405.   float32_t * pSrcB,
  406.   float32_t * pDst,
  407.   uint32_t numSamples);
  408.  
  409. void ref_cmplx_mult_cmplx_q31(
  410.   q31_t * pSrcA,
  411.   q31_t * pSrcB,
  412.   q31_t * pDst,
  413.   uint32_t numSamples);
  414.  
  415. void ref_cmplx_mult_cmplx_q15(
  416.   q15_t * pSrcA,
  417.   q15_t * pSrcB,
  418.   q15_t * pDst,
  419.   uint32_t numSamples);
  420.  
  421. void ref_cmplx_mult_real_f32(
  422.   float32_t * pSrcCmplx,
  423.   float32_t * pSrcReal,
  424.   float32_t * pCmplxDst,
  425.   uint32_t numSamples);
  426.  
  427. void ref_cmplx_mult_real_q31(
  428.   q31_t * pSrcCmplx,
  429.   q31_t * pSrcReal,
  430.   q31_t * pCmplxDst,
  431.   uint32_t numSamples);
  432.  
  433. void ref_cmplx_mult_real_q15(
  434.   q15_t * pSrcCmplx,
  435.   q15_t * pSrcReal,
  436.   q15_t * pCmplxDst,
  437.   uint32_t numSamples);
  438.  
  439.         /*
  440.          * Controller Functions
  441.          */
  442. void ref_sin_cos_f32(
  443.   float32_t theta,
  444.   float32_t * pSinVal,
  445.   float32_t * pCosVal);
  446.  
  447. void ref_sin_cos_q31(
  448.   q31_t theta,
  449.   q31_t * pSinVal,
  450.   q31_t * pCosVal);
  451.  
  452. float32_t ref_pid_f32(
  453.         arm_pid_instance_f32 * S,
  454.         float32_t in);
  455.  
  456. q31_t ref_pid_q31(
  457.         arm_pid_instance_q31 * S,
  458.         q31_t in);
  459.  
  460. q15_t ref_pid_q15(
  461.         arm_pid_instance_q15 * S,
  462.         q15_t in);
  463.  
  464.         /*
  465.          * Fast Math Functions
  466.          */
  467. #define ref_sin_f32(a) sinf(a)
  468.  
  469. q31_t ref_sin_q31(q31_t x);
  470.  
  471. q15_t ref_sin_q15(q15_t x);
  472.  
  473. #define ref_cos_f32(a) cosf(a)
  474.  
  475. q31_t ref_cos_q31(q31_t x);
  476.  
  477. q15_t ref_cos_q15(q15_t x);
  478.  
  479. arm_status ref_sqrt_q31(q31_t in, q31_t * pOut);
  480.  
  481. arm_status ref_sqrt_q15(q15_t in, q15_t * pOut);
  482.  
  483.         /*
  484.          * Filtering Functions
  485.          */
  486. void ref_biquad_cascade_df2T_f32(
  487.         const arm_biquad_cascade_df2T_instance_f32 * S,
  488.         float32_t * pSrc,
  489.         float32_t * pDst,
  490.         uint32_t blockSize);
  491.        
  492. void ref_biquad_cascade_stereo_df2T_f32(
  493.         const arm_biquad_cascade_stereo_df2T_instance_f32 * S,
  494.         float32_t * pSrc,
  495.         float32_t * pDst,
  496.         uint32_t blockSize);
  497.        
  498. void ref_biquad_cascade_df2T_f64(
  499.         const arm_biquad_cascade_df2T_instance_f64 * S,
  500.         float64_t * pSrc,
  501.         float64_t * pDst,
  502.         uint32_t blockSize);
  503.  
  504. void ref_biquad_cascade_df1_f32(
  505.   const arm_biquad_casd_df1_inst_f32 * S,
  506.   float32_t * pSrc,
  507.   float32_t * pDst,
  508.   uint32_t blockSize);
  509.  
  510. void ref_biquad_cas_df1_32x64_q31(
  511.   const arm_biquad_cas_df1_32x64_ins_q31 * S,
  512.   q31_t * pSrc,
  513.   q31_t * pDst,
  514.   uint32_t blockSize);
  515.  
  516. void ref_biquad_cascade_df1_q31(
  517.   const arm_biquad_casd_df1_inst_q31 * S,
  518.   q31_t * pSrc,
  519.   q31_t * pDst,
  520.   uint32_t blockSize);
  521.  
  522. void ref_biquad_cascade_df1_fast_q31(
  523.   const arm_biquad_casd_df1_inst_q31 * S,
  524.   q31_t * pSrc,
  525.   q31_t * pDst,
  526.   uint32_t blockSize);
  527.  
  528. void ref_biquad_cascade_df1_fast_q15(
  529.   const arm_biquad_casd_df1_inst_q15 * S,
  530.   q15_t * pSrc,
  531.   q15_t * pDst,
  532.   uint32_t blockSize);
  533.  
  534. void ref_biquad_cascade_df1_q15(
  535.   const arm_biquad_casd_df1_inst_q15 * S,
  536.   q15_t * pSrc,
  537.   q15_t * pDst,
  538.   uint32_t blockSize);
  539.  
  540. void ref_conv_f32(
  541.   float32_t * pSrcA,
  542.   uint32_t              srcALen,
  543.   float32_t * pSrcB,
  544.   uint32_t              srcBLen,
  545.   float32_t * pDst);
  546.  
  547. arm_status ref_conv_partial_f32(
  548.   float32_t * pSrcA,
  549.   uint32_t srcALen,
  550.   float32_t * pSrcB,
  551.   uint32_t srcBLen,
  552.   float32_t * pDst,
  553.   uint32_t firstIndex,
  554.   uint32_t numPoints);
  555.  
  556. void ref_conv_q31(
  557.   q31_t * pSrcA,
  558.   uint32_t srcALen,
  559.   q31_t * pSrcB,
  560.   uint32_t srcBLen,
  561.   q31_t * pDst);
  562.  
  563. void ref_conv_fast_q31(
  564.   q31_t * pSrcA,
  565.   uint32_t srcALen,
  566.   q31_t * pSrcB,
  567.   uint32_t srcBLen,
  568.   q31_t * pDst);
  569.  
  570. arm_status ref_conv_partial_q31(
  571.   q31_t * pSrcA,
  572.   uint32_t srcALen,
  573.   q31_t * pSrcB,
  574.   uint32_t srcBLen,
  575.   q31_t * pDst,
  576.   uint32_t firstIndex,
  577.   uint32_t numPoints);
  578.  
  579. arm_status ref_conv_partial_fast_q31(
  580.   q31_t * pSrcA,
  581.   uint32_t srcALen,
  582.   q31_t * pSrcB,
  583.   uint32_t srcBLen,
  584.   q31_t * pDst,
  585.   uint32_t firstIndex,
  586.   uint32_t numPoints);
  587.  
  588. void ref_conv_q15(
  589.   q15_t * pSrcA,
  590.   uint32_t srcALen,
  591.   q15_t * pSrcB,
  592.   uint32_t srcBLen,
  593.   q15_t * pDst);
  594.  
  595. #define ref_conv_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst,  \
  596.                          pScratch1, pScratch2)                  \
  597.     ref_conv_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst)
  598.  
  599. void ref_conv_fast_q15(
  600.   q15_t * pSrcA,
  601.   uint32_t srcALen,
  602.   q15_t * pSrcB,
  603.   uint32_t srcBLen,
  604.   q15_t * pDst);
  605.  
  606. void ref_conv_fast_opt_q15(
  607.   q15_t * pSrcA,
  608.   uint32_t srcALen,
  609.   q15_t * pSrcB,
  610.   uint32_t srcBLen,
  611.   q15_t * pDst,
  612.   q15_t * pScratch1,
  613.   q15_t * pScratch2);
  614.  
  615. arm_status ref_conv_partial_q15(
  616.   q15_t * pSrcA,
  617.   uint32_t srcALen,
  618.   q15_t * pSrcB,
  619.   uint32_t srcBLen,
  620.   q15_t * pDst,
  621.   uint32_t firstIndex,
  622.   uint32_t numPoints);
  623.  
  624. #define ref_conv_partial_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst,  \
  625.                                  firstIndex, numPoints,                 \
  626.                                  pScratch1, pScratch2)                  \
  627.     ref_conv_partial_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst,          \
  628.                          firstIndex, numPoints)
  629.  
  630. arm_status ref_conv_partial_fast_q15(
  631.   q15_t * pSrcA,
  632.   uint32_t srcALen,
  633.   q15_t * pSrcB,
  634.   uint32_t srcBLen,
  635.   q15_t * pDst,
  636.   uint32_t firstIndex,
  637.   uint32_t numPoints);
  638.  
  639. arm_status ref_conv_partial_fast_opt_q15(
  640.   q15_t * pSrcA,
  641.   uint32_t srcALen,
  642.   q15_t * pSrcB,
  643.   uint32_t srcBLen,
  644.   q15_t * pDst,
  645.   uint32_t firstIndex,
  646.   uint32_t numPoints,
  647.   q15_t * pScratch1,
  648.   q15_t * pScratch2);
  649.  
  650. void ref_conv_q7(
  651.   q7_t * pSrcA,
  652.   uint32_t srcALen,
  653.   q7_t * pSrcB,
  654.   uint32_t srcBLen,
  655.   q7_t * pDst);
  656.  
  657. #define ref_conv_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst,   \
  658.                         pScratch1, pScratch2)                   \
  659.     ref_conv_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst)
  660.  
  661. arm_status ref_conv_partial_q7(
  662.   q7_t * pSrcA,
  663.   uint32_t srcALen,
  664.   q7_t * pSrcB,
  665.   uint32_t srcBLen,
  666.   q7_t * pDst,
  667.   uint32_t firstIndex,
  668.   uint32_t numPoints);
  669.  
  670. #define ref_conv_partial_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst,   \
  671.                                 firstIndex, numPoints,                  \
  672.                                 pScratch1, pScratch2)                   \
  673.     ref_conv_partial_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst,           \
  674.                         firstIndex, numPoints)
  675.  
  676. void ref_correlate_f32(
  677.   float32_t * pSrcA,
  678.   uint32_t srcALen,
  679.   float32_t * pSrcB,
  680.   uint32_t srcBLen,
  681.   float32_t * pDst);
  682.  
  683. void ref_correlate_q31(
  684.   q31_t * pSrcA,
  685.   uint32_t srcALen,
  686.   q31_t * pSrcB,
  687.   uint32_t srcBLen,
  688.   q31_t * pDst);
  689.  
  690. void ref_correlate_fast_q31(
  691.   q31_t * pSrcA,
  692.   uint32_t srcALen,
  693.   q31_t * pSrcB,
  694.   uint32_t srcBLen,
  695.   q31_t * pDst);
  696.  
  697. void ref_correlate_q15(
  698.   q15_t * pSrcA,
  699.   uint32_t srcALen,
  700.   q15_t * pSrcB,
  701.   uint32_t srcBLen,
  702.   q15_t * pDst);
  703.  
  704. #define ref_correlate_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst,  \
  705.                          pScratch1)                                  \
  706.     ref_correlate_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst)
  707.  
  708. void ref_correlate_fast_q15(
  709.   q15_t * pSrcA,
  710.   uint32_t srcALen,
  711.   q15_t * pSrcB,
  712.   uint32_t srcBLen,
  713.   q15_t * pDst);
  714.  
  715. void ref_correlate_fast_opt_q15(
  716.   q15_t * pSrcA,
  717.   uint32_t srcALen,
  718.   q15_t * pSrcB,
  719.   uint32_t srcBLen,
  720.   q15_t * pDst,
  721.   q15_t * pScratch);
  722.    
  723. void ref_correlate_q7(
  724.   q7_t * pSrcA,
  725.   uint32_t srcALen,
  726.   q7_t * pSrcB,
  727.   uint32_t srcBLen,
  728.   q7_t * pDst);
  729.  
  730. #define ref_correlate_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst,   \
  731.                         pScratch1, pScratch2)                        \
  732.     ref_correlate_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst)
  733.  
  734. void ref_fir_f32(
  735.         const arm_fir_instance_f32 * S,
  736.         float32_t * pSrc,
  737.         float32_t * pDst,
  738.         uint32_t blockSize);
  739.  
  740. void ref_fir_q31(
  741.   const arm_fir_instance_q31 * S,
  742.   q31_t * pSrc,
  743.   q31_t * pDst,
  744.   uint32_t blockSize);
  745.  
  746. void ref_fir_fast_q31(
  747.   const arm_fir_instance_q31 * S,
  748.   q31_t * pSrc,
  749.   q31_t * pDst,
  750.   uint32_t blockSize);
  751.  
  752. void ref_fir_q15(
  753.   const arm_fir_instance_q15 * S,
  754.   q15_t * pSrc,
  755.   q15_t * pDst,
  756.   uint32_t blockSize);
  757.  
  758. void ref_fir_fast_q15(
  759.   const arm_fir_instance_q15 * S,
  760.   q15_t * pSrc,
  761.   q15_t * pDst,
  762.   uint32_t blockSize);
  763.  
  764. void ref_fir_q7(
  765.   const arm_fir_instance_q7 * S,
  766.   q7_t * pSrc,
  767.   q7_t * pDst,
  768.   uint32_t blockSize);
  769.  
  770. void ref_fir_decimate_f32(
  771.   const arm_fir_decimate_instance_f32 * S,
  772.   float32_t * pSrc,
  773.   float32_t * pDst,
  774.   uint32_t blockSize);
  775.  
  776. void ref_fir_decimate_q31(
  777.   const arm_fir_decimate_instance_q31 * S,
  778.   q31_t * pSrc,
  779.   q31_t * pDst,
  780.   uint32_t blockSize);
  781.  
  782. void ref_fir_decimate_fast_q31(
  783.   const arm_fir_decimate_instance_q31 * S,
  784.   q31_t * pSrc,
  785.   q31_t * pDst,
  786.   uint32_t blockSize);
  787.  
  788. void ref_fir_decimate_q15(
  789.   const arm_fir_decimate_instance_q15 * S,
  790.   q15_t * pSrc,
  791.   q15_t * pDst,
  792.   uint32_t blockSize);
  793.  
  794. void ref_fir_decimate_fast_q15(
  795.   const arm_fir_decimate_instance_q15 * S,
  796.   q15_t * pSrc,
  797.   q15_t * pDst,
  798.   uint32_t blockSize);
  799.  
  800. void ref_fir_lattice_f32(
  801.   const arm_fir_lattice_instance_f32 * S,
  802.   float32_t * pSrc,
  803.   float32_t * pDst,
  804.   uint32_t blockSize);
  805.  
  806. void ref_fir_lattice_q31(
  807.   const arm_fir_lattice_instance_q31 * S,
  808.   q31_t * pSrc,
  809.   q31_t * pDst,
  810.   uint32_t blockSize);
  811.  
  812. void ref_fir_lattice_q15(
  813.   const arm_fir_lattice_instance_q15 * S,
  814.   q15_t * pSrc,
  815.   q15_t * pDst,
  816.   uint32_t blockSize);
  817.  
  818. void ref_fir_sparse_f32(
  819.   arm_fir_sparse_instance_f32 * S,
  820.   float32_t * pSrc,
  821.   float32_t * pDst,
  822.   float32_t * pScratchIn,
  823.   uint32_t blockSize);
  824.  
  825. void ref_fir_sparse_q31(
  826.   arm_fir_sparse_instance_q31 * S,
  827.   q31_t * pSrc,
  828.   q31_t * pDst,
  829.   q31_t * pScratchIn,
  830.   uint32_t blockSize);
  831.  
  832. void ref_fir_sparse_q15(
  833.   arm_fir_sparse_instance_q15 * S,
  834.   q15_t * pSrc,
  835.   q15_t * pDst,
  836.   q15_t * pScratchIn,
  837.   q31_t * pScratchOut,
  838.   uint32_t blockSize);
  839.  
  840. void ref_fir_sparse_q7(
  841.   arm_fir_sparse_instance_q7 * S,
  842.   q7_t *pSrc,
  843.   q7_t *pDst,
  844.   q7_t *pScratchIn,
  845.   q31_t * pScratchOut,
  846.   uint32_t blockSize);
  847.  
  848. void ref_iir_lattice_f32(
  849.   const arm_iir_lattice_instance_f32 * S,
  850.   float32_t * pSrc,
  851.   float32_t * pDst,
  852.   uint32_t blockSize);
  853.  
  854. void ref_iir_lattice_q31(
  855.   const arm_iir_lattice_instance_q31 * S,
  856.   q31_t * pSrc,
  857.   q31_t * pDst,
  858.   uint32_t blockSize);
  859.  
  860. void ref_iir_lattice_q15(
  861.   const arm_iir_lattice_instance_q15 * S,
  862.   q15_t * pSrc,
  863.   q15_t * pDst,
  864.   uint32_t blockSize);
  865.  
  866. void ref_lms_f32(
  867.   const arm_lms_instance_f32 * S,
  868.   float32_t * pSrc,
  869.   float32_t * pRef,
  870.   float32_t * pOut,
  871.   float32_t * pErr,
  872.   uint32_t blockSize);
  873.  
  874. void ref_lms_norm_f32(
  875.   arm_lms_norm_instance_f32 * S,
  876.   float32_t * pSrc,
  877.   float32_t * pRef,
  878.   float32_t * pOut,
  879.   float32_t * pErr,
  880.   uint32_t blockSize);
  881.  
  882. void ref_lms_q31(
  883.   const arm_lms_instance_q31 * S,
  884.   q31_t * pSrc,
  885.   q31_t * pRef,
  886.   q31_t * pOut,
  887.   q31_t * pErr,
  888.   uint32_t blockSize);
  889.  
  890. void ref_lms_norm_q31(
  891.   arm_lms_norm_instance_q31 * S,
  892.   q31_t * pSrc,
  893.   q31_t * pRef,
  894.   q31_t * pOut,
  895.   q31_t * pErr,
  896.   uint32_t blockSize);
  897.  
  898. void ref_lms_q15(
  899.   const arm_lms_instance_q15 * S,
  900.   q15_t * pSrc,
  901.   q15_t * pRef,
  902.   q15_t * pOut,
  903.   q15_t * pErr,
  904.   uint32_t blockSize);
  905.  
  906. void ref_lms_norm_q15(
  907.   arm_lms_norm_instance_q15 * S,
  908.   q15_t * pSrc,
  909.   q15_t * pRef,
  910.   q15_t * pOut,
  911.   q15_t * pErr,
  912.   uint32_t blockSize);
  913.  
  914. void ref_fir_interpolate_f32(
  915.   const arm_fir_interpolate_instance_f32 * S,
  916.   float32_t * pSrc,
  917.   float32_t * pDst,
  918.   uint32_t blockSize);
  919.  
  920. void ref_fir_interpolate_q31(
  921.   const arm_fir_interpolate_instance_q31 * S,
  922.   q31_t * pSrc,
  923.   q31_t * pDst,
  924.   uint32_t blockSize);
  925.  
  926. void ref_fir_interpolate_q15(
  927.   const arm_fir_interpolate_instance_q15 * S,
  928.   q15_t * pSrc,
  929.   q15_t * pDst,
  930.   uint32_t blockSize);
  931.  
  932.         /*
  933.          * Matrix Functions
  934.          */
  935. arm_status ref_mat_cmplx_mult_f32(
  936.   const arm_matrix_instance_f32 * pSrcA,
  937.   const arm_matrix_instance_f32 * pSrcB,
  938.   arm_matrix_instance_f32 * pDst);
  939.  
  940. arm_status ref_mat_cmplx_mult_q31(
  941.   const arm_matrix_instance_q31 * pSrcA,
  942.   const arm_matrix_instance_q31 * pSrcB,
  943.   arm_matrix_instance_q31 * pDst);
  944.  
  945. arm_status ref_mat_cmplx_mult_q15(
  946.   const arm_matrix_instance_q15 * pSrcA,
  947.   const arm_matrix_instance_q15 * pSrcB,
  948.   arm_matrix_instance_q15 * pDst);
  949.  
  950. arm_status ref_mat_inverse_f32(
  951.   const arm_matrix_instance_f32 * pSrc,
  952.   arm_matrix_instance_f32 * pDst);
  953.  
  954. arm_status ref_mat_inverse_f64(
  955.   const arm_matrix_instance_f64 * pSrc,
  956.   arm_matrix_instance_f64 * pDst);
  957.  
  958. arm_status ref_mat_mult_f32(
  959.   const arm_matrix_instance_f32 * pSrcA,
  960.   const arm_matrix_instance_f32 * pSrcB,
  961.   arm_matrix_instance_f32 * pDst);
  962.  
  963. arm_status ref_mat_mult_q31(
  964.   const arm_matrix_instance_q31 * pSrcA,
  965.   const arm_matrix_instance_q31 * pSrcB,
  966.   arm_matrix_instance_q31 * pDst);
  967.  
  968. /* Alias for testing purposes*/
  969. #define ref_mat_mult_fast_q31 ref_mat_mult_q31
  970.  
  971. arm_status ref_mat_mult_q15(
  972.   const arm_matrix_instance_q15 * pSrcA,
  973.   const arm_matrix_instance_q15 * pSrcB,
  974.   arm_matrix_instance_q15 * pDst);
  975.  
  976. /* Alias for testing purposes*/
  977. #define ref_mat_mult_fast_q15 ref_mat_mult_q15
  978.  
  979. arm_status ref_mat_scale_f32(
  980.   const arm_matrix_instance_f32 * pSrc,
  981.   float32_t scale,
  982.   arm_matrix_instance_f32 * pDst);
  983.  
  984. arm_status ref_mat_scale_q31(
  985.   const arm_matrix_instance_q31 * pSrc,
  986.   q31_t scale,
  987.   int32_t shift,
  988.   arm_matrix_instance_q31 * pDst);
  989.  
  990. arm_status ref_mat_scale_q15(
  991.   const arm_matrix_instance_q15 * pSrc,
  992.   q15_t scale,
  993.   int32_t shift,
  994.   arm_matrix_instance_q15 * pDst);
  995.  
  996. arm_status ref_mat_sub_f32(
  997.   const arm_matrix_instance_f32 * pSrcA,
  998.   const arm_matrix_instance_f32 * pSrcB,
  999.   arm_matrix_instance_f32 * pDst);
  1000.  
  1001. arm_status ref_mat_sub_q31(
  1002.   const arm_matrix_instance_q31 * pSrcA,
  1003.   const arm_matrix_instance_q31 * pSrcB,
  1004.   arm_matrix_instance_q31 * pDst);
  1005.  
  1006. arm_status ref_mat_sub_q15(
  1007.   const arm_matrix_instance_q15 * pSrcA,
  1008.   const arm_matrix_instance_q15 * pSrcB,
  1009.   arm_matrix_instance_q15 * pDst);
  1010.  
  1011. arm_status ref_mat_trans_f64(
  1012.   const arm_matrix_instance_f64 * pSrc,
  1013.   arm_matrix_instance_f64 * pDst);
  1014.  
  1015. arm_status ref_mat_trans_f32(
  1016.   const arm_matrix_instance_f32 * pSrc,
  1017.   arm_matrix_instance_f32 * pDst);
  1018.  
  1019. arm_status ref_mat_trans_q31(
  1020.   const arm_matrix_instance_q31 * pSrc,
  1021.   arm_matrix_instance_q31 * pDst);
  1022.  
  1023. arm_status ref_mat_trans_q15(
  1024.   const arm_matrix_instance_q15 * pSrc,
  1025.   arm_matrix_instance_q15 * pDst);
  1026.  
  1027. arm_status ref_mat_add_f32(
  1028.   const arm_matrix_instance_f32 * pSrcA,
  1029.   const arm_matrix_instance_f32 * pSrcB,
  1030.   arm_matrix_instance_f32 * pDst);
  1031.  
  1032. arm_status ref_mat_add_q31(
  1033.   const arm_matrix_instance_q31 * pSrcA,
  1034.   const arm_matrix_instance_q31 * pSrcB,
  1035.   arm_matrix_instance_q31 * pDst);
  1036.  
  1037. arm_status ref_mat_add_q15(
  1038.   const arm_matrix_instance_q15 * pSrcA,
  1039.   const arm_matrix_instance_q15 * pSrcB,
  1040.   arm_matrix_instance_q15 * pDst);
  1041.  
  1042.         /*
  1043.          * Statistics Functions
  1044.          */
  1045. void ref_max_f32(
  1046.   float32_t * pSrc,
  1047.   uint32_t blockSize,
  1048.   float32_t * pResult,
  1049.   uint32_t * pIndex);
  1050.  
  1051. void ref_max_q31(
  1052.   q31_t * pSrc,
  1053.   uint32_t blockSize,
  1054.   q31_t * pResult,
  1055.   uint32_t * pIndex);
  1056.  
  1057. void ref_max_q15(
  1058.   q15_t * pSrc,
  1059.   uint32_t blockSize,
  1060.   q15_t * pResult,
  1061.   uint32_t * pIndex);
  1062.  
  1063. void ref_max_q7(
  1064.   q7_t * pSrc,
  1065.   uint32_t blockSize,
  1066.   q7_t * pResult,
  1067.   uint32_t * pIndex);
  1068.  
  1069. void ref_mean_f32(
  1070.   float32_t * pSrc,
  1071.   uint32_t blockSize,
  1072.   float32_t * pResult);
  1073.  
  1074. void ref_mean_q31(
  1075.   q31_t * pSrc,
  1076.   uint32_t blockSize,
  1077.   q31_t * pResult);
  1078.  
  1079. void ref_mean_q15(
  1080.   q15_t * pSrc,
  1081.   uint32_t blockSize,
  1082.   q15_t * pResult);
  1083.  
  1084. void ref_mean_q7(
  1085.   q7_t * pSrc,
  1086.   uint32_t blockSize,
  1087.   q7_t * pResult);
  1088.  
  1089. void ref_min_f32(
  1090.   float32_t * pSrc,
  1091.   uint32_t blockSize,
  1092.   float32_t * pResult,
  1093.   uint32_t * pIndex);
  1094.  
  1095. void ref_min_q31(
  1096.   q31_t * pSrc,
  1097.   uint32_t blockSize,
  1098.   q31_t * pResult,
  1099.   uint32_t * pIndex);
  1100.  
  1101. void ref_min_q15(
  1102.   q15_t * pSrc,
  1103.   uint32_t blockSize,
  1104.   q15_t * pResult,
  1105.   uint32_t * pIndex);
  1106.  
  1107. void ref_min_q7(
  1108.   q7_t * pSrc,
  1109.   uint32_t blockSize,
  1110.   q7_t * pResult,
  1111.   uint32_t * pIndex);
  1112.  
  1113. void ref_power_f32(
  1114.   float32_t * pSrc,
  1115.   uint32_t blockSize,
  1116.   float32_t * pResult);
  1117.  
  1118. void ref_power_q31(
  1119.   q31_t * pSrc,
  1120.   uint32_t blockSize,
  1121.   q63_t * pResult);
  1122.  
  1123. void ref_power_q15(
  1124.   q15_t * pSrc,
  1125.   uint32_t blockSize,
  1126.   q63_t * pResult);
  1127.  
  1128. void ref_power_q7(
  1129.   q7_t * pSrc,
  1130.   uint32_t blockSize,
  1131.   q31_t * pResult);
  1132.  
  1133. void ref_rms_f32(
  1134.   float32_t * pSrc,
  1135.   uint32_t blockSize,
  1136.   float32_t * pResult);
  1137.  
  1138. void ref_rms_q31(
  1139.   q31_t * pSrc,
  1140.   uint32_t blockSize,
  1141.   q31_t * pResult);
  1142.  
  1143. void ref_rms_q15(
  1144.   q15_t * pSrc,
  1145.   uint32_t blockSize,
  1146.   q15_t * pResult);
  1147.  
  1148. void ref_std_f32(
  1149.   float32_t * pSrc,
  1150.   uint32_t blockSize,
  1151.   float32_t * pResult);
  1152.  
  1153. void ref_std_q31(
  1154.   q31_t * pSrc,
  1155.   uint32_t blockSize,
  1156.   q31_t * pResult);
  1157.  
  1158. void ref_std_q15(
  1159.   q15_t * pSrc,
  1160.   uint32_t blockSize,
  1161.   q15_t * pResult);
  1162.  
  1163. void ref_var_f32(
  1164.   float32_t * pSrc,
  1165.   uint32_t blockSize,
  1166.   float32_t * pResult);
  1167.  
  1168. void ref_var_q31(
  1169.   q31_t * pSrc,
  1170.   uint32_t blockSize,
  1171.   q31_t * pResult);
  1172.  
  1173. void ref_var_q15(
  1174.   q15_t * pSrc,
  1175.   uint32_t blockSize,
  1176.   q15_t * pResult);
  1177.  
  1178.         /*
  1179.          * Support Functions
  1180.          */
  1181. void ref_copy_f32(
  1182.   float32_t * pSrc,
  1183.   float32_t * pDst,
  1184.   uint32_t blockSize);
  1185.  
  1186. void ref_copy_q31(
  1187.   q31_t * pSrc,
  1188.   q31_t * pDst,
  1189.   uint32_t blockSize);
  1190.  
  1191. void ref_copy_q15(
  1192.   q15_t * pSrc,
  1193.   q15_t * pDst,
  1194.   uint32_t blockSize);
  1195.  
  1196. void ref_copy_q7(
  1197.   q7_t * pSrc,
  1198.   q7_t * pDst,
  1199.   uint32_t blockSize);
  1200.  
  1201. void ref_fill_f32(
  1202.   float32_t value,
  1203.   float32_t * pDst,
  1204.   uint32_t blockSize);
  1205.  
  1206. void ref_fill_q31(
  1207.   q31_t value,
  1208.   q31_t * pDst,
  1209.   uint32_t blockSize);
  1210.  
  1211. void ref_fill_q15(
  1212.   q15_t value,
  1213.   q15_t * pDst,
  1214.   uint32_t blockSize);
  1215.  
  1216. void ref_fill_q7(
  1217.   q7_t value,
  1218.   q7_t * pDst,
  1219.   uint32_t blockSize);
  1220.  
  1221. void ref_q31_to_q15(
  1222.   q31_t * pSrc,
  1223.   q15_t * pDst,
  1224.   uint32_t blockSize);
  1225.  
  1226. void ref_q31_to_q7(
  1227.   q31_t * pSrc,
  1228.   q7_t * pDst,
  1229.   uint32_t blockSize);
  1230.  
  1231. void ref_q15_to_q31(
  1232.   q15_t * pSrc,
  1233.   q31_t * pDst,
  1234.   uint32_t blockSize);
  1235.  
  1236. void ref_q15_to_q7(
  1237.   q15_t * pSrc,
  1238.   q7_t * pDst,
  1239.   uint32_t blockSize);
  1240.  
  1241. void ref_q7_to_q31(
  1242.   q7_t * pSrc,
  1243.   q31_t * pDst,
  1244.   uint32_t blockSize);
  1245.  
  1246. void ref_q7_to_q15(
  1247.   q7_t * pSrc,
  1248.   q15_t * pDst,
  1249.   uint32_t blockSize);
  1250.  
  1251. void ref_q63_to_float(
  1252.   q63_t * pSrc,
  1253.   float32_t * pDst,
  1254.   uint32_t blockSize);
  1255.  
  1256. void ref_q31_to_float(
  1257.   q31_t * pSrc,
  1258.   float32_t * pDst,
  1259.   uint32_t blockSize);
  1260.  
  1261. void ref_q15_to_float(
  1262.   q15_t * pSrc,
  1263.   float32_t * pDst,
  1264.   uint32_t blockSize);
  1265.  
  1266. void ref_q7_to_float(
  1267.   q7_t * pSrc,
  1268.   float32_t * pDst,
  1269.   uint32_t blockSize);
  1270.  
  1271. void ref_float_to_q31(
  1272.   float32_t * pSrc,
  1273.   q31_t * pDst,
  1274.   uint32_t blockSize);
  1275.  
  1276. void ref_float_to_q15(
  1277.   float32_t * pSrc,
  1278.   q15_t * pDst,
  1279.   uint32_t blockSize);
  1280.  
  1281. void ref_float_to_q7(
  1282.   float32_t * pSrc,
  1283.   q7_t * pDst,
  1284.   uint32_t blockSize);
  1285.  
  1286.         /*
  1287.          * Transform Functions
  1288.          */
  1289. void ref_cfft_f32(
  1290.    const arm_cfft_instance_f32 * S,
  1291.    float32_t * p1,
  1292.    uint8_t ifftFlag,
  1293.    uint8_t bitReverseFlag);
  1294.          
  1295. void ref_cfft_q31(
  1296.         const arm_cfft_instance_q31 * S,
  1297.     q31_t * p1,
  1298.     uint8_t ifftFlag,
  1299.     uint8_t bitReverseFlag);
  1300.          
  1301. void ref_cfft_q15(
  1302.         const arm_cfft_instance_q15 * S,
  1303.     q15_t * p1,
  1304.     uint8_t ifftFlag,
  1305.     uint8_t bitReverseFlag);
  1306.  
  1307. void ref_cfft_radix2_f32(
  1308.         const arm_cfft_radix2_instance_f32 * S,
  1309.         float32_t * pSrc);
  1310.  
  1311. void ref_cfft_radix2_q31(
  1312.         const arm_cfft_radix2_instance_q31 * S,
  1313.         q31_t * pSrc);
  1314.  
  1315. void ref_cfft_radix2_q15(
  1316.         const arm_cfft_radix2_instance_q15 * S,
  1317.         q15_t * pSrc);
  1318.  
  1319. void ref_cfft_radix4_f32(
  1320.         const arm_cfft_radix4_instance_f32 * S,
  1321.         float32_t * pSrc);
  1322.  
  1323. void ref_cfft_radix4_q31(
  1324.         const arm_cfft_radix4_instance_q31 * S,
  1325.         q31_t * pSrc);
  1326.  
  1327. void ref_cfft_radix4_q15(
  1328.         const arm_cfft_radix4_instance_q15 * S,
  1329.         q15_t * pSrc);
  1330.  
  1331. void ref_rfft_f32(
  1332.         arm_rfft_instance_f32 * S,
  1333.   float32_t * pSrc,
  1334.   float32_t * pDst);
  1335.  
  1336. void ref_rfft_fast_f32(
  1337.         arm_rfft_fast_instance_f32 * S,
  1338.         float32_t * p, float32_t * pOut,
  1339.         uint8_t ifftFlag);
  1340.  
  1341. void ref_rfft_q31(
  1342.   const arm_rfft_instance_q31 * S,
  1343.   q31_t * pSrc,
  1344.   q31_t * pDst);
  1345.  
  1346. void ref_rfft_q15(
  1347.   const arm_rfft_instance_q15 * S,
  1348.   q15_t * pSrc,
  1349.   q15_t * pDst);
  1350.  
  1351. void ref_dct4_f32(
  1352.   const arm_dct4_instance_f32 * S,
  1353.   float32_t * pState,
  1354.   float32_t * pInlineBuffer);
  1355.  
  1356. void ref_dct4_q31(
  1357.   const arm_dct4_instance_q31 * S,
  1358.   q31_t * pState,
  1359.   q31_t * pInlineBuffer);
  1360.  
  1361. void ref_dct4_q15(
  1362.   const arm_dct4_instance_q15 * S,
  1363.   q15_t * pState,
  1364.   q15_t * pInlineBuffer);
  1365.  
  1366.         /*
  1367.          * Intrinsics
  1368.          */
  1369. q31_t ref__QADD8(q31_t x, q31_t y);
  1370. q31_t ref__QSUB8(q31_t x, q31_t y);
  1371. q31_t ref__QADD16(q31_t x, q31_t y);
  1372. q31_t ref__SHADD16(q31_t x, q31_t y);
  1373. q31_t ref__QSUB16(q31_t x, q31_t y);
  1374. q31_t ref__SHSUB16(q31_t x, q31_t y);
  1375. q31_t ref__QASX(q31_t x, q31_t y);
  1376. q31_t ref__SHASX(q31_t x, q31_t y);
  1377. q31_t ref__QSAX(q31_t x, q31_t y);
  1378. q31_t ref__SHSAX(q31_t x, q31_t y);
  1379. q31_t ref__SMUSDX(q31_t x, q31_t y);
  1380. q31_t ref__SMUADX(q31_t x, q31_t y);
  1381. q31_t ref__QADD(q31_t x, q31_t y);
  1382. q31_t ref__QSUB(q31_t x, q31_t y);
  1383. q31_t ref__SMLAD(q31_t x, q31_t y, q31_t sum);
  1384. q31_t ref__SMLADX(q31_t x, q31_t y, q31_t sum);
  1385. q31_t ref__SMLSDX(q31_t x, q31_t y, q31_t sum);
  1386. q63_t ref__SMLALD(q31_t x, q31_t y, q63_t sum);
  1387. q63_t ref__SMLALDX(q31_t x, q31_t y, q63_t sum);
  1388. q31_t ref__SMUAD(q31_t x, q31_t y);
  1389. q31_t ref__SMUSD(q31_t x, q31_t y);
  1390. q31_t ref__SXTB16(q31_t x);
  1391.  
  1392. #ifdef  __cplusplus
  1393. }
  1394. #endif
  1395.  
  1396. #endif
  1397.