diff --git a/Include/arm_helium_utils.h b/Include/arm_helium_utils.h index e39a8866..7a6fa9c2 100755 --- a/Include/arm_helium_utils.h +++ b/Include/arm_helium_utils.h @@ -63,10 +63,10 @@ __STATIC_FORCEINLINE float32_t vecAddAcrossF32Mve(float32x4_t in) return acc; } -__STATIC_FORCEINLINE float16_t vecAddAcrossF16Mve(float16x8_t in) +__STATIC_FORCEINLINE _Float16 vecAddAcrossF16Mve(float16x8_t in) { float16x8_t tmpVec; - float16_t acc; + _Float16 acc; tmpVec = (float16x8_t) vrev32q_s16((int16x8_t) in); in = vaddq_f16(tmpVec, in); diff --git a/Source/BasicMathFunctions/arm_dot_prod_f16.c b/Source/BasicMathFunctions/arm_dot_prod_f16.c index fca24400..fd61160a 100755 --- a/Source/BasicMathFunctions/arm_dot_prod_f16.c +++ b/Source/BasicMathFunctions/arm_dot_prod_f16.c @@ -126,7 +126,7 @@ void arm_dot_prod_f16( float16_t * result) { uint32_t blkCnt; /* Loop counter */ - float16_t sum = 0.0f; /* Temporary return variable */ + _Float16 sum = 0.0f; /* Temporary return variable */ #if defined (ARM_MATH_LOOPUNROLL) && !defined(ARM_MATH_AUTOVECTORIZE) @@ -141,13 +141,13 @@ void arm_dot_prod_f16( /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ /* Calculate dot product and store result in a temporary buffer. */ - sum += (*pSrcA++) * (*pSrcB++); + sum += (_Float16)(*pSrcA++) * (_Float16)(*pSrcB++); - sum += (*pSrcA++) * (*pSrcB++); + sum += (_Float16)(*pSrcA++) * (_Float16)(*pSrcB++); - sum += (*pSrcA++) * (*pSrcB++); + sum += (_Float16)(*pSrcA++) * (_Float16)(*pSrcB++); - sum += (*pSrcA++) * (*pSrcB++); + sum += (_Float16)(*pSrcA++) * (_Float16)(*pSrcB++); /* Decrement loop counter */ blkCnt--; @@ -168,7 +168,7 @@ void arm_dot_prod_f16( /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ /* Calculate dot product and store result in a temporary buffer. */ - sum += (*pSrcA++) * (*pSrcB++); + sum += (_Float16)(*pSrcA++) * (_Float16)(*pSrcB++); /* Decrement loop counter */ blkCnt--; diff --git a/Source/SVMFunctions/arm_svm_linear_predict_f16.c b/Source/SVMFunctions/arm_svm_linear_predict_f16.c index c73a852c..c4cbac24 100755 --- a/Source/SVMFunctions/arm_svm_linear_predict_f16.c +++ b/Source/SVMFunctions/arm_svm_linear_predict_f16.c @@ -50,6 +50,7 @@ #include "arm_helium_utils.h" +#include void arm_svm_linear_predict_f16( const arm_svm_linear_instance_f16 *S, const float16_t * in, @@ -65,7 +66,7 @@ void arm_svm_linear_predict_f16( uint32_t row; uint32_t blkCnt; /* loop counters */ const float16_t *pDualCoef = S->dualCoefficients; - float16_t sum = S->intercept; + _Float16 sum = S->intercept; row = numRows; /* @@ -145,10 +146,10 @@ void arm_svm_linear_predict_f16( /* * Sum the partial parts */ - sum += *pDualCoef++ * vecAddAcrossF16Mve(acc0); - sum += *pDualCoef++ * vecAddAcrossF16Mve(acc1); - sum += *pDualCoef++ * vecAddAcrossF16Mve(acc2); - sum += *pDualCoef++ * vecAddAcrossF16Mve(acc3); + sum += (_Float16)*pDualCoef++ * vecAddAcrossF16Mve(acc0); + sum += (_Float16)*pDualCoef++ * vecAddAcrossF16Mve(acc1); + sum += (_Float16)*pDualCoef++ * vecAddAcrossF16Mve(acc2); + sum += (_Float16)*pDualCoef++ * vecAddAcrossF16Mve(acc3); pSrcA += numCols * 4; /* @@ -215,8 +216,8 @@ void arm_svm_linear_predict_f16( /* * Sum the partial parts */ - sum += *pDualCoef++ * vecAddAcrossF16Mve(acc0); - sum += *pDualCoef++ * vecAddAcrossF16Mve(acc1); + sum += (_Float16)*pDualCoef++ * vecAddAcrossF16Mve(acc0); + sum += (_Float16)*pDualCoef++ * vecAddAcrossF16Mve(acc1); pSrcA += numCols * 2; row -= 2; @@ -269,7 +270,7 @@ void arm_svm_linear_predict_f16( /* * Sum the partial parts */ - sum += *pDualCoef++ * vecAddAcrossF16Mve(acc0); + sum += (_Float16)*pDualCoef++ * vecAddAcrossF16Mve(acc0); } diff --git a/Source/SVMFunctions/arm_svm_polynomial_predict_f16.c b/Source/SVMFunctions/arm_svm_polynomial_predict_f16.c index 93bf97d1..31848cf6 100755 --- a/Source/SVMFunctions/arm_svm_polynomial_predict_f16.c +++ b/Source/SVMFunctions/arm_svm_polynomial_predict_f16.c @@ -67,7 +67,7 @@ void arm_svm_polynomial_predict_f16( uint32_t row; uint32_t blkCnt; /* loop counters */ const float16_t *pDualCoef = S->dualCoefficients; - float16_t sum = S->intercept; + _Float16 sum = S->intercept; f16x8_t vSum = vdupq_n_f16(0.0f); row = numRows; diff --git a/Testing/TestScripts/doc/Format.py b/Testing/TestScripts/doc/Format.py index dffb3394..d38182d6 100755 --- a/Testing/TestScripts/doc/Format.py +++ b/Testing/TestScripts/doc/Format.py @@ -11,7 +11,7 @@ def joinit(iterable, delimiter): yield x # To format, in HTML, the cores in the right order. -# First we order tje categories +# First we order the categories # Then we order the cores in each category # The final ORDEREDCORES is what is used # to order tjhe values @@ -33,6 +33,8 @@ for cat in CORTEXCATEGORIES: quit() ORDEREDCORES += cores +ORDEREDTYPES=["q7","q15","q31","u32","f16","f32","f64"] + class Markdown: def __init__(self,output): self._id=0 @@ -485,13 +487,14 @@ def reorder(p,v): return(result) class HTML: - def __init__(self,output,regMode): + def __init__(self,output,regMode,reorder): self._id=0 self._sectionID = 0 self._barID = 0 self._histID = 0 self._output = output self._regMode = regMode + self._reorder = reorder def visitBarChart(self,bar): data=bar.data @@ -545,7 +548,10 @@ myhist(thehdata%d,"#hi%d"); self._output.write(str(col)) self._output.write("\n") - perm,restricted=permutation(ORDEREDCORES,table.cores) + if self._reorder: + perm,restricted=permutation(ORDEREDCORES,table.cores) + else: + restricted = table.cores for col in restricted: if firstCore: @@ -570,7 +576,10 @@ myhist(thehdata%d,"#hi%d"); params=row[0:nbParams] values=row[nbParams:] - row = params + reorder(perm,values) + if self._reorder: + row = params + reorder(perm,values) + else: + row = params + values for elem in row: if i < nbParams: diff --git a/Testing/extractDb.py b/Testing/extractDb.py index 3b9daaff..a7230350 100755 --- a/Testing/extractDb.py +++ b/Testing/extractDb.py @@ -55,6 +55,7 @@ parser.add_argument('-g', action='store_true', help="Include graphs in regressio parser.add_argument('-details', action='store_true', help="Details about runids") parser.add_argument('-lastid', action='store_true', help="Get last ID") parser.add_argument('-comments', nargs='?',type = str, default="comments.txt", help="Comment section") +parser.add_argument('-byd', action='store_true', help="Result oganized by datatype") # For runid or runid range parser.add_argument('others', nargs=argparse.REMAINDER,help="Run ID") @@ -685,7 +686,10 @@ try: if args.t=="md": document.accept(Markdown(output)) if args.t=="html": - document.accept(HTML(output,args.r)) + reorder=True + if args.byc: + reorder=False + document.accept(HTML(output,args.r,reorder)) finally: c.close()