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
00049 void arm_abs_q31(
00050 q31_t * pSrc,
00051 q31_t * pDst,
00052 uint32_t blockSize)
00053 {
00054 uint32_t blkCnt;
00055 q31_t in1, in2, in3, in4;
00056 q31_t out1, out2, out3, out4;
00057
00058
00059 blkCnt = blockSize >> 3u;
00060
00061
00062
00063 while(blkCnt > 0u)
00064 {
00065
00066
00067
00068 in1 = *pSrc;
00069 in2 = *(pSrc + 1);
00070 in3 = *(pSrc + 2);
00071
00072
00073 out1 = (in1 > 0) ? in1 : __QSUB(0, in1);
00074
00075
00076 in4 = *(pSrc + 3);
00077
00078
00079 out2 = (in2 > 0) ? in2 : __QSUB(0, in2);
00080
00081
00082 *pDst = out1;
00083
00084
00085 out3 = (in3 > 0) ? in3 : __QSUB(0, in3);
00086
00087
00088 in1 = *(pSrc + 4);
00089
00090
00091 out4 = (in4 > 0) ? in4 : __QSUB(0, in4);
00092
00093
00094 *(pDst + 1) = out2;
00095
00096
00097 in2 = *(pSrc + 5);
00098
00099
00100 out1 = (in1 > 0) ? in1 : __QSUB(0, in1);
00101
00102
00103 *(pDst + 2) = out3;
00104
00105
00106 out2 = (in2 > 0) ? in2 : __QSUB(0, in2);
00107
00108
00109 in3 = *(pSrc + 6);
00110
00111
00112 *(pDst + 3) = out4;
00113
00114
00115 in4 = *(pSrc + 7);
00116
00117
00118 out3 = (in3 > 0) ? in3 : __QSUB(0, in3);
00119
00120
00121 *(pDst + 4) = out1;
00122
00123
00124 out4 = (in4 > 0) ? in4 : __QSUB(0, in4);
00125
00126
00127 *(pDst + 5) = out2;
00128 *(pDst + 6) = out3;
00129
00130
00131 pSrc += 8u;
00132
00133
00134 *(pDst + 7) = out4;
00135
00136
00137 pDst += 8u;
00138
00139
00140 blkCnt--;
00141 }
00142
00143
00144
00145 blkCnt = blockSize % 0x8u;
00146
00147 while(blkCnt > 0u)
00148 {
00149
00150
00151 in1 = *pSrc++;
00152 *pDst++ = (in1 > 0) ? in1 : __QSUB(0, in1);
00153
00154
00155 blkCnt--;
00156 }
00157 }
00158