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
00056 void arm_add_f32(
00057 float32_t * pSrcA,
00058 float32_t * pSrcB,
00059 float32_t * pDst,
00060 uint32_t blockSize)
00061 {
00062 uint32_t blkCnt;
00063 float32_t inA1, inA2, inA3, inA4;
00064 float32_t inB1, inB2, inB3, inB4;
00065
00066
00067 blkCnt = blockSize >> 3u;
00068
00069
00070
00071 while(blkCnt > 0u)
00072 {
00073
00074
00075
00076
00077 inA1 = *pSrcA;
00078 inB1 = *pSrcB;
00079 inA2 = *(pSrcA + 1);
00080 inB2 = *(pSrcB + 1);
00081 inA3 = *(pSrcA + 2);
00082 inB3 = *(pSrcB + 2);
00083 inA4 = *(pSrcA + 3);
00084 inB4 = *(pSrcB + 3);
00085
00086
00087
00088 *pDst = inA1 + inB1;
00089 *(pDst + 1) = inA2 + inB2;
00090 *(pDst + 2) = inA3 + inB3;
00091 *(pDst + 3) = inA4 + inB4;
00092
00093
00094 inA1 = *(pSrcA + 4);
00095 inB1 = *(pSrcB + 4);
00096 inA2 = *(pSrcA + 5);
00097 inB2 = *(pSrcB + 5);
00098 inA3 = *(pSrcA + 6);
00099 inB3 = *(pSrcB + 6);
00100 inA4 = *(pSrcA + 7);
00101 inB4 = *(pSrcB + 7);
00102
00103
00104
00105 *(pDst + 4) = inA1 + inB1;
00106 *(pDst + 5) = inA2 + inB2;
00107 *(pDst + 6) = inA3 + inB3;
00108 *(pDst + 7) = inA4 + inB4;
00109
00110
00111 pSrcA += 8u;
00112 pSrcB += 8u;
00113 pDst += 8u;
00114
00115
00116 blkCnt--;
00117 }
00118
00119
00120
00121 blkCnt = blockSize % 0x8u;
00122
00123 while(blkCnt > 0u)
00124 {
00125
00126
00127 inA1 = *pSrcA++;
00128 inB1 = *pSrcB++;
00129
00130 *pDst++ = inA1 + inB1;
00131
00132
00133 blkCnt--;
00134 }
00135 }
00136