From 865419778b53cbb85628743b48d8c7e6341542ff Mon Sep 17 00:00:00 2001 From: Christophe Favergeon Date: Tue, 30 Aug 2022 08:41:15 +0200 Subject: [PATCH] Added tests for the new accumulate functions. Corrected build issue on Neon without aarch64 support. Corrected some Doxygen issues --- Source/StatisticsFunctions/Config.cmake | 3 + .../StatisticsFunctions/StatisticsFunctions.c | 4 +- .../StatisticsFunctions/arm_accumulate_f16.c | 6 +- .../StatisticsFunctions/arm_accumulate_f32.c | 59 +- .../StatisticsFunctions/arm_accumulate_f64.c | 4 +- Testing/PatternGeneration/Stats.py | 52 +- .../Stats/StatsF16/InputAccumulate1_f16.txt | 602 ++++++++++++++++++ .../StatsF16/InputAccumulateConfig1_s16.txt | 12 + .../DSP/Stats/StatsF16/RefAccumulate1_f16.txt | 10 + .../Stats/StatsF32/InputAccumulate1_f32.txt | 602 ++++++++++++++++++ .../StatsF32/InputAccumulateConfig1_s16.txt | 12 + .../DSP/Stats/StatsF32/RefAccumulate1_f32.txt | 10 + .../Stats/StatsF64/InputAccumulate1_f64.txt | 602 ++++++++++++++++++ .../StatsF64/InputAccumulateConfig1_s16.txt | 12 + .../DSP/Stats/StatsF64/RefAccumulate1_f64.txt | 10 + Testing/Source/Tests/StatsTestsF16.cpp | 34 + Testing/Source/Tests/StatsTestsF32.cpp | 33 + Testing/Source/Tests/StatsTestsF64.cpp | 33 + Testing/desc.txt | 11 +- Testing/desc_f16.txt | 5 + 20 files changed, 2094 insertions(+), 22 deletions(-) create mode 100644 Testing/Patterns/DSP/Stats/StatsF16/InputAccumulate1_f16.txt create mode 100644 Testing/Patterns/DSP/Stats/StatsF16/InputAccumulateConfig1_s16.txt create mode 100644 Testing/Patterns/DSP/Stats/StatsF16/RefAccumulate1_f16.txt create mode 100644 Testing/Patterns/DSP/Stats/StatsF32/InputAccumulate1_f32.txt create mode 100644 Testing/Patterns/DSP/Stats/StatsF32/InputAccumulateConfig1_s16.txt create mode 100644 Testing/Patterns/DSP/Stats/StatsF32/RefAccumulate1_f32.txt create mode 100644 Testing/Patterns/DSP/Stats/StatsF64/InputAccumulate1_f64.txt create mode 100644 Testing/Patterns/DSP/Stats/StatsF64/InputAccumulateConfig1_s16.txt create mode 100644 Testing/Patterns/DSP/Stats/StatsF64/RefAccumulate1_f64.txt diff --git a/Source/StatisticsFunctions/Config.cmake b/Source/StatisticsFunctions/Config.cmake index dc42d0d6..204f5a84 100644 --- a/Source/StatisticsFunctions/Config.cmake +++ b/Source/StatisticsFunctions/Config.cmake @@ -81,6 +81,8 @@ target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_mse_q31.c) target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_mse_f16.c) target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_mse_f32.c) target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_mse_f64.c) +target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_accumulate_f64.c) +target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_accumulate_f32.c) if ((NOT ARMAC5) AND (NOT DISABLEFLOAT16)) @@ -102,4 +104,5 @@ target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_absmax_f16.c) target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_absmin_f16.c) target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_absmax_no_idx_f16.c) target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_absmin_no_idx_f16.c) +target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_accumulate_f16.c) endif() \ No newline at end of file diff --git a/Source/StatisticsFunctions/StatisticsFunctions.c b/Source/StatisticsFunctions/StatisticsFunctions.c index 00f3c90a..1b3a215e 100644 --- a/Source/StatisticsFunctions/StatisticsFunctions.c +++ b/Source/StatisticsFunctions/StatisticsFunctions.c @@ -100,7 +100,5 @@ #include "arm_mse_f64.c" #include "arm_accumulate_f32.c" #include "arm_accumulate_f64.c" -#include "arm_accumulate_q7.c" -#include "arm_accumulate_q15.c" -#include "arm_accumulate_q31.c" + diff --git a/Source/StatisticsFunctions/arm_accumulate_f16.c b/Source/StatisticsFunctions/arm_accumulate_f16.c index e2a778c4..3822b048 100755 --- a/Source/StatisticsFunctions/arm_accumulate_f16.c +++ b/Source/StatisticsFunctions/arm_accumulate_f16.c @@ -36,7 +36,7 @@ */ /** - @defgroup Accumulation + @defgroup Accumulation Accumulation functions Calculates the accumulation of the input vector. Sum is defined as the addition of the elements in the vector. The underlying algorithm is used: @@ -57,7 +57,7 @@ @brief accumulate value of a floating-point vector. @param[in] pSrc points to the input vector. @param[in] blockSize number of samples in input vector. - @param[out] pResult sum value returned here. + @param[out] pResult sum of values in input vector. @return none */ @@ -67,7 +67,7 @@ void arm_accumulate_f16( float16_t * pResult) { uint32_t blkCnt; /* Loop counter */ - float16_t sum = 0.0f; /* Temporary result storage */ + float16_t sum = 0.0f16; /* Temporary result storage */ #if defined (ARM_MATH_LOOPUNROLL) && !defined(ARM_MATH_AUTOVECTORIZE) diff --git a/Source/StatisticsFunctions/arm_accumulate_f32.c b/Source/StatisticsFunctions/arm_accumulate_f32.c index 7fce8f5b..8aca789c 100644 --- a/Source/StatisticsFunctions/arm_accumulate_f32.c +++ b/Source/StatisticsFunctions/arm_accumulate_f32.c @@ -42,12 +42,64 @@ @brief Accumulation value of a floating-point vector. @param[in] pSrc points to the input vector. @param[in] blockSize number of samples in input vector. - @param[out] pResult sum value returned here. + @param[out] pResult sum of values in input vector. @return none */ +#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) -#if defined(ARM_MATH_NEON_EXPERIMENTAL) && !defined(ARM_MATH_AUTOVECTORIZE) +#include "arm_helium_utils.h" + +void arm_accumulate_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + f32x4_t vecA; + f32x4_t vecSum; + uint32_t blkCnt; + float32_t sum = 0.0f; + vecSum = vdupq_n_f32(0.0f); + + /* Compute 4 outputs at a time */ + blkCnt = blockSize >> 2U; + while (blkCnt > 0U) + { + /* + * C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] + * Calculate dot product and then store the result in a temporary buffer. + * and advance vector source and destination pointers + */ + vecA = vld1q_f32(pSrc); + pSrc += 4; + + vecSum = vaddq_f32(vecSum, vecA); + /* + * Decrement the blockSize loop counter + */ + blkCnt --; + } + + + blkCnt = blockSize & 3; + if (blkCnt > 0U) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + + mve_pred16_t p0 = vctp32q(blkCnt); + vecA = vld1q(pSrc); + vecSum = vaddq_m(vecSum,vecSum, vecA, p0); + } + + sum = vecAddAcrossF32Mve(vecSum); + + /* Store result in destination buffer */ + *pResult = sum; +} + +#else + +#if defined(ARM_MATH_NEON) && !defined(ARM_MATH_AUTOVECTORIZE) void arm_accumulate_f32( const float32_t * pSrc, uint32_t blockSize, @@ -96,6 +148,7 @@ void arm_accumulate_f32( /* Store the result to the destination */ *pResult = sum; } + #else void arm_accumulate_f32( const float32_t * pSrc, @@ -150,7 +203,7 @@ void arm_accumulate_f32( } #endif /* #if defined(ARM_MATH_NEON) */ - +#endif /* #if defined(ARM_MATH_MVEF) */ /** @} end of Accumulation group */ diff --git a/Source/StatisticsFunctions/arm_accumulate_f64.c b/Source/StatisticsFunctions/arm_accumulate_f64.c index 4cda86b3..4af3ee50 100644 --- a/Source/StatisticsFunctions/arm_accumulate_f64.c +++ b/Source/StatisticsFunctions/arm_accumulate_f64.c @@ -42,10 +42,10 @@ @brief Accumulation value of a floating-point vector. @param[in] pSrc points to the input vector. @param[in] blockSize number of samples in input vector. - @param[out] pResult sum value returned here. + @param[out] pResult sum of values in input vector. @return none */ -#if defined(ARM_MATH_NEON) +#if defined(ARM_MATH_NEON) && defined(__aarch64__) void arm_accumulate_f64( const float64_t * pSrc, uint32_t blockSize, diff --git a/Testing/PatternGeneration/Stats.py b/Testing/PatternGeneration/Stats.py index d78d1b51..085258a4 100755 --- a/Testing/PatternGeneration/Stats.py +++ b/Testing/PatternGeneration/Stats.py @@ -477,8 +477,7 @@ def writeTests(config,nb,format): # So new tests have to be added after existing ones def writeNewsTests(config,nb,format): NBSAMPLES = 300 - if format==Tools.F16: - config.setOverwrite(True) + data1=np.random.randn(NBSAMPLES) data1 = Tools.normalize(data1) @@ -492,8 +491,40 @@ def writeNewsTests(config,nb,format): config.writeInput(2, data2,"InputNew") nb=generateOperatorTests(config,nb,format,data1,data2,mseTest,"MSEVals") - config.setOverwrite(False) + return(nb) + +def writeAccumulateTests(config,nb,format): + NBSAMPLES = 300 + data1=np.random.randn(NBSAMPLES) + + # First value is the number of tests + # Other values are the number of samples in each test + nbsamples = [4] + nbiters = Tools.loopnb(format,Tools.TAILONLY) + nbsamples.append(nbiters) + + nbiters = Tools.loopnb(format,Tools.BODYONLY) + nbsamples.append(nbiters) + + nbiters = Tools.loopnb(format,Tools.BODYANDTAIL) + nbsamples.append(nbiters) + + nbsamples.append(NBSAMPLES) + ref=[] + + + for nb in nbsamples[1:]: + t = np.sum(data1[:nb]) + ref.append(t) + + config.writeInput(1, data1,"InputAccumulate") + config.writeInputS16(1, nbsamples,"InputAccumulateConfig") + config.writeReference(1, ref,"RefAccumulate") + + return(nb+1) + + def generateBenchmark(config,format): NBSAMPLES = 256 @@ -536,24 +567,27 @@ def generatePatterns(): nb=writeTests(configf32,1,0) nb=writeF32OnlyTests(configf32,22) - writeNewsTests(configf32,nb,Tools.F32) + nb=writeNewsTests(configf32,nb,Tools.F32) + nb=writeAccumulateTests(configf32,nb,Tools.F32) nb=writeTests(configf64,1,Tools.F64) nb=writeF64OnlyTests(configf64,22) - writeNewsTests(configf64,nb,Tools.F64) + nb=writeNewsTests(configf64,nb,Tools.F64) + nb=writeAccumulateTests(configf64,nb,Tools.F64) nb=writeTests(configq31,1,31) - writeNewsTests(configq31,nb,Tools.Q31) + nb=writeNewsTests(configq31,nb,Tools.Q31) nb=writeTests(configq15,1,15) - writeNewsTests(configq15,nb,Tools.Q15) + nb=writeNewsTests(configq15,nb,Tools.Q15) nb=writeTests(configq7,1,7) - writeNewsTests(configq7,nb,Tools.Q7) + nb=writeNewsTests(configq7,nb,Tools.Q7) nb=writeTests(configf16,1,16) nb=writeF16OnlyTests(configf16,22) - writeNewsTests(configf16,nb,Tools.F16) + nb=writeNewsTests(configf16,nb,Tools.F16) + nb=writeAccumulateTests(configf16,nb,Tools.F16) generateBenchmark(configf64, Tools.F64) generateBenchmark(configf32, Tools.F32) diff --git a/Testing/Patterns/DSP/Stats/StatsF16/InputAccumulate1_f16.txt b/Testing/Patterns/DSP/Stats/StatsF16/InputAccumulate1_f16.txt new file mode 100644 index 00000000..50d90c95 --- /dev/null +++ b/Testing/Patterns/DSP/Stats/StatsF16/InputAccumulate1_f16.txt @@ -0,0 +1,602 @@ +H +300 +// 0.403228 +0x3674 +// 0.790535 +0x3a53 +// -1.765692 +0xbf10 +// 0.564353 +0x3884 +// 0.135080 +0x3053 +// -0.646656 +0xb92c +// 0.647246 +0x392e +// 0.108600 +0x2ef3 +// 0.255541 +0x3417 +// -0.587044 +0xb8b2 +// -0.863863 +0xbae9 +// -0.721468 +0xb9c6 +// -1.283427 +0xbd22 +// -0.948428 +0xbb96 +// 0.620959 +0x38f8 +// 1.702865 +0x3ed0 +// 0.077509 +0x2cf6 +// 2.637373 +0x4146 +// -0.508381 +0xb811 +// 0.879278 +0x3b09 +// -0.800507 +0xba67 +// 0.146854 +0x30b3 +// 0.080875 +0x2d2d +// -0.004483 +0x9c97 +// 1.082495 +0x3c54 +// 0.629065 +0x3908 +// 1.153966 +0x3c9e +// 0.596096 +0x38c5 +// 1.799158 +0x3f32 +// -0.904648 +0xbb3d +// 0.234833 +0x3384 +// 0.406887 +0x3683 +// -0.571166 +0xb892 +// 0.229944 +0x335c +// -0.222729 +0xb321 +// -2.061951 +0xc020 +// -1.736408 +0xbef2 +// 0.433383 +0x36ef +// -0.573268 +0xb896 +// 0.898404 +0x3b30 +// 0.790407 +0x3a53 +// 1.047674 +0x3c31 +// -0.324671 +0xb532 +// 0.892667 +0x3b24 +// 0.867253 +0x3af0 +// -0.839434 +0xbab7 +// 0.296731 +0x34bf +// -2.105106 +0xc036 +// -1.402729 +0xbd9c +// 0.188074 +0x3205 +// 0.404535 +0x3679 +// -0.336336 +0xb562 +// -0.797713 +0xba62 +// 1.218317 +0x3ce0 +// 0.727737 +0x39d2 +// -0.920469 +0xbb5d +// -0.128949 +0xb020 +// -0.433229 +0xb6ef +// -1.677798 +0xbeb6 +// -1.193025 +0xbcc6 +// 0.854931 +0x3ad7 +// -0.099621 +0xae60 +// 2.091603 +0x402f +// 0.629319 +0x3909 +// -0.512076 +0xb819 +// -1.936900 +0xbfbf +// 1.724247 +0x3ee6 +// 0.156420 +0x3101 +// -0.651338 +0xb936 +// -0.633550 +0xb912 +// -2.303735 +0xc09c +// 0.179141 +0x31bc +// 0.685227 +0x397b +// 0.387766 +0x3634 +// 1.371416 +0x3d7c +// -1.918012 +0xbfac +// 0.406116 +0x367f +// -0.183715 +0xb1e1 +// 0.232746 +0x3373 +// -1.342283 +0xbd5e +// 0.470318 +0x3786 +// -2.182310 +0xc05d +// 0.741559 +0x39ef +// -0.643764 +0xb926 +// 0.048399 +0x2a32 +// -0.540895 +0xb854 +// 1.106616 +0x3c6d +// -0.323150 +0xb52c +// 0.341424 +0x3576 +// -1.434152 +0xbdbd +// -0.448837 +0xb72e +// 1.274818 +0x3d19 +// -0.079564 +0xad18 +// -0.806076 +0xba73 +// -0.261651 +0xb430 +// 0.081918 +0x2d3e +// 1.030944 +0x3c20 +// -0.141107 +0xb084 +// 0.909641 +0x3b47 +// -1.363575 +0xbd74 +// -0.373532 +0xb5fa +// -0.199387 +0xb261 +// 0.026760 +0x26da +// -0.840572 +0xbab9 +// -0.381145 +0xb619 +// -1.667549 +0xbeac +// 1.216329 +0x3cde +// -0.891745 +0xbb22 +// 0.197249 +0x3250 +// 0.914707 +0x3b51 +// 0.474276 +0x3797 +// -0.936337 +0xbb7e +// 1.875325 +0x3f80 +// 0.309868 +0x34f5 +// -1.402561 +0xbd9c +// -0.847870 +0xbac8 +// -0.613946 +0xb8e9 +// 1.454202 +0x3dd1 +// -0.934711 +0xbb7a +// 1.348542 +0x3d65 +// 0.966193 +0x3bbb +// 0.462141 +0x3765 +// 0.008913 +0x2090 +// -0.964340 +0xbbb7 +// 0.926279 +0x3b69 +// -1.422982 +0xbdb1 +// -0.266019 +0xb442 +// -0.841451 +0xbabb +// 0.817545 +0x3a8a +// -0.847594 +0xbac8 +// 0.675984 +0x3968 +// -0.976700 +0xbbd0 +// -1.046232 +0xbc2f +// 0.299853 +0x34cc +// 1.914445 +0x3fa8 +// -1.172457 +0xbcb1 +// -0.431608 +0xb6e8 +// -1.240815 +0xbcf7 +// -0.290280 +0xb4a5 +// 0.517154 +0x3823 +// 0.129529 +0x3025 +// 0.019651 +0x2508 +// 0.010109 +0x212d +// -0.456176 +0xb74c +// 0.072539 +0x2ca4 +// -1.058758 +0xbc3c +// 0.565836 +0x3887 +// -0.906917 +0xbb41 +// 0.007338 +0x1f84 +// 0.280566 +0x347d +// 0.894503 +0x3b28 +// 0.266863 +0x3445 +// 0.132966 +0x3041 +// 0.767206 +0x3a23 +// -0.686024 +0xb97d +// -0.965636 +0xbbba +// -1.063983 +0xbc42 +// -0.154416 +0xb0f1 +// 0.362044 +0x35cb +// -1.199676 +0xbccc +// 0.653584 +0x393b +// -0.303124 +0xb4da +// 0.327124 +0x353c +// 0.090162 +0x2dc5 +// 0.255816 +0x3418 +// -0.248543 +0xb3f4 +// -0.599767 +0xb8cc +// 0.877696 +0x3b06 +// 1.957729 +0x3fd5 +// -0.416063 +0xb6a8 +// 0.894641 +0x3b28 +// 0.893332 +0x3b26 +// 1.804270 +0x3f38 +// 0.571469 +0x3892 +// -0.538999 +0xb850 +// -0.711532 +0xb9b1 +// -0.302412 +0xb4d7 +// -0.964833 +0xbbb8 +// -0.598038 +0xb8c9 +// -0.654437 +0xb93c +// 0.631505 +0x390d +// 1.409936 +0x3da4 +// 0.213330 +0x32d4 +// -0.311454 +0xb4fc +// 0.398628 +0x3661 +// -0.706000 +0xb9a6 +// -0.753669 +0xba08 +// 0.309298 +0x34f3 +// 1.492094 +0x3df8 +// 1.596098 +0x3e62 +// 0.490982 +0x37db +// 1.596482 +0x3e63 +// 0.332411 +0x3552 +// -2.157640 +0xc051 +// -1.587679 +0xbe5a +// 0.495530 +0x37ee +// 0.960868 +0x3bb0 +// -0.591988 +0xb8bc +// -1.045693 +0xbc2f +// 0.843292 +0x3abf +// -0.075070 +0xacce +// -0.282838 +0xb487 +// 0.522908 +0x382f +// -0.062621 +0xac02 +// -0.213422 +0xb2d4 +// -1.193460 +0xbcc6 +// 0.024896 +0x2660 +// -3.089132 +0xc22e +// 0.458491 +0x3756 +// -1.698179 +0xbecb +// 2.840010 +0x41ae +// 0.578660 +0x38a1 +// 0.361009 +0x35c7 +// -1.742869 +0xbef9 +// -0.831256 +0xbaa6 +// -1.109137 +0xbc70 +// -0.596247 +0xb8c5 +// 1.208434 +0x3cd5 +// -1.935833 +0xbfbe +// 2.217497 +0x406f +// 1.160372 +0x3ca4 +// -0.081313 +0xad34 +// -2.419502 +0xc0d7 +// 0.272382 +0x345c +// 0.889528 +0x3b1e +// 0.397543 +0x365c +// -1.700459 +0xbecd +// 1.042543 +0x3c2c +// 1.202107 +0x3ccf +// -0.051818 +0xaaa2 +// -0.730582 +0xb9d8 +// 0.025250 +0x2677 +// -0.318532 +0xb519 +// -0.757038 +0xba0e +// -0.484690 +0xb7c1 +// 0.658922 +0x3945 +// -0.684210 +0xb979 +// -1.351297 +0xbd68 +// -0.745298 +0xb9f6 +// 0.368193 +0x35e4 +// -1.528640 +0xbe1d +// -0.673173 +0xb963 +// -0.014893 +0xa3a0 +// -0.417328 +0xb6ad +// 1.101533 +0x3c68 +// -1.793305 +0xbf2c +// -0.876005 +0xbb02 +// 0.710846 +0x39b0 +// -0.486367 +0xb7c8 +// 0.489545 +0x37d5 +// -0.753876 +0xba08 +// 0.684575 +0x397a +// -0.569468 +0xb88e +// 1.294840 +0x3d2e +// -1.234943 +0xbcf1 +// -0.938473 +0xbb82 +// 1.262225 +0x3d0d +// -1.040557 +0xbc2a +// 2.077698 +0x4028 +// 1.582555 +0x3e55 +// 1.070929 +0x3c49 +// 1.747530 +0x3efd +// -1.266449 +0xbd11 +// -0.117831 +0xaf8b +// -1.120036 +0xbc7b +// 0.115079 +0x2f5d +// 0.097422 +0x2e3c +// 0.054251 +0x2af2 +// 0.284460 +0x348d +// -0.344650 +0xb584 +// -2.165535 +0xc055 +// 1.090171 +0x3c5c +// -1.290367 +0xbd29 +// -0.291540 +0xb4aa +// -0.262937 +0xb435 +// -0.269938 +0xb452 +// 1.745340 +0x3efb +// -0.381207 +0xb619 +// 0.559560 +0x387a +// 1.061609 +0x3c3f +// -0.448525 +0xb72d +// 0.600914 +0x38cf +// -0.439293 +0xb707 +// 0.081809 +0x2d3c +// 0.736261 +0x39e4 +// 1.237320 +0x3cf3 +// 0.314349 +0x3508 +// 0.002416 +0x18f3 +// 0.114545 +0x2f55 +// -0.890155 +0xbb1f +// -1.599143 +0xbe66 +// -0.084827 +0xad6e +// 0.452470 +0x373d +// -0.363854 +0xb5d2 +// 0.494410 +0x37e9 +// 0.323634 +0x352e +// 1.745487 +0x3efb +// 2.692194 +0x4162 +// -2.172338 +0xc058 +// 0.676894 +0x396a diff --git a/Testing/Patterns/DSP/Stats/StatsF16/InputAccumulateConfig1_s16.txt b/Testing/Patterns/DSP/Stats/StatsF16/InputAccumulateConfig1_s16.txt new file mode 100644 index 00000000..2216545f --- /dev/null +++ b/Testing/Patterns/DSP/Stats/StatsF16/InputAccumulateConfig1_s16.txt @@ -0,0 +1,12 @@ +H +5 +// 4 +0x0004 +// 7 +0x0007 +// 16 +0x0010 +// 23 +0x0017 +// 300 +0x012C diff --git a/Testing/Patterns/DSP/Stats/StatsF16/RefAccumulate1_f16.txt b/Testing/Patterns/DSP/Stats/StatsF16/RefAccumulate1_f16.txt new file mode 100644 index 00000000..73060d12 --- /dev/null +++ b/Testing/Patterns/DSP/Stats/StatsF16/RefAccumulate1_f16.txt @@ -0,0 +1,10 @@ +H +4 +// 0.128093 +0x3019 +// -1.588172 +0xbe5a +// 0.924829 +0x3b66 +// -10.314345 +0xc928 diff --git a/Testing/Patterns/DSP/Stats/StatsF32/InputAccumulate1_f32.txt b/Testing/Patterns/DSP/Stats/StatsF32/InputAccumulate1_f32.txt new file mode 100644 index 00000000..0d6d7b42 --- /dev/null +++ b/Testing/Patterns/DSP/Stats/StatsF32/InputAccumulate1_f32.txt @@ -0,0 +1,602 @@ +W +300 +// -0.423443 +0xbed8cd77 +// -0.983498 +0xbf7bc681 +// -0.513058 +0xbf0357c8 +// -0.826724 +0xbf53a42a +// -0.098833 +0xbdca68b8 +// -0.647028 +0xbf25a3a9 +// -0.586539 +0xbf162767 +// 1.582705 +0x3fca9615 +// 0.819569 +0x3f51cf4d +// -0.685971 +0xbf2f9bc9 +// -0.157562 +0xbe2157e3 +// 0.880716 +0x3f6176a2 +// -0.579034 +0xbf143b8e +// 0.623778 +0x3f1fafe8 +// -1.262239 +0xbfa19109 +// -0.625875 +0xbf203958 +// 0.684227 +0x3f2f297e +// 0.370696 +0x3ebdcbd0 +// 0.698463 +0x3f32ce72 +// 2.012159 +0x4000c738 +// -0.067237 +0xbd89b395 +// 1.146582 +0x3f92c332 +// 0.075101 +0x3d99ce71 +// 0.410785 +0x3ed2525d +// -1.697154 +0xbfd93c59 +// -0.590957 +0xbf1748f0 +// 0.337581 +0x3eacd776 +// -0.661201 +0xbf29447e +// -0.091832 +0xbdbc1287 +// -0.822853 +0xbf52a67d +// 0.083798 +0x3dab9e36 +// -1.254186 +0xbfa08928 +// 0.861168 +0x3f5c7582 +// -0.073341 +0xbd9633da +// -1.121536 +0xbf8f8e7a +// -0.897961 +0xbf65e0cb +// -0.946319 +0xbf7241fa +// -0.918747 +0xbf6b3305 +// 0.825834 +0x3f5369db +// -0.306754 +0xbe9d0ed5 +// -0.070929 +0xbd9142fc +// 0.931081 +0x3f6e5b51 +// -0.079323 +0xbda273ee +// 0.144046 +0x3e1380c6 +// -0.201304 +0xbe4e22a6 +// 0.944336 +0x3f71bfff +// 0.157191 +0x3e20f6cc +// -1.196110 +0xbf991a21 +// -0.904330 +0xbf678223 +// 0.656791 +0x3f28237b +// -2.277876 +0xc011c8b8 +// 0.322499 +0x3ea51ea6 +// -1.135596 +0xbf915b37 +// 0.332263 +0x3eaa1e55 +// -0.196604 +0xbe49527e +// 0.370739 +0x3ebdd17a +// -0.736538 +0xbf3c8db9 +// 0.430131 +0x3edc3a32 +// 1.991774 +0x3ffef274 +// 0.865658 +0x3f5d9bc7 +// 1.297061 +0x3fa60614 +// -0.353067 +0xbeb4c53f +// -1.154915 +0xbf93d445 +// 0.013318 +0x3c5a3568 +// 0.604935 +0x3f1add0b +// 0.650382 +0x3f267f6c +// 0.057334 +0x3d6ad705 +// -1.391626 +0xbfb220cf +// 1.436114 +0x3fb7d298 +// 0.162395 +0x3e264af3 +// 0.558801 +0x3f0f0d97 +// -0.079698 +0xbda33877 +// -0.055110 +0xbd61baa1 +// 0.179196 +0x3e377f3c +// -1.057574 +0xbf875e94 +// -0.521445 +0xbf057d6a +// 0.422838 +0x3ed87e44 +// 1.151230 +0x3f935b85 +// 1.216962 +0x3f9bc565 +// 0.950819 +0x3f7368de +// -0.498350 +0xbeff27ab +// -0.578754 +0xbf14293f +// 0.702426 +0x3f33d238 +// 0.304651 +0x3e9bfb30 +// 0.995786 +0x3f7eebce +// 0.030582 +0x3cfa8671 +// 0.102266 +0x3dd170f9 +// 0.356987 +0x3eb6c6f1 +// -0.337055 +0xbeac926e +// -1.549700 +0xbfc65c93 +// 0.296486 +0x3e97cd07 +// 1.095437 +0x3f8c374b +// 1.244417 +0x3f9f490b +// 0.359604 +0x3eb81df3 +// -0.441891 +0xbee23f96 +// 0.384206 +0x3ec4b6b0 +// -0.471972 +0xbef1a647 +// 0.648020 +0x3f25e49f +// 1.201917 +0x3f99d86f +// -2.865849 +0xc0376a11 +// 1.176467 +0x3f969677 +// 0.640080 +0x3f23dc46 +// 0.422593 +0x3ed85e2a +// 0.209291 +0x3e56507f +// -0.336963 +0xbeac8679 +// 1.326757 +0x3fa9d32c +// -1.032990 +0xbf843905 +// -0.904691 +0xbf6799d9 +// 0.065775 +0x3d86b4de +// 1.856034 +0x3fed9288 +// -0.422515 +0xbed853ef +// 1.135110 +0x3f914b4a +// -2.076895 +0xc004ebd8 +// 0.866082 +0x3f5db793 +// -2.045051 +0xc002e21e +// -0.504498 +0xbf0126c0 +// 1.459088 +0x3fbac363 +// 0.090395 +0x3db9211f +// 1.077701 +0x3f89f21b +// -0.025416 +0xbcd0344b +// -0.468621 +0xbeefef19 +// -0.451325 +0xbee7140c +// 0.669543 +0x3f2b6731 +// 0.278190 +0x3e8e6efa +// -0.479717 +0xbef59d67 +// -0.793268 +0xbf4b13a4 +// 0.942438 +0x3f7143a5 +// -2.587449 +0xc02598c4 +// -0.026251 +0xbcd70b5e +// -0.126607 +0xbe01a544 +// 0.658765 +0x3f28a4d5 +// -1.699255 +0xbfd9812d +// -0.788664 +0xbf49e5dc +// 0.275554 +0x3e8d155c +// 0.935411 +0x3f6f771e +// 0.787206 +0x3f498652 +// -0.049373 +0xbd4a3bbd +// -0.746808 +0xbf3f2ecc +// -1.299582 +0xbfa658b7 +// 0.043045 +0x3d305068 +// -0.729928 +0xbf3adc8c +// 1.236238 +0x3f9e3d0a +// -0.759593 +0xbf4274b8 +// -0.892822 +0xbf648ff8 +// 1.532354 +0x3fc42429 +// -0.597137 +0xbf18ddfb +// -0.000702 +0xba37f55e +// 1.655931 +0x3fd3f58a +// 1.536543 +0x3fc4ad6e +// 0.213734 +0x3e5adcf5 +// -0.208254 +0xbe5540a3 +// -2.398257 +0xc0197d0c +// -1.241876 +0xbf9ef5ca +// -1.542659 +0xbfc575db +// -0.073463 +0xbd967388 +// 0.595362 +0x3f1869a2 +// -1.254223 +0xbfa08a65 +// -0.097561 +0xbdc7ce41 +// 0.611658 +0x3f1c95a4 +// 0.790725 +0x3f4a6cfc +// 1.275721 +0x3fa34ad7 +// -0.377948 +0xbec18257 +// 0.654724 +0x3f279bf6 +// 0.077602 +0x3d9eedb8 +// -1.257696 +0xbfa0fc31 +// 0.110166 +0x3de19e78 +// -0.054233 +0xbd5e23df +// -1.683268 +0xbfd77550 +// 0.941935 +0x3f7122a2 +// 2.554066 +0x402375d0 +// -1.619144 +0xbfcf401e +// 1.462543 +0x3fbb3498 +// 0.811070 +0x3f4fa242 +// 1.927283 +0x3ff6b136 +// -0.022243 +0xbcb63794 +// 0.755502 +0x3f41688f +// -0.554742 +0xbf0e0391 +// 0.795036 +0x3f4b8780 +// -1.578591 +0xbfca0f42 +// -1.086833 +0xbf8b1d5a +// 0.343749 +0x3eafffed +// 2.170838 +0x400aef02 +// 3.001650 +0x40401b09 +// 1.892707 +0x3ff24436 +// -0.056903 +0xbd69129e +// -2.503841 +0xc0203ef0 +// 1.152213 +0x3f937bb3 +// -0.219470 +0xbe60bcba +// -1.451331 +0xbfb9c536 +// 1.168464 +0x3f95903e +// -0.342840 +0xbeaf88b9 +// 0.294751 +0x3e96e998 +// -0.353277 +0xbeb4e0ab +// -0.698509 +0xbf32d17a +// -1.092133 +0xbf8bcb07 +// 0.729987 +0x3f3ae06e +// -0.523243 +0xbf05f347 +// 1.708302 +0x3fdaa9a3 +// -1.028413 +0xbf83a30c +// 1.275090 +0x3fa33628 +// 0.067721 +0x3d8ab126 +// -0.451632 +0xbee73c51 +// 0.576707 +0x3f13a311 +// 1.627953 +0x3fd060c4 +// 0.639968 +0x3f23d4ed +// 1.075825 +0x3f89b4a0 +// -0.495454 +0xbefdac35 +// 0.095114 +0x3dc2cae1 +// -1.313427 +0xbfa81e61 +// -1.200968 +0xbf99b954 +// 0.714616 +0x3f36f11b +// -0.716077 +0xbf3750d2 +// 1.231550 +0x3f9da36e +// 1.307033 +0x3fa74cde +// 0.544918 +0x3f0b7fb9 +// -0.272018 +0xbe8b45f9 +// -0.202694 +0xbe4f8f1a +// 0.902505 +0x3f670a8c +// -2.392231 +0xc0191a52 +// -0.940717 +0xbf70d2db +// -2.000130 +0xc0000221 +// -0.816307 +0xbf50f981 +// -0.888401 +0xbf636e3d +// -0.209496 +0xbe568609 +// 2.026531 +0x4001b2ae +// 1.216935 +0x3f9bc487 +// -0.112947 +0xbde750f7 +// 0.586520 +0x3f162632 +// 1.212788 +0x3f9b3ca6 +// 0.234782 +0x3e706ab8 +// 1.062053 +0x3f87f15c +// -0.807098 +0xbf4e9dfd +// -2.107924 +0xc006e83b +// -0.991721 +0xbf7de174 +// 0.628760 +0x3f20f66d +// 2.122896 +0x4007dd89 +// -0.952098 +0xbf73bcb3 +// 0.113922 +0x3de94fdf +// 2.725400 +0x402e6cf4 +// 0.546763 +0x3f0bf8a4 +// -1.384506 +0xbfb13780 +// 0.119917 +0x3df596e2 +// -1.233861 +0xbf9def28 +// 0.935340 +0x3f6f7270 +// -1.505120 +0xbfc0a7c7 +// -0.377617 +0xbec15713 +// 0.799940 +0x3f4cc8e3 +// -0.319001 +0xbea3541d +// 0.641903 +0x3f2453c3 +// 1.549009 +0x3fc645f1 +// -0.493078 +0xbefc74bc +// -1.702947 +0xbfd9fa2c +// 1.320023 +0x3fa8f682 +// 0.138493 +0x3e0dd103 +// 1.115283 +0x3f8ec199 +// -0.864410 +0xbf5d49f5 +// 1.279482 +0x3fa3c615 +// 0.390853 +0x3ec81dec +// 0.781768 +0x3f4821f5 +// 0.370289 +0x3ebd9693 +// 0.669609 +0x3f2b6b79 +// 1.678452 +0x3fd6d781 +// 0.513118 +0x3f035baf +// 0.649515 +0x3f2646a1 +// -0.990310 +0xbf7d84ed +// -1.788502 +0xbfe4eda4 +// -0.071319 +0xbd920fb2 +// 0.096202 +0x3dc5057b +// 0.369050 +0x3ebcf41d +// -2.291920 +0xc012aed3 +// 0.868246 +0x3f5e4560 +// 1.527368 +0x3fc380cb +// 0.905387 +0x3f67c76e +// 2.014818 +0x4000f2c8 +// -1.645145 +0xbfd29420 +// 0.706149 +0x3f34c629 +// 0.437204 +0x3edfd928 +// -0.512773 +0xbf03450f +// -1.036983 +0xbf84bbe0 +// 2.089183 +0x4005b52d +// -0.464019 +0xbeed93de +// -1.337332 +0xbfab2dae +// -0.228851 +0xbe6a57f4 +// 1.735562 +0x3fde26e2 +// 0.085262 +0x3dae9df0 +// -0.496630 +0xbefe4640 +// -1.341138 +0xbfabaa6b +// -0.550179 +0xbf0cd883 +// 2.034660 +0x400237e0 +// 0.052855 +0x3d587ef7 +// 1.781379 +0x3fe40438 +// -0.978739 +0xbf7a8ea1 +// -1.351531 +0xbfacfef7 +// -0.541003 +0xbf0a7f29 +// 0.995079 +0x3f7ebd85 +// 1.448289 +0x3fb96187 +// -0.123124 +0xbdfc2852 +// -0.350373 +0xbeb36423 +// 1.034495 +0x3f846a57 +// -0.678016 +0xbf2d926f diff --git a/Testing/Patterns/DSP/Stats/StatsF32/InputAccumulateConfig1_s16.txt b/Testing/Patterns/DSP/Stats/StatsF32/InputAccumulateConfig1_s16.txt new file mode 100644 index 00000000..d54fe592 --- /dev/null +++ b/Testing/Patterns/DSP/Stats/StatsF32/InputAccumulateConfig1_s16.txt @@ -0,0 +1,12 @@ +H +5 +// 4 +0x0004 +// 3 +0x0003 +// 8 +0x0008 +// 11 +0x000B +// 300 +0x012C diff --git a/Testing/Patterns/DSP/Stats/StatsF32/RefAccumulate1_f32.txt b/Testing/Patterns/DSP/Stats/StatsF32/RefAccumulate1_f32.txt new file mode 100644 index 00000000..a59ed812 --- /dev/null +++ b/Testing/Patterns/DSP/Stats/StatsF32/RefAccumulate1_f32.txt @@ -0,0 +1,10 @@ +W +4 +// -1.919998 +0xbff5c282 +// -2.496417 +0xc01fc54b +// -2.520380 +0xc0214de8 +// 15.878417 +0x417e0dff diff --git a/Testing/Patterns/DSP/Stats/StatsF64/InputAccumulate1_f64.txt b/Testing/Patterns/DSP/Stats/StatsF64/InputAccumulate1_f64.txt new file mode 100644 index 00000000..44550f27 --- /dev/null +++ b/Testing/Patterns/DSP/Stats/StatsF64/InputAccumulate1_f64.txt @@ -0,0 +1,602 @@ +D +300 +// 0.591762 +0x3fe2efb7d1952c8d +// 1.346868 +0x3ff58cc52fa376f9 +// 0.285820 +0x3fd24ae0a79ad81d +// -0.858870 +0xbfeb7bdc5313e4f5 +// 1.096028 +0x3ff1895447537f90 +// -0.843217 +0xbfeafba14924b30e +// -0.731724 +0xbfe76a48c78d7fc7 +// 0.247799 +0x3fcfb7df3ca5404f +// -0.416542 +0xbfdaa89eaa690f97 +// 0.672924 +0x3fe58896ea6679cb +// 0.271024 +0x3fd15873d49cbdf1 +// -0.265199 +0xbfd0f90428764a13 +// 0.765841 +0x3fe881c4d1806d05 +// 0.525063 +0x3fe0cd50748bbf99 +// 0.533392 +0x3fe1118bfb02f4c5 +// -1.007398 +0xbff01e4ceae2cb9a +// 1.190889 +0x3ff30de1aae279f6 +// 0.297438 +0x3fd3093a9dd1a7b9 +// 1.596330 +0x3ff98a9161f98815 +// -1.918050 +0xbffeb054cf9f179b +// 0.412652 +0x3fda68e5571a268f +// 0.389409 +0x3fd8ec136d8391ee +// -0.298699 +0xbfd31de3ed58bcb1 +// 1.007653 +0x3ff01f5842a07169 +// 0.117794 +0x3fbe27c4e4786fa7 +// 1.275045 +0x3ff4669531ba3c67 +// 0.348807 +0x3fd652dca72a1b86 +// -0.518251 +0xbfe0958302b38d1b +// -2.084621 +0xc000ad4d869f0723 +// 0.046931 +0x3fa80752c164372b +// -1.098749 +0xbff1947a5764d065 +// 0.461066 +0x3fdd82196683d235 +// -0.461843 +0xbfdd8ed5fa69a819 +// -0.733344 +0xbfe7778e215d5544 +// 1.280933 +0x3ff47eb31cc99694 +// -0.450840 +0xbfdcda91b3c7ae64 +// -0.324242 +0xbfd4c061d7b87f9b +// -0.082313 +0xbfb51275aec18b50 +// 0.678082 +0x3fe5b2d9bba4d029 +// 0.216665 +0x3fcbbbb04679ea9d +// -0.072394 +0xbfb28867086bfdc9 +// -0.894777 +0xbfeca202a4146dab +// -0.927379 +0xbfedad16ece95ce0 +// 1.745247 +0x3ffbec8895a540aa +// 0.015979 +0x3f905cbbc9435051 +// 0.254808 +0x3fd04ec60bc5c8f5 +// -2.264820 +0xc0021e59c97d4af9 +// -1.889860 +0xbffe3cde380dc5a8 +// 0.173487 +0x3fc634d30cf0da25 +// -0.246073 +0xbfcf7f53632de4a7 +// 0.298900 +0x3fd3212db677d0b0 +// -0.638844 +0xbfe47167fb3a588d +// -0.182363 +0xbfc757abe21ec3cf +// 1.405280 +0x3ff67c075ca67e9b +// -0.635200 +0xbfe4538fc90c2e53 +// -0.992023 +0xbfefbea76346d417 +// 1.156137 +0x3ff27f8942c4b376 +// 0.650516 +0x3fe4d107e36b7876 +// -0.990295 +0xbfefb07e408b3fe2 +// -0.065694 +0xbfb0d1545a7902e3 +// 1.374938 +0x3ff5ffbec44f8a8e +// -0.593372 +0xbfe2fce7ce325a00 +// 0.063298 +0x3fb03446a5d4a244 +// -0.088991 +0xbfb6c8238f3846fc +// 0.065581 +0x3fb0c9eb043953dd +// -0.340817 +0xbfd5cff01b999ed0 +// -0.227255 +0xbfcd16ad8b411be5 +// -0.395505 +0xbfd94ff5167e7cf3 +// 0.229238 +0x3fcd57aedec76d75 +// -0.164329 +0xbfc508bbae786c48 +// 1.694348 +0x3ffb1c0cbdda1e8b +// -2.223618 +0xc001c9f879e1591b +// -0.387069 +0xbfd8c5bc46545a36 +// -0.163043 +0xbfc4de99d7206f3f +// 2.427573 +0x40036bab9b54edc8 +// 1.052230 +0x3ff0d5ef5cc472ed +// 1.123976 +0x3ff1fbcde93ea419 +// -0.974354 +0xbfef2de84eb1a34f +// -1.351470 +0xbff59f9f0fe1ca22 +// 0.536450 +0x3fe12a99a633cf41 +// 1.265249 +0x3ff43e75ab0275f6 +// 0.553907 +0x3fe1b99b70a0fe95 +// 0.668717 +0x3fe566220b75f0aa +// 0.321792 +0x3fd4983c25827563 +// -0.016920 +0xbf915358decf654f +// 0.085172 +0x3fb5cdd5e666d2c1 +// -0.184192 +0xbfc793984a18c898 +// -0.513147 +0xbfe06bb26ca6d453 +// 0.927872 +0x3fedb11fed57d980 +// -1.548969 +0xbff8c89345880c33 +// -0.601981 +0xbfe3436dcddf818a +// 0.476340 +0x3fde7c58d3f2dba7 +// -2.105879 +0xc000d8d6ead7eb9c +// 0.954027 +0x3fee876428a958d0 +// -2.165969 +0xc00153e753b9f2b8 +// 1.012873 +0x3ff034ba4cb5ce83 +// -0.779203 +0xbfe8ef3a25531656 +// -0.961244 +0xbfeec281d5a4a837 +// -0.832993 +0xbfeaa7e0408c3ddf +// 0.488423 +0x3fdf4254658a8452 +// -1.344825 +0xbff584673279b99c +// 1.765342 +0x3ffc3ed7b9846a66 +// 1.478842 +0x3ff7a9561fee9d33 +// 1.686267 +0x3ffafaf31639a6cc +// -0.944275 +0xbfee378033fac580 +// 0.210522 +0x3fcaf2649e0564a0 +// -0.732744 +0xbfe772a3839d33ce +// -0.230683 +0xbfcd8701792aa3c1 +// 1.405108 +0x3ff67b525ca07125 +// -0.328691 +0xbfd50947e8c28776 +// -0.286968 +0xbfd25db1078c312d +// -1.361024 +0xbff5c6c18bdcfcb4 +// 0.849591 +0x3feb2fd9ffb31d30 +// -2.088668 +0xc000b59787b09019 +// 1.387327 +0x3ff6327d91b18236 +// -0.392612 +0xbfd9208d7c046335 +// 0.409889 +0x3fda3b9e5fb8b537 +// 1.796759 +0x3ffcbf86e38b29cd +// 0.978588 +0x3fef5098b7f8c16d +// 0.703897 +0x3fe686531a2ce622 +// 0.549163 +0x3fe192bd6c6821aa +// -0.173986 +0xbfc6452ea4d2f9c9 +// 0.692326 +0x3fe62788cee7f567 +// 0.484449 +0x3fdf0135bb21590f +// -0.547055 +0xbfe18179cae92363 +// 0.084638 +0x3fb5aad32b95ee97 +// -0.343665 +0xbfd5fe9a2a971648 +// -0.797343 +0xbfe983d54a566c09 +// 0.624375 +0x3fe3fae1cee7f031 +// -0.650273 +0xbfe4cf0a513ae832 +// -1.151119 +0xbff26afbcc2e0973 +// -1.004242 +0xbff0116024bebcbb +// -1.243463 +0xbff3e539ec4b45a7 +// 0.533702 +0x3fe1141626f60241 +// -0.200939 +0xbfc9b860db5658a9 +// -1.170179 +0xbff2b90d8db1cc34 +// 0.432628 +0x3fdbb02f1335163d +// 0.177194 +0x3fc6ae49b83d69b4 +// 0.276979 +0x3fd1ba042cd2c5ab +// -0.117636 +0xbfbe1d5ca466df85 +// 0.431909 +0x3fdba466b78b3ba1 +// 0.094699 +0x3fb83e39f7278c86 +// -0.887184 +0xbfec63cf07d0d81d +// 0.571867 +0x3fe24cbb2086ad4e +// -0.078704 +0xbfb425f5d145dc81 +// 0.561475 +0x3fe1f79b1ffea495 +// 0.247046 +0x3fcf9f32cfe78e19 +// -0.171075 +0xbfc5e5c9fb66a9eb +// -1.027190 +0xbff06f5eefc08f0e +// -0.595121 +0xbfe30b3bd5cf730d +// 0.312975 +0x3fd407c8b382d0b6 +// 0.844432 +0x3feb059562dae6c5 +// 0.590219 +0x3fe2e313d04ba5d7 +// 0.455922 +0x3fdd2dd41b02ae4b +// -2.021509 +0xc0002c0cdad6b404 +// 0.945978 +0x3fee457403e43c84 +// -0.392990 +0xbfd926be44354f13 +// 0.097190 +0x3fb8e175506842a9 +// 0.320984 +0x3fd48b01d277cc59 +// -1.163999 +0xbff29fbd331b6294 +// 1.256727 +0x3ff41b8de1521368 +// 1.885235 +0x3ffe29ec4b6a54a4 +// -0.391718 +0xbfd911e808aecf5d +// 0.398626 +0x3fd98317ca833afd +// -1.170556 +0xbff2ba98f808c200 +// 0.146972 +0x3fc2cffdd3959390 +// 0.872258 +0x3febe98a145e337e +// 0.798093 +0x3fe989f9f22516c1 +// 0.216796 +0x3fcbbff90adaad56 +// 0.931629 +0x3fedcfe6fe77a2b8 +// 1.400970 +0x3ff66a6002245ac1 +// -0.646253 +0xbfe4ae1a4d47a906 +// 0.130761 +0x3fc0bcc4f0ecba47 +// 0.926996 +0x3feda9f2bb8c8c34 +// -1.332325 +0xbff55133ec1b8572 +// 0.161132 +0x3fc49ff8acce4eed +// 0.267825 +0x3fd1240a892de412 +// -1.169964 +0xbff2b82c904cbd43 +// -0.131690 +0xbfc0db39191ac220 +// 0.355000 +0x3fd6b853f910772f +// -1.455940 +0xbff74b87f7d98d9b +// 0.215088 +0x3fcb8804494d37f6 +// -0.416629 +0xbfdaaa0cec2a8135 +// 2.552314 +0x40046b23c8a17de8 +// -0.148139 +0xbfc2f63bc35a7507 +// -0.061910 +0xbfafb2b16dfe37d9 +// 1.971133 +0x3fff89c2df1a846a +// 0.609440 +0x3fe380887f2b6543 +// -0.392193 +0xbfd919b06bf047d8 +// -0.297496 +0xbfd30a2c3ed85252 +// -0.087342 +0xbfb65c1297115bd2 +// 0.042671 +0x3fa5d8ff043a09cd +// 2.104092 +0x4000d52e35891659 +// -0.132587 +0xbfc0f89f6e9946f0 +// 0.101833 +0x3fba11bfe14c9682 +// 0.261865 +0x3fd0c263ab139698 +// -1.075224 +0xbff1341e500ee40a +// -1.819020 +0xbffd1ab50748d311 +// 0.080063 +0x3fb47f03e185fa13 +// -0.897530 +0xbfecb891a05597ca +// -1.764076 +0xbffc39a7b4b95aa2 +// -0.709456 +0xbfe6b3dc83b2082c +// -0.206341 +0xbfca6964573aa25b +// 0.324747 +0x3fd4c8a91a0b3f12 +// -1.004527 +0xbff0128afad3effb +// 0.043461 +0x3fa6408593d42d9a +// -0.603422 +0xbfe34f3c55d8e2da +// -0.047375 +0xbfa84187f1186311 +// 2.766008 +0x400620c8c065a38f +// -0.199130 +0xbfc97d18476e7744 +// 0.574960 +0x3fe2661191d785b2 +// -1.303529 +0xbff4db40efe6bf97 +// 1.252003 +0x3ff40834968ab78b +// 1.023607 +0x3ff060b19dc3c282 +// 1.121515 +0x3ff1f1b9ccab7a75 +// -1.702770 +0xbffb3e8bf56d96f2 +// -0.200954 +0xbfc9b8d985d4003c +// 0.577675 +0x3fe27c4fc9101891 +// -0.768667 +0xbfe898ec87727e36 +// -0.423557 +0xbfdb1b8ea150239c +// 0.302140 +0x3fd35641fb892792 +// 0.969931 +0x3fef09ac0a53586a +// 1.028069 +0x3ff072f8fcf9bd3d +// 0.469475 +0x3fde0be289b41c3b +// -0.894296 +0xbfec9e1224500603 +// 0.743941 +0x3fe7ce5e08ab9d57 +// -1.632494 +0xbffa1eb28419980d +// 1.780551 +0x3ffc7d23565fbff9 +// 0.028156 +0x3f9cd4d19bef37cf +// -1.573614 +0xbff92d859621181d +// 0.975172 +0x3fef349b49ca6c50 +// 0.898281 +0x3fecbeb8152f43fc +// 1.725924 +0x3ffb9d625d1b0a37 +// -1.194486 +0xbff31c9dcdcb52ef +// 0.053978 +0x3faba310450eab90 +// -1.302649 +0xbff4d7a6facf6f75 +// 1.015055 +0x3ff03daa2dd45d3c +// 1.892682 +0x3ffe486cb45ee7a0 +// -0.686480 +0xbfe5f7a54304e1dd +// 0.720867 +0x3fe7115891447acf +// -1.662034 +0xbffa97b0fc58dc51 +// 1.536524 +0x3ff89599cfbd660e +// 0.704890 +0x3fe68e74e80bbaa4 +// -0.622870 +0xbfe3ee8c24f62401 +// 0.664386 +0x3fe542a56e50ab96 +// -1.661507 +0xbffa95883f403baa +// 0.266999 +0x3fd11683a57ded77 +// 0.343106 +0x3fd5f57375150fd8 +// -1.434818 +0xbff6f503e6e4f4f2 +// -1.675793 +0xbffad00c81040ae1 +// 0.468676 +0x3fddfec7a87a50ae +// 1.618443 +0x3ff9e52411b0f681 +// 0.616406 +0x3fe3b9998f95b044 +// -2.721910 +0xc005c678d62c7edb +// -0.096007 +0xbfb893e9c1444db8 +// -1.213863 +0xbff36bfb9d05fb96 +// -1.557251 +0xbff8ea7fab4c3f3c +// -1.790495 +0xbffca5ddbc750c16 +// -0.098268 +0xbfb92818d6781289 +// -0.084365 +0xbfb598f2c2793fb6 +// -0.940522 +0xbfee18c106b285db +// 0.031567 +0x3fa0299739e1ce5c +// -0.244852 +0xbfcf5752f9d8026f +// 0.860829 +0x3feb8be86deab741 +// 1.451967 +0x3ff73b4182549bd6 +// -0.405878 +0xbfd9f9e6492d096f +// -0.535251 +0xbfe120c5b5bd58e2 +// -0.429442 +0xbfdb7bf956ec5674 +// -1.235351 +0xbff3c3ff07210191 +// 0.480201 +0x3fdebb9b700f269a +// -0.178620 +0xbfc6dd0666e06e00 +// -0.191338 +0xbfc87dbf5bf7e834 +// -0.408729 +0xbfda289f7d26381e +// 0.173887 +0x3fc641f14c55ac6d +// -1.843278 +0xbffd7e111e3526a1 +// -1.392580 +0xbff648017596c0dd +// -0.001781 +0xbf5d2e60e63984f3 +// -0.593029 +0xbfe2fa18c624b212 +// -0.536947 +0xbfe12eabd33e9917 +// -0.096858 +0xbfb8cba8ebb7c89d +// 1.737095 +0x3ffbcb23c8c0aae5 +// -0.288399 +0xbfd27520f9801ba6 +// 1.158473 +0x3ff2891b545f4637 +// -1.989434 +0xbfffd4b8f92b07b6 +// 0.106163 +0x3fbb2d82e267b9e8 +// -0.414173 +0xbfda81cff95e1b79 +// -1.839830 +0xbffd6ff1e81e5d17 +// -0.168047 +0xbfc58292fb2ea89d +// -1.384072 +0xbff625286f809ee3 +// -1.502155 +0xbff808d3aedbf275 +// 1.598372 +0x3ff992eec3fa02dd +// 0.226098 +0x3fccf0c5571bc41c +// 0.286619 +0x3fd257f53fc85098 +// 1.939450 +0x3fff07fc7c5ea519 +// 1.372158 +0x3ff5f45b899fbb57 +// 0.636439 +0x3fe45db5868f6986 +// 0.357524 +0x3fd6e1ae16681e18 +// -0.056032 +0xbfacb03334974378 +// 0.898497 +0x3fecc07cf2a97e70 +// -0.874705 +0xbfebfd962bcb1ff0 diff --git a/Testing/Patterns/DSP/Stats/StatsF64/InputAccumulateConfig1_s16.txt b/Testing/Patterns/DSP/Stats/StatsF64/InputAccumulateConfig1_s16.txt new file mode 100644 index 00000000..542b3aaf --- /dev/null +++ b/Testing/Patterns/DSP/Stats/StatsF64/InputAccumulateConfig1_s16.txt @@ -0,0 +1,12 @@ +H +5 +// 4 +0x0004 +// 2 +0x0002 +// 4 +0x0004 +// 5 +0x0005 +// 300 +0x012C diff --git a/Testing/Patterns/DSP/Stats/StatsF64/RefAccumulate1_f64.txt b/Testing/Patterns/DSP/Stats/StatsF64/RefAccumulate1_f64.txt new file mode 100644 index 00000000..efcd48f2 --- /dev/null +++ b/Testing/Patterns/DSP/Stats/StatsF64/RefAccumulate1_f64.txt @@ -0,0 +1,10 @@ +D +4 +// 1.938630 +0x3fff04a1186e0d40 +// 1.365581 +0x3ff5d96b18cad0ce +// 2.461608 +0x4003b15fb00f282f +// -3.785585 +0xc00e48e0b70a2dcf diff --git a/Testing/Source/Tests/StatsTestsF16.cpp b/Testing/Source/Tests/StatsTestsF16.cpp index 74f56087..012360db 100755 --- a/Testing/Source/Tests/StatsTestsF16.cpp +++ b/Testing/Source/Tests/StatsTestsF16.cpp @@ -13,6 +13,7 @@ a double precision computation. */ #define REL_ERROR (6.0e-3) +#define REL_ERROR_ACCUMULATE (7.0e-3) #define REL_KULLBACK_ERROR (5.0e-3) #define ABS_KULLBACK_ERROR (5.0e-3) @@ -463,6 +464,25 @@ a double precision computation. ASSERT_REL_ERROR(result,refp[this->refOffset],(float16_t)REL_ERROR); } + + void StatsTestsF16::test_accumulate_f16() + { + const float16_t *inp = inputA.ptr(); + const int16_t *dimsp = dims.ptr(); + + float16_t *outp = output.ptr(); + + for(int i=0;i < this->nbPatterns; i++) + { + arm_accumulate_f16(inp,dimsp[i+1],outp); + outp++; + } + + ASSERT_SNR(ref,output,(float16_t)SNR_THRESHOLD); + + ASSERT_REL_ERROR(ref,output,REL_ERROR_ACCUMULATE); + + } void StatsTestsF16::setUp(Testing::testID_t id,std::vector& paramsArgs,Client::PatternMgr *mgr) { @@ -1105,6 +1125,20 @@ a double precision computation. refOffset = 3; } break; + + case StatsTestsF16::TEST_ACCUMULATE_F16_53: + { + inputA.reload(StatsTestsF16::INPUT_ACCUMULATE_F16_ID,mgr); + ref.reload(StatsTestsF16::REF_ACCUMULATE_F16_ID,mgr); + dims.reload(StatsTestsF16::INPUT_ACCUMULATE_CONFIG_S16_ID,mgr); + output.create(ref.nbSamples(),StatsTestsF16::OUT_F16_ID,mgr); + + const int16_t *dimsp = dims.ptr(); + this->nbPatterns=dimsp[0]; + + + } + break; } } diff --git a/Testing/Source/Tests/StatsTestsF32.cpp b/Testing/Source/Tests/StatsTestsF32.cpp index 3180abb6..3982ca6f 100755 --- a/Testing/Source/Tests/StatsTestsF32.cpp +++ b/Testing/Source/Tests/StatsTestsF32.cpp @@ -458,6 +458,25 @@ a double precision computation. ASSERT_REL_ERROR(result,refp[this->refOffset],(float32_t)REL_ERROR); } + + void StatsTestsF32::test_accumulate_f32() + { + const float32_t *inp = inputA.ptr(); + const int16_t *dimsp = dims.ptr(); + + float32_t *outp = output.ptr(); + + for(int i=0;i < this->nbPatterns; i++) + { + arm_accumulate_f32(inp,dimsp[i+1],outp); + outp++; + } + + ASSERT_SNR(ref,output,(float32_t)SNR_THRESHOLD); + + ASSERT_REL_ERROR(ref,output,REL_ERROR); + + } void StatsTestsF32::setUp(Testing::testID_t id,std::vector& paramsArgs,Client::PatternMgr *mgr) @@ -1102,6 +1121,20 @@ a double precision computation. } break; + case StatsTestsF32::TEST_ACCUMULATE_F32_53: + { + inputA.reload(StatsTestsF32::INPUT_ACCUMULATE_F32_ID,mgr); + ref.reload(StatsTestsF32::REF_ACCUMULATE_F32_ID,mgr); + dims.reload(StatsTestsF32::INPUT_ACCUMULATE_CONFIG_S16_ID,mgr); + output.create(ref.nbSamples(),StatsTestsF32::OUT_F32_ID,mgr); + + const int16_t *dimsp = dims.ptr(); + this->nbPatterns=dimsp[0]; + + + } + break; + } diff --git a/Testing/Source/Tests/StatsTestsF64.cpp b/Testing/Source/Tests/StatsTestsF64.cpp index 2efd2099..648d63b1 100755 --- a/Testing/Source/Tests/StatsTestsF64.cpp +++ b/Testing/Source/Tests/StatsTestsF64.cpp @@ -462,6 +462,25 @@ a double precision computation. } + void StatsTestsF64::test_accumulate_f64() + { + const float64_t *inp = inputA.ptr(); + const int16_t *dimsp = dims.ptr(); + + float64_t *outp = output.ptr(); + + for(int i=0;i < this->nbPatterns; i++) + { + arm_accumulate_f64(inp,dimsp[i+1],outp); + outp++; + } + + ASSERT_SNR(ref,output,(float64_t)SNR_THRESHOLD); + + ASSERT_REL_ERROR(ref,output,REL_ERROR); + + } + void StatsTestsF64::setUp(Testing::testID_t id,std::vector& paramsArgs,Client::PatternMgr *mgr) { (void)paramsArgs; @@ -1105,6 +1124,20 @@ a double precision computation. } break; + case StatsTestsF64::TEST_ACCUMULATE_F64_53: + { + inputA.reload(StatsTestsF64::INPUT_ACCUMULATE_F64_ID,mgr); + ref.reload(StatsTestsF64::REF_ACCUMULATE_F64_ID,mgr); + dims.reload(StatsTestsF64::INPUT_ACCUMULATE_CONFIG_S16_ID,mgr); + output.create(ref.nbSamples(),StatsTestsF64::OUT_F64_ID,mgr); + + const int16_t *dimsp = dims.ptr(); + this->nbPatterns=dimsp[0]; + + + } + break; + } diff --git a/Testing/desc.txt b/Testing/desc.txt index e126726e..20d5bafa 100644 --- a/Testing/desc.txt +++ b/Testing/desc.txt @@ -56,6 +56,10 @@ group Root { Pattern MSE_F64_ID : MSEVals28_f64.txt + Pattern INPUT_ACCUMULATE_F64_ID : InputAccumulate1_f64.txt + Pattern INPUT_ACCUMULATE_CONFIG_S16_ID : InputAccumulateConfig1_s16.txt + Pattern REF_ACCUMULATE_F64_ID : RefAccumulate1_f64.txt + Output OUT_F64_ID : Output Output OUT_S16_ID : Index Output TMP_F64_ID : Temp @@ -129,7 +133,7 @@ group Root { Test nb=2n arm_mse_f64:test_mse_f64 Test nb=2n+1 arm_mse_f64:test_mse_f64 Test long arm_mse_f64:test_mse_f64 - + Test combined arm_accumulate_f64:test_accumulate_f64 } @@ -180,6 +184,9 @@ group Root { Pattern MSE_F32_ID : MSEVals28_f32.txt + Pattern INPUT_ACCUMULATE_F32_ID : InputAccumulate1_f32.txt + Pattern INPUT_ACCUMULATE_CONFIG_S16_ID : InputAccumulateConfig1_s16.txt + Pattern REF_ACCUMULATE_F32_ID : RefAccumulate1_f32.txt Output OUT_F32_ID : Output Output OUT_S16_ID : Index @@ -254,7 +261,7 @@ group Root { Test nb=4n arm_mse_f32:test_mse_f32 Test nb=4n+1 arm_mse_f32:test_mse_f32 Test long arm_mse_f32:test_mse_f32 - + Test combined arm_accumulate_f32:test_accumulate_f32 } diff --git a/Testing/desc_f16.txt b/Testing/desc_f16.txt index 0356a0a1..47db2d4d 100755 --- a/Testing/desc_f16.txt +++ b/Testing/desc_f16.txt @@ -54,6 +54,10 @@ group Root { Pattern MSE_F16_ID : MSEVals28_f16.txt + Pattern INPUT_ACCUMULATE_F16_ID : InputAccumulate1_f16.txt + Pattern INPUT_ACCUMULATE_CONFIG_S16_ID : InputAccumulateConfig1_s16.txt + Pattern REF_ACCUMULATE_F16_ID : RefAccumulate1_f16.txt + Output OUT_F16_ID : Output Output OUT_S16_ID : Index Output TMP_F16_ID : Temp @@ -127,6 +131,7 @@ group Root { Test nb=8n arm_mse_f16:test_mse_f16 Test nb=8n+1 arm_mse_f16:test_mse_f16 Test long arm_mse_f16:test_mse_f16 + Test combined arm_accumulate_f16:test_accumulate_f16 } } }