Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "arm_math.h"
00025
00052 void arm_cmplx_conj_q15(
00053 q15_t * pSrc,
00054 q15_t * pDst,
00055 uint32_t numSamples)
00056 {
00057 uint32_t blkCnt;
00058 q31_t in1, in2, in3, in4;
00059 q31_t zero = 0;
00060
00061
00062 blkCnt = numSamples >> 2u;
00063
00064
00065
00066 while(blkCnt > 0u)
00067 {
00068
00069
00070
00071 in1 = _SIMD32_OFFSET(pSrc);
00072 in2 = _SIMD32_OFFSET(pSrc + 2);
00073
00074
00075 #ifndef ARM_MATH_BIG_ENDIAN
00076
00077 in1 = __QASX(zero, in1);
00078
00079 #else
00080
00081 in1 = __QSAX(zero, in1);
00082
00083 #endif // #ifndef ARM_MATH_BIG_ENDIAN
00084
00085
00086 in3 = _SIMD32_OFFSET(pSrc + 4);
00087
00088
00089 #ifndef ARM_MATH_BIG_ENDIAN
00090
00091 in2 = __QASX(zero, in2);
00092
00093 #else
00094
00095 in2 = __QSAX(zero, in2);
00096
00097 #endif // #ifndef ARM_MATH_BIG_ENDIAN
00098
00099
00100 in4 = _SIMD32_OFFSET(pSrc + 6);
00101
00102
00103 in1 = ((uint32_t)in1 >> 16) | ((uint32_t)in1 << 16);
00104 in2 = ((uint32_t)in2 >> 16) | ((uint32_t)in2 << 16);
00105
00106
00107 #ifndef ARM_MATH_BIG_ENDIAN
00108
00109 in3 = __QASX(zero, in3);
00110 in4 = __QASX(zero, in4);
00111
00112 #else
00113
00114 in3 = __QSAX(zero, in3);
00115 in4 = __QSAX(zero, in4);
00116
00117 #endif // #ifndef ARM_MATH_BIG_ENDIAN
00118
00119
00120 _SIMD32_OFFSET(pDst) = in1;
00121 _SIMD32_OFFSET(pDst + 2) = in2;
00122
00123
00124 in3 = ((uint32_t)in3 >> 16) | ((uint32_t)in3 << 16);
00125 in4 = ((uint32_t)in4 >> 16) | ((uint32_t)in4 << 16);
00126
00127
00128 _SIMD32_OFFSET(pDst + 4) = in3;
00129
00130
00131 pSrc += 8u;
00132
00133
00134 _SIMD32_OFFSET(pDst + 6) = in4;
00135
00136 pDst += 8u;
00137
00138
00139 blkCnt--;
00140 }
00141
00142
00143
00144 blkCnt = numSamples % 0x4u;
00145
00146 while(blkCnt > 0u)
00147 {
00148
00149
00150 *pDst++ = *pSrc++;
00151 #ifdef CCS
00152 *pDst++ = __SSATA(-*pSrc++, 0, 16);
00153 #else
00154 *pDst++ = __SSAT(-*pSrc++, 16);
00155 #endif
00156
00157
00158 blkCnt--;
00159 }
00160 }
00161