CMSIS-NN: Added reference C code for arm_avgpool_s8.c and tests

Tests are integrated in CMSIS-DSP test framework.
Reference code is based upon CMSIS-NN original average pooling and it is
not based upon TF Lite.
pull/19/head
Christophe Favergeon 7 years ago
parent 7a07cecef1
commit bfee0b9c02

@ -91,6 +91,7 @@ set(TESTSRC testmain.cpp
Source/DistanceTestsU32.cpp
Source/FullyConnected.cpp
Source/FullyConnectedBench.cpp
Source/Pooling.cpp
GeneratedSource/TestDesc.cpp
)

File diff suppressed because it is too large Load Diff

@ -0,0 +1,32 @@
void test_avgpool_s8();
// Pattern IDs
static const int INPUT1_S8_ID=0;
static const int REF1_S8_ID=1;
static const int INPUT2_S8_ID=2;
static const int REF2_S8_ID=3;
static const int INPUT3_S8_ID=4;
static const int REF3_S8_ID=5;
static const int INPUT4_S8_ID=6;
static const int REF4_S8_ID=7;
static const int INPUT5_S8_ID=8;
static const int REF5_S8_ID=9;
static const int INPUT6_S8_ID=10;
static const int REF6_S8_ID=11;
static const int INPUT7_S8_ID=12;
static const int REF7_S8_ID=13;
static const int INPUT8_S8_ID=14;
static const int REF8_S8_ID=15;
// Output IDs
static const int OUTPUT_S8_ID=0;
// Test IDs
static const int TEST_AVGPOOL_S8_1=1;
static const int TEST_AVGPOOL_S8_2=2;
static const int TEST_AVGPOOL_S8_3=3;
static const int TEST_AVGPOOL_S8_4=4;
static const int TEST_AVGPOOL_S8_5=5;
static const int TEST_AVGPOOL_S8_6=6;
static const int TEST_AVGPOOL_S8_7=7;
static const int TEST_AVGPOOL_S8_8=8;

@ -1,219 +1,31 @@
#include "Test.h"
#include "Pattern.h"
#include "StatsTestsF32.h"
#include "SupportTestsF32.h"
#include "BasicTestsF32.h"
#include "SVMF32.h"
#include "BayesF32.h"
#include "DistanceTestsF32.h"
#include "DistanceTestsU32.h"
#include "BasicMathsBenchmarksF32.h"
#include "BasicMathsBenchmarksQ31.h"
#include "BasicMathsBenchmarksQ15.h"
#include "BasicMathsBenchmarksQ7.h"
#include "FullyConnected.h"
#include "FullyConnectedBench.h"
class StatsTests : public Client::Group
{
public:
StatsTests(Testing::testID_t id):Client::Group(id)
,StatsTestsF32Var(1)
{
this->addContainer(&StatsTestsF32Var);
}
private:
StatsTestsF32 StatsTestsF32Var;
;
};
class SupportTests : public Client::Group
{
public:
SupportTests(Testing::testID_t id):Client::Group(id)
,SupportTestsF32Var(1)
{
this->addContainer(&SupportTestsF32Var);
}
private:
SupportTestsF32 SupportTestsF32Var;
;
};
class BasicTests : public Client::Group
{
public:
BasicTests(Testing::testID_t id):Client::Group(id)
,BasicTestsF32Var(1)
{
this->addContainer(&BasicTestsF32Var);
}
private:
BasicTestsF32 BasicTestsF32Var;
;
};
class SVMTests : public Client::Group
{
public:
SVMTests(Testing::testID_t id):Client::Group(id)
,SVMF32Var(1)
{
this->addContainer(&SVMF32Var);
}
private:
SVMF32 SVMF32Var;
;
};
class BayesTests : public Client::Group
{
public:
BayesTests(Testing::testID_t id):Client::Group(id)
,BayesF32Var(1)
{
this->addContainer(&BayesF32Var);
}
private:
BayesF32 BayesF32Var;
;
};
class DistanceTests : public Client::Group
{
public:
DistanceTests(Testing::testID_t id):Client::Group(id)
,DistanceTestsF32Var(1)
,DistanceTestsU32Var(2)
{
this->addContainer(&DistanceTestsF32Var);
this->addContainer(&DistanceTestsU32Var);
}
private:
DistanceTestsF32 DistanceTestsF32Var;
DistanceTestsU32 DistanceTestsU32Var;
;
};
class DSPTests : public Client::Group
{
public:
DSPTests(Testing::testID_t id):Client::Group(id)
,StatsTestsVar(1)
,SupportTestsVar(2)
,BasicTestsVar(3)
,SVMTestsVar(4)
,BayesTestsVar(5)
,DistanceTestsVar(6)
{
this->addContainer(&StatsTestsVar);
this->addContainer(&SupportTestsVar);
this->addContainer(&BasicTestsVar);
this->addContainer(&SVMTestsVar);
this->addContainer(&BayesTestsVar);
this->addContainer(&DistanceTestsVar);
}
private:
StatsTests StatsTestsVar;
SupportTests SupportTestsVar;
BasicTests BasicTestsVar;
SVMTests SVMTestsVar;
BayesTests BayesTestsVar;
DistanceTests DistanceTestsVar;
;
};
class BasicBenchmarks : public Client::Group
{
public:
BasicBenchmarks(Testing::testID_t id):Client::Group(id)
,BasicMathsBenchmarksF32Var(1)
,BasicMathsBenchmarksQ31Var(2)
,BasicMathsBenchmarksQ15Var(3)
,BasicMathsBenchmarksQ7Var(4)
{
this->addContainer(&BasicMathsBenchmarksF32Var);
this->addContainer(&BasicMathsBenchmarksQ31Var);
this->addContainer(&BasicMathsBenchmarksQ15Var);
this->addContainer(&BasicMathsBenchmarksQ7Var);
}
private:
BasicMathsBenchmarksF32 BasicMathsBenchmarksF32Var;
BasicMathsBenchmarksQ31 BasicMathsBenchmarksQ31Var;
BasicMathsBenchmarksQ15 BasicMathsBenchmarksQ15Var;
BasicMathsBenchmarksQ7 BasicMathsBenchmarksQ7Var;
;
};
class DSPBenchmarks : public Client::Group
{
public:
DSPBenchmarks(Testing::testID_t id):Client::Group(id)
,BasicBenchmarksVar(1)
{
this->addContainer(&BasicBenchmarksVar);
}
private:
BasicBenchmarks BasicBenchmarksVar;
;
};
#include "Pooling.h"
class NNTests : public Client::Group
{
public:
NNTests(Testing::testID_t id):Client::Group(id)
,FullyConnectedVar(1)
,PoolingVar(2)
{
this->addContainer(&FullyConnectedVar);
this->addContainer(NULL);this->addContainer(&PoolingVar);
}
private:
FullyConnected FullyConnectedVar;
;
};
class NNBenchmarks : public Client::Group
{
public:
NNBenchmarks(Testing::testID_t id):Client::Group(id)
,FullyConnectedBenchVar(1)
{
this->addContainer(&FullyConnectedBenchVar);
}
private:
FullyConnectedBench FullyConnectedBenchVar;
Pooling PoolingVar;
;
};
class Root : public Client::Group
{
public:
Root(Testing::testID_t id):Client::Group(id)
,DSPTestsVar(1)
,DSPBenchmarksVar(2)
,NNTestsVar(3)
,NNBenchmarksVar(4)
,NNTestsVar(3)
{
this->addContainer(&DSPTestsVar);
this->addContainer(&DSPBenchmarksVar);
this->addContainer(&NNTestsVar);
this->addContainer(&NNBenchmarksVar);
this->addContainer(NULL);this->addContainer(NULL);this->addContainer(&NNTestsVar);
this->addContainer(NULL);
}
private:
DSPTests DSPTestsVar;
DSPBenchmarks DSPBenchmarksVar;
NNTests NNTestsVar;
NNBenchmarks NNBenchmarksVar;
NNTests NNTestsVar;
;
};

@ -5,778 +5,47 @@ __ALIGNED(8) const char testDesc[]={
1,0,0,0,
'n','n',
3,0,0,0,
1,0,0,0,
'n','y','D','S','P','\0',
3,0,0,0,
1,0,0,0,
'n','y','S','t','a','t','s','\0',
2,0,0,0,
1,0,0,0,
'n','y','S','t','a','t','s','F','3','2','\0',
0,0,0,0,
14,0,0,0,
0,0,0,0,
140,0,0,0,
48,2,0,0,
2,0,0,0,
56,2,0,0,
10,0,0,0,
96,2,0,0,
200,0,0,0,
128,5,0,0,
2,0,0,0,
136,5,0,0,
10,0,0,0,
176,5,0,0,
120,0,0,0,
144,7,0,0,
120,0,0,0,
112,9,0,0,
2,0,0,0,
120,9,0,0,
10,0,0,0,
160,9,0,0,
140,0,0,0,
208,11,0,0,
140,0,0,0,
0,14,0,0,
2,0,0,0,
8,14,0,0,
10,0,0,0,
2,0,0,0,
'O','u','t','p','u','t','\0',
'T','e','m','p','\0',
0,0,0,0,
1,0,0,0,
1,0,0,0,
'n','n',
1,0,0,0,
2,0,0,0,
'n','n',
1,0,0,0,
3,0,0,0,
'n','n',
1,0,0,0,
4,0,0,0,
'n','n',
3,0,0,0,
2,0,0,0,
'n','y','S','u','p','p','o','r','t','\0',
2,0,0,0,
1,0,0,0,
'n','y','S','u','p','p','o','r','t','F','3','2','\0',
0,0,0,0,
8,0,0,0,
48,14,0,0,
120,5,0,0,
16,36,0,0,
3,0,0,0,
24,36,0,0,
100,0,0,0,
168,37,0,0,
140,0,0,0,
216,39,0,0,
200,0,0,0,
248,42,0,0,
2,0,0,0,
0,43,0,0,
200,0,0,0,
32,46,0,0,
10,0,0,0,
1,0,0,0,
'O','u','t','p','u','t','\0',
0,0,0,0,
1,0,0,0,
1,0,0,0,
'n','n',
1,0,0,0,
'n','y','N','N','\0',
2,0,0,0,
'n','n',
3,0,0,0,
3,0,0,0,
'n','y','B','a','s','i','c','M','a','t','h','s','\0',
2,0,0,0,
1,0,0,0,
'n','y','B','a','s','i','c','M','a','t','h','s','F','3','2','\0',
'n','y','P','o','o','l','i','n','g','\0',
0,0,0,0,
12,0,0,0,
72,46,0,0,
0,1,0,0,
72,50,0,0,
0,1,0,0,
72,54,0,0,
0,1,0,0,
72,58,0,0,
0,1,0,0,
72,62,0,0,
0,1,0,0,
72,66,0,0,
0,1,0,0,
72,70,0,0,
0,1,0,0,
72,74,0,0,
0,1,0,0,
72,78,0,0,
1,0,0,0,
80,78,0,0,
1,0,0,0,
88,78,0,0,
1,0,0,0,
96,78,0,0,
0,1,0,0,
2,0,0,0,
'O','u','t','p','u','t','\0',
'S','t','a','t','e','\0',
0,0,0,0,
1,0,0,0,
1,0,0,0,
'n','n',
1,0,0,0,
2,0,0,0,
'n','n',
1,0,0,0,
3,0,0,0,
'n','n',
1,0,0,0,
4,0,0,0,
'n','n',
1,0,0,0,
5,0,0,0,
'n','n',
1,0,0,0,
6,0,0,0,
'n','n',
1,0,0,0,
7,0,0,0,
'n','n',
1,0,0,0,
8,0,0,0,
'n','n',
1,0,0,0,
9,0,0,0,
'n','n',
1,0,0,0,
10,0,0,0,
'n','n',
1,0,0,0,
11,0,0,0,
'n','n',
1,0,0,0,
12,0,0,0,
'n','n',
1,0,0,0,
13,0,0,0,
'n','n',
1,0,0,0,
14,0,0,0,
'n','n',
1,0,0,0,
15,0,0,0,
'n','n',
1,0,0,0,
16,0,0,0,
'n','n',
1,0,0,0,
17,0,0,0,
'n','n',
1,0,0,0,
18,0,0,0,
'n','n',
1,0,0,0,
19,0,0,0,
'n','n',
1,0,0,0,
20,0,0,0,
'n','n',
1,0,0,0,
21,0,0,0,
'n','n',
1,0,0,0,
22,0,0,0,
'n','n',
1,0,0,0,
23,0,0,0,
'n','n',
1,0,0,0,
24,0,0,0,
'n','n',
3,0,0,0,
4,0,0,0,
'n','y','S','V','M','\0',
2,0,0,0,
1,0,0,0,
'n','y','S','V','M','F','3','2','\0',
0,0,0,0,
20,0,0,0,
96,82,0,0,
232,3,0,0,
0,98,0,0,
67,0,0,0,
16,99,0,0,
6,0,0,0,
32,99,0,0,
100,0,0,0,
176,100,0,0,
232,3,0,0,
80,116,0,0,
113,0,0,0,
24,118,0,0,
7,0,0,0,
40,118,0,0,
100,0,0,0,
184,119,0,0,
232,3,0,0,
88,135,0,0,
112,0,0,0,
24,137,0,0,
6,0,0,0,
40,137,0,0,
100,0,0,0,
184,138,0,0,
232,3,0,0,
88,154,0,0,
113,0,0,0,
32,156,0,0,
6,0,0,0,
48,156,0,0,
100,0,0,0,
192,157,0,0,
232,3,0,0,
96,173,0,0,
46,0,0,0,
24,174,0,0,
6,0,0,0,
40,174,0,0,
100,0,0,0,
1,0,0,0,
'O','u','t','p','u','t','\0',
0,0,0,0,
1,0,0,0,
1,0,0,0,
'n','n',
1,0,0,0,
2,0,0,0,
'n','n',
1,0,0,0,
3,0,0,0,
'n','n',
1,0,0,0,
4,0,0,0,
'n','n',
1,0,0,0,
5,0,0,0,
'n','n',
3,0,0,0,
5,0,0,0,
'n','y','B','a','y','e','s','\0',
2,0,0,0,
1,0,0,0,
'n','y','B','a','y','e','s','F','3','2','\0',
0,0,0,0,
5,0,0,0,
184,175,0,0,
3,0,0,0,
192,175,0,0,
140,0,0,0,
240,177,0,0,
146,0,0,0,
56,180,0,0,
50,0,0,0,
0,181,0,0,
10,0,0,0,
2,0,0,0,
'P','r','o','b','a','s','\0',
'P','r','e','d','i','c','t','s','\0',
0,0,0,0,
1,0,0,0,
1,0,0,0,
'n','n',
3,0,0,0,
6,0,0,0,
'n','y','D','i','s','t','a','n','c','e','\0',
2,0,0,0,
1,0,0,0,
'n','y','D','i','s','t','a','n','c','e','F','3','2','\0',
0,0,0,0,
15,0,0,0,
24,181,0,0,
2,0,0,0,
32,181,0,0,
12,0,0,0,
56,181,0,0,
120,0,0,0,
24,183,0,0,
120,0,0,0,
248,184,0,0,
120,0,0,0,
216,186,0,0,
120,0,0,0,
184,188,0,0,
10,0,0,0,
224,188,0,0,
10,0,0,0,
8,189,0,0,
10,0,0,0,
48,189,0,0,
10,0,0,0,
88,189,0,0,
10,0,0,0,
128,189,0,0,
10,0,0,0,
168,189,0,0,
10,0,0,0,
208,189,0,0,
10,0,0,0,
248,189,0,0,
10,0,0,0,
3,0,0,0,
'O','u','t','p','u','t','\0',
'T','m','p','A','\0',
'T','m','p','B','\0',
0,0,0,0,
1,0,0,0,
1,0,0,0,
'n','n',
1,0,0,0,
2,0,0,0,
'n','n',
1,0,0,0,
3,0,0,0,
'n','n',
1,0,0,0,
4,0,0,0,
'n','n',
1,0,0,0,
5,0,0,0,
'n','n',
1,0,0,0,
6,0,0,0,
'n','n',
1,0,0,0,
7,0,0,0,
'n','n',
1,0,0,0,
40,3,0,0,
40,3,0,0,
202,0,0,0,
248,3,0,0,
8,0,0,0,
'n','n',
1,0,0,0,
9,0,0,0,
'n','n',
2,0,0,0,
0,4,0,0,
2,0,0,0,
'n','y','D','i','s','t','a','n','c','e','U','3','2','\0',
0,0,0,0,
12,0,0,0,
32,190,0,0,
3,0,0,0,
40,190,0,0,
10,0,0,0,
80,190,0,0,
10,0,0,0,
120,190,0,0,
10,0,0,0,
160,190,0,0,
10,0,0,0,
200,190,0,0,
10,0,0,0,
240,190,0,0,
10,0,0,0,
24,191,0,0,
10,0,0,0,
64,191,0,0,
10,0,0,0,
104,191,0,0,
10,0,0,0,
144,191,0,0,
10,0,0,0,
184,191,0,0,
10,0,0,0,
1,0,0,0,
'O','u','t','p','u','t','\0',
0,0,0,0,
1,0,0,0,
1,0,0,0,
'n','n',
1,0,0,0,
2,0,0,0,
'n','n',
1,0,0,0,
3,0,0,0,
'n','n',
1,0,0,0,
4,0,0,0,
'n','n',
1,0,0,0,
5,0,0,0,
'n','n',
1,0,0,0,
6,0,0,0,
'n','n',
1,0,0,0,
7,0,0,0,
'n','n',
1,0,0,0,
8,0,0,0,
'n','n',
1,0,0,0,
9,0,0,0,
'n','n',
3,0,0,0,
2,0,0,0,
'n','y','D','S','P','\0',
3,0,0,0,
1,0,0,0,
'n','y','B','a','s','i','c','M','a','t','h','s','\0',
2,0,0,0,
1,0,0,0,
'y',0,0,0,0,
'y','B','a','s','i','c','M','a','t','h','s','F','3','2','\0',
1,0,0,0,
2,0,0,0,
224,191,0,0,
0,1,0,0,
224,195,0,0,
0,1,0,0,
1,0,0,0,
'O','u','t','p','u','t','\0',
1,0,0,0,
'g',1,0,0,0,
6,0,0,0,
5,0,0,0,
1,0,0,0,
5,0,0,0,
16,0,0,0,
32,0,0,0,
64,0,0,0,
128,0,0,0,
0,1,0,0,
1,0,0,0,
1,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
2,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
3,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
4,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
5,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
6,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
7,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
8,0,0,0,
'y',0,0,0,0,
'n',
2,0,0,0,
2,0,0,0,
'y',0,0,0,0,
'y','B','a','s','i','c','M','a','t','h','s','Q','3','1','\0',
1,0,0,0,
2,0,0,0,
224,199,0,0,
0,1,0,0,
224,203,0,0,
0,1,0,0,
1,0,0,0,
'O','u','t','p','u','t','\0',
1,0,0,0,
'g',1,0,0,0,
6,0,0,0,
5,0,0,0,
1,0,0,0,
5,0,0,0,
16,0,0,0,
32,0,0,0,
64,0,0,0,
128,0,0,0,
0,1,0,0,
1,0,0,0,
1,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
2,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
3,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
4,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
5,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
6,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
7,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
8,4,0,0,
8,0,0,0,
'y',0,0,0,0,
'n',
2,0,0,0,
3,0,0,0,
'y',0,0,0,0,
'y','B','a','s','i','c','M','a','t','h','s','Q','1','5','\0',
1,0,0,0,
2,0,0,0,
224,207,0,0,
0,1,0,0,
224,209,0,0,
0,1,0,0,
1,0,0,0,
'O','u','t','p','u','t','\0',
1,0,0,0,
'g',1,0,0,0,
6,0,0,0,
5,0,0,0,
1,0,0,0,
5,0,0,0,
16,0,0,0,
32,0,0,0,
64,0,0,0,
128,0,0,0,
0,1,0,0,
1,0,0,0,
1,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
16,4,0,0,
2,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
3,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
4,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
5,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
6,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
7,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
24,4,0,0,
8,0,0,0,
'y',0,0,0,0,
'n',
2,0,0,0,
4,0,0,0,
'y',0,0,0,0,
'y','B','a','s','i','c','M','a','t','h','s','Q','7','\0',
1,0,0,0,
2,0,0,0,
224,211,0,0,
0,1,0,0,
224,212,0,0,
0,1,0,0,
1,0,0,0,
'O','u','t','p','u','t','\0',
1,0,0,0,
'g',1,0,0,0,
6,0,0,0,
5,0,0,0,
1,0,0,0,
5,0,0,0,
16,0,0,0,
32,0,0,0,
64,0,0,0,
128,0,0,0,
0,1,0,0,
1,0,0,0,
1,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
32,4,0,0,
2,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
3,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
4,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
5,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
6,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
7,0,0,0,
'y',0,0,0,0,
'n',
1,0,0,0,
40,4,0,0,
8,0,0,0,
'y',0,0,0,0,
'n',
3,0,0,0,
3,0,0,0,
'n','y','N','N','\0',
48,4,0,0,
2,0,0,0,
1,0,0,0,
'n','y','F','u','l','l','y','C','o','n','n','e','c','t','e','d','\0',
0,0,0,0,
60,0,0,0,
224,213,0,0,
10,0,0,0,
240,213,0,0,
4,0,0,0,
248,213,0,0,
40,0,0,0,
32,214,0,0,
4,0,0,0,
40,214,0,0,
8,0,0,0,
48,214,0,0,
9,0,0,0,
64,214,0,0,
72,0,0,0,
136,214,0,0,
9,0,0,0,
152,214,0,0,
10,0,0,0,
168,214,0,0,
4,0,0,0,
176,214,0,0,
40,0,0,0,
216,214,0,0,
4,0,0,0,
224,214,0,0,
9,0,0,0,
240,214,0,0,
1,0,0,0,
248,214,0,0,
9,0,0,0,
8,215,0,0,
1,0,0,0,
16,215,0,0,
8,0,0,0,
24,215,0,0,
8,0,0,0,
32,215,0,0,
64,0,0,0,
96,215,0,0,
56,4,0,0,
8,0,0,0,
104,215,0,0,
54,0,0,0,
160,215,0,0,
1,0,0,0,
168,215,0,0,
6,0,0,0,
176,215,0,0,
9,0,0,0,
192,215,0,0,
64,0,0,0,
0,216,0,0,
1,0,0,0,
8,216,0,0,
64,4,0,0,
8,0,0,0,
16,216,0,0,
72,4,0,0,
8,0,0,0,
24,216,0,0,
40,0,0,0,
64,216,0,0,
1,0,0,0,
72,216,0,0,
10,0,0,0,
88,216,0,0,
4,0,0,0,
96,216,0,0,
54,0,0,0,
152,216,0,0,
1,0,0,0,
160,216,0,0,
6,0,0,0,
168,216,0,0,
9,0,0,0,
184,216,0,0,
40,0,0,0,
224,216,0,0,
80,4,0,0,
3,0,0,0,
88,4,0,0,
129,15,0,0,
224,19,0,0,
1,0,0,0,
232,216,0,0,
10,0,0,0,
248,216,0,0,
4,0,0,0,
0,217,0,0,
64,0,0,0,
64,217,0,0,
1,0,0,0,
72,217,0,0,
8,0,0,0,
80,217,0,0,
8,0,0,0,
88,217,0,0,
72,0,0,0,
160,217,0,0,
4,0,0,0,
168,217,0,0,
32,0,0,0,
200,217,0,0,
36,0,0,0,
240,217,0,0,
64,0,0,0,
48,218,0,0,
5,0,0,0,
56,218,0,0,
40,0,0,0,
96,218,0,0,
40,0,0,0,
136,218,0,0,
28,0,0,0,
168,218,0,0,
3,0,0,0,
176,218,0,0,
21,0,0,0,
200,218,0,0,
12,0,0,0,
216,218,0,0,
56,0,0,0,
16,219,0,0,
4,0,0,0,
24,219,0,0,
28,0,0,0,
56,219,0,0,
32,0,0,0,
2,0,0,0,
'O','u','t','p','u','t','\0',
'T','e','m','p','\0',
0,0,0,0,
1,0,0,0,
1,0,0,0,
@ -802,59 +71,5 @@ __ALIGNED(8) const char testDesc[]={
1,0,0,0,
8,0,0,0,
'n','n',
1,0,0,0,
9,0,0,0,
'n','n',
1,0,0,0,
10,0,0,0,
'n','n',
1,0,0,0,
11,0,0,0,
'n','n',
1,0,0,0,
12,0,0,0,
'n','n',
1,0,0,0,
13,0,0,0,
'n','n',
1,0,0,0,
14,0,0,0,
'n','n',
1,0,0,0,
15,0,0,0,
'n','n',
3,0,0,0,
4,0,0,0,
'n','y','N','N','\0',
2,0,0,0,
1,0,0,0,
'n','y','F','u','l','l','y','C','o','n','n','e','c','t','e','d','\0',
1,0,0,0,
4,0,0,0,
88,219,0,0,
10,0,0,0,
104,219,0,0,
4,0,0,0,
112,219,0,0,
40,0,0,0,
152,219,0,0,
4,0,0,0,
2,0,0,0,
'O','u','t','p','u','t','\0',
'T','e','m','p','\0',
1,0,0,0,
'g',1,0,0,0,
5,0,0,0,
4,0,0,0,
1,0,0,0,
4,0,0,0,
10,0,0,0,
20,0,0,0,
100,0,0,0,
200,0,0,0,
1,0,0,0,
1,0,0,0,
'y',0,0,0,0,
'n',
};
#endif

@ -1,181 +1,15 @@
#include "Test.h"
#include "StatsTestsF32.h"
StatsTestsF32::StatsTestsF32(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&StatsTestsF32::test_entropy_f32);
this->addTest(2,(Client::test)&StatsTestsF32::test_logsumexp_f32);
this->addTest(3,(Client::test)&StatsTestsF32::test_kullback_leibler_f32);
this->addTest(4,(Client::test)&StatsTestsF32::test_logsumexp_dot_prod_f32);
}
#include "SupportTestsF32.h"
SupportTestsF32::SupportTestsF32(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&SupportTestsF32::test_barycenter_f32);
this->addTest(2,(Client::test)&SupportTestsF32::test_weighted_sum_f32);
}
#include "BasicTestsF32.h"
BasicTestsF32::BasicTestsF32(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&BasicTestsF32::test_add_f32);
this->addTest(2,(Client::test)&BasicTestsF32::test_add_f32);
this->addTest(3,(Client::test)&BasicTestsF32::test_add_f32);
this->addTest(4,(Client::test)&BasicTestsF32::test_sub_f32);
this->addTest(5,(Client::test)&BasicTestsF32::test_sub_f32);
this->addTest(6,(Client::test)&BasicTestsF32::test_sub_f32);
this->addTest(7,(Client::test)&BasicTestsF32::test_mult_f32);
this->addTest(8,(Client::test)&BasicTestsF32::test_mult_f32);
this->addTest(9,(Client::test)&BasicTestsF32::test_mult_f32);
this->addTest(10,(Client::test)&BasicTestsF32::test_negate_f32);
this->addTest(11,(Client::test)&BasicTestsF32::test_negate_f32);
this->addTest(12,(Client::test)&BasicTestsF32::test_negate_f32);
this->addTest(13,(Client::test)&BasicTestsF32::test_offset_f32);
this->addTest(14,(Client::test)&BasicTestsF32::test_offset_f32);
this->addTest(15,(Client::test)&BasicTestsF32::test_offset_f32);
this->addTest(16,(Client::test)&BasicTestsF32::test_scale_f32);
this->addTest(17,(Client::test)&BasicTestsF32::test_scale_f32);
this->addTest(18,(Client::test)&BasicTestsF32::test_scale_f32);
this->addTest(19,(Client::test)&BasicTestsF32::test_dot_prod_f32);
this->addTest(20,(Client::test)&BasicTestsF32::test_dot_prod_f32);
this->addTest(21,(Client::test)&BasicTestsF32::test_dot_prod_f32);
this->addTest(22,(Client::test)&BasicTestsF32::test_abs_f32);
this->addTest(23,(Client::test)&BasicTestsF32::test_abs_f32);
this->addTest(24,(Client::test)&BasicTestsF32::test_abs_f32);
}
#include "SVMF32.h"
SVMF32::SVMF32(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&SVMF32::test_svm_linear_predict_f32);
this->addTest(2,(Client::test)&SVMF32::test_svm_polynomial_predict_f32);
this->addTest(3,(Client::test)&SVMF32::test_svm_rbf_predict_f32);
this->addTest(4,(Client::test)&SVMF32::test_svm_sigmoid_predict_f32);
this->addTest(5,(Client::test)&SVMF32::test_svm_rbf_predict_f32);
}
#include "BayesF32.h"
BayesF32::BayesF32(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&BayesF32::test_gaussian_naive_bayes_predict_f32);
}
#include "DistanceTestsF32.h"
DistanceTestsF32::DistanceTestsF32(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&DistanceTestsF32::test_braycurtis_distance_f32);
this->addTest(2,(Client::test)&DistanceTestsF32::test_canberra_distance_f32);
this->addTest(3,(Client::test)&DistanceTestsF32::test_chebyshev_distance_f32);
this->addTest(4,(Client::test)&DistanceTestsF32::test_cityblock_distance_f32);
this->addTest(5,(Client::test)&DistanceTestsF32::test_correlation_distance_f32);
this->addTest(6,(Client::test)&DistanceTestsF32::test_cosine_distance_f32);
this->addTest(7,(Client::test)&DistanceTestsF32::test_euclidean_distance_f32);
this->addTest(8,(Client::test)&DistanceTestsF32::test_jensenshannon_distance_f32);
this->addTest(9,(Client::test)&DistanceTestsF32::test_minkowski_distance_f32);
}
#include "DistanceTestsU32.h"
DistanceTestsU32::DistanceTestsU32(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&DistanceTestsU32::test_dice_distance);
this->addTest(2,(Client::test)&DistanceTestsU32::test_hamming_distance);
this->addTest(3,(Client::test)&DistanceTestsU32::test_jaccard_distance);
this->addTest(4,(Client::test)&DistanceTestsU32::test_kulsinski_distance);
this->addTest(5,(Client::test)&DistanceTestsU32::test_rogerstanimoto_distance);
this->addTest(6,(Client::test)&DistanceTestsU32::test_russellrao_distance);
this->addTest(7,(Client::test)&DistanceTestsU32::test_sokalmichener_distance);
this->addTest(8,(Client::test)&DistanceTestsU32::test_sokalsneath_distance);
this->addTest(9,(Client::test)&DistanceTestsU32::test_yule_distance);
}
#include "BasicMathsBenchmarksF32.h"
BasicMathsBenchmarksF32::BasicMathsBenchmarksF32(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&BasicMathsBenchmarksF32::vec_mult_f32);
this->addTest(2,(Client::test)&BasicMathsBenchmarksF32::vec_add_f32);
this->addTest(3,(Client::test)&BasicMathsBenchmarksF32::vec_sub_f32);
this->addTest(4,(Client::test)&BasicMathsBenchmarksF32::vec_abs_f32);
this->addTest(5,(Client::test)&BasicMathsBenchmarksF32::vec_negate_f32);
this->addTest(6,(Client::test)&BasicMathsBenchmarksF32::vec_offset_f32);
this->addTest(7,(Client::test)&BasicMathsBenchmarksF32::vec_scale_f32);
this->addTest(8,(Client::test)&BasicMathsBenchmarksF32::vec_dot_f32);
}
#include "BasicMathsBenchmarksQ31.h"
BasicMathsBenchmarksQ31::BasicMathsBenchmarksQ31(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&BasicMathsBenchmarksQ31::vec_mult_q31);
this->addTest(2,(Client::test)&BasicMathsBenchmarksQ31::vec_add_q31);
this->addTest(3,(Client::test)&BasicMathsBenchmarksQ31::vec_sub_q31);
this->addTest(4,(Client::test)&BasicMathsBenchmarksQ31::vec_abs_q31);
this->addTest(5,(Client::test)&BasicMathsBenchmarksQ31::vec_negate_q31);
this->addTest(6,(Client::test)&BasicMathsBenchmarksQ31::vec_offset_q31);
this->addTest(7,(Client::test)&BasicMathsBenchmarksQ31::vec_scale_q31);
this->addTest(8,(Client::test)&BasicMathsBenchmarksQ31::vec_dot_q31);
}
#include "BasicMathsBenchmarksQ15.h"
BasicMathsBenchmarksQ15::BasicMathsBenchmarksQ15(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&BasicMathsBenchmarksQ15::vec_mult_q15);
this->addTest(2,(Client::test)&BasicMathsBenchmarksQ15::vec_add_q15);
this->addTest(3,(Client::test)&BasicMathsBenchmarksQ15::vec_sub_q15);
this->addTest(4,(Client::test)&BasicMathsBenchmarksQ15::vec_abs_q15);
this->addTest(5,(Client::test)&BasicMathsBenchmarksQ15::vec_negate_q15);
this->addTest(6,(Client::test)&BasicMathsBenchmarksQ15::vec_offset_q15);
this->addTest(7,(Client::test)&BasicMathsBenchmarksQ15::vec_scale_q15);
this->addTest(8,(Client::test)&BasicMathsBenchmarksQ15::vec_dot_q15);
}
#include "BasicMathsBenchmarksQ7.h"
BasicMathsBenchmarksQ7::BasicMathsBenchmarksQ7(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&BasicMathsBenchmarksQ7::vec_mult_q7);
this->addTest(2,(Client::test)&BasicMathsBenchmarksQ7::vec_add_q7);
this->addTest(3,(Client::test)&BasicMathsBenchmarksQ7::vec_sub_q7);
this->addTest(4,(Client::test)&BasicMathsBenchmarksQ7::vec_abs_q7);
this->addTest(5,(Client::test)&BasicMathsBenchmarksQ7::vec_negate_q7);
this->addTest(6,(Client::test)&BasicMathsBenchmarksQ7::vec_offset_q7);
this->addTest(7,(Client::test)&BasicMathsBenchmarksQ7::vec_scale_q7);
this->addTest(8,(Client::test)&BasicMathsBenchmarksQ7::vec_dot_q7);
}
#include "FullyConnected.h"
FullyConnected::FullyConnected(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(2,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(3,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(4,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(5,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(6,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(7,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(8,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(9,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(10,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(11,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(12,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(13,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(14,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
this->addTest(15,(Client::test)&FullyConnected::test_fully_connected_tflite_s8);
}
#include "FullyConnectedBench.h"
FullyConnectedBench::FullyConnectedBench(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&FullyConnectedBench::test_fully_connected_tflite_s8);
#include "Pooling.h"
Pooling::Pooling(Testing::testID_t id):Client::Suite(id)
{
this->addTest(1,(Client::test)&Pooling::test_avgpool_s8);
this->addTest(2,(Client::test)&Pooling::test_avgpool_s8);
this->addTest(3,(Client::test)&Pooling::test_avgpool_s8);
this->addTest(4,(Client::test)&Pooling::test_avgpool_s8);
this->addTest(5,(Client::test)&Pooling::test_avgpool_s8);
this->addTest(6,(Client::test)&Pooling::test_avgpool_s8);
this->addTest(7,(Client::test)&Pooling::test_avgpool_s8);
this->addTest(8,(Client::test)&Pooling::test_avgpool_s8);
}

@ -0,0 +1,33 @@
#include "Test.h"
#include "Pattern.h"
class Pooling:public Client::Suite
{
public:
Pooling(Testing::testID_t id);
void setUp(Testing::testID_t,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr);
void tearDown(Testing::testID_t,Client::PatternMgr *mgr);
private:
#include "Pooling_decl.h"
Client::Pattern<q7_t> input;
Client::LocalPattern<q7_t> output;
// Reference patterns are not loaded when we are in dump mode
Client::RefPattern<q7_t> ref;
int DIM_IN_X;
int DIM_IN_Y;
int DIM_OUT_X;
int DIM_OUT_Y;
int IN_CHANNEL;
int DIM_FILTER_X;
int DIM_FILTER_Y;
int PAD_WIDTH;
int PAD_HEIGHT;
int STRIDE_X;
int STRIDE_Y;
int ACT_MIN;
int ACT_MAX;
};

@ -0,0 +1,202 @@
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffac
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffad
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffae
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffaf
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdc
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffdd
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffde
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf
0xffffffdf

@ -0,0 +1,2 @@
0xffffffac
0xffffffdc

@ -0,0 +1,2 @@
0xfffffff8
0xfffffffa

@ -0,0 +1,2 @@
0x00000000
0x00000030

@ -0,0 +1,2 @@
0x00000016
0x00000030

@ -0,0 +1,8 @@
0xffffffac
0xffffffd0
0xffffffdc
0xffffffd8
0xffffffa8
0xffffffe0
0x00000008
0xfffffff0

@ -0,0 +1,3 @@
0xffffffac
0xffffffd0
0xffffffdc

File diff suppressed because it is too large Load Diff

@ -0,0 +1,18 @@
B
8
//-128
0x80
//-32
0xe0
//-96
0xa0
//-64
0xc0
//-80
0xb0
//-96
0xa0
//32
0x20
//-16
0xf0

@ -0,0 +1,18 @@
B
8
//0
0x0
//-48
0xd0
//-16
0xf0
//-32
0xe0
//-24
0xe8
//-16
0xf0
//80
0x50
//-56
0xc8

@ -0,0 +1,18 @@
B
8
//0
0x0
//-48
0xd0
//96
0x60
//32
0x20
//-24
0xe8
//-16
0xf0
//80
0x50
//56
0x38

@ -0,0 +1,18 @@
B
8
//0
0x0
//48
0x30
//96
0x60
//32
0x20
//24
0x18
//16
0x10
//80
0x50
//56
0x38

@ -0,0 +1,18 @@
B
8
//-128
0x80
//-32
0xe0
//-96
0xa0
//-64
0xc0
//-80
0xb0
//-96
0xa0
//32
0x20
//-16
0xf0

@ -0,0 +1,18 @@
B
8
//-128
0x80
//-32
0xe0
//-96
0xa0
//-64
0xc0
//-80
0xb0
//-96
0xa0
//32
0x20
//-16
0xf0

File diff suppressed because it is too large Load Diff

@ -0,0 +1,406 @@
B
202
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-84
0xac
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-83
0xad
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-82
0xae
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-81
0xaf
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-36
0xdc
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-35
0xdd
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-34
0xde
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf
//-33
0xdf

@ -0,0 +1,6 @@
B
2
//-84
0xac
//-36
0xdc

@ -0,0 +1,6 @@
B
2
//-8
0xf8
//-6
0xfa

@ -0,0 +1,6 @@
B
2
//0
0x0
//48
0x30

@ -0,0 +1,6 @@
B
2
//22
0x16
//48
0x30

@ -0,0 +1,18 @@
B
8
//-84
0xac
//-48
0xd0
//-36
0xdc
//-40
0xd8
//-88
0xa8
//-32
0xe0
//8
0x8
//-16
0xf0

@ -0,0 +1,8 @@
B
3
//-84
0xac
//-48
0xd0
//-36
0xdc

@ -0,0 +1,206 @@
#include "Pooling.h"
#include "Error.h"
#include "arm_nnfunctions.h"
#include "Test.h"
#include <cstdio>
void Pooling::test_avgpool_s8()
{
const q7_t *inp = input.ptr();
q7_t *outp = output.ptr();
arm_avgpool_s8(
DIM_IN_Y,
DIM_IN_X,
DIM_OUT_Y,
DIM_OUT_X,
STRIDE_Y,
STRIDE_X,
DIM_FILTER_Y,
DIM_FILTER_X,
PAD_HEIGHT,
PAD_WIDTH,
ACT_MIN,
ACT_MAX,
IN_CHANNEL,
inp,
outp);
ASSERT_EQ(ref,output);
}
void Pooling::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
{
switch(id)
{
case Pooling::TEST_AVGPOOL_S8_1:
input.reload(Pooling::INPUT1_S8_ID,mgr);
ref.reload(Pooling::REF1_S8_ID,mgr);
this->DIM_IN_X= 4;
this->DIM_IN_Y= 2;
this->DIM_OUT_X= 2;
this->DIM_OUT_Y= 1;
this->IN_CHANNEL= 101;
this->DIM_FILTER_X= 2;
this->DIM_FILTER_Y= 2;
this->PAD_WIDTH= 0;
this->PAD_HEIGHT= 0;
this->STRIDE_X= 2;
this->STRIDE_Y= 2;
this->ACT_MIN= -128;
this->ACT_MAX= 127;
break;
case Pooling::TEST_AVGPOOL_S8_2:
input.reload(Pooling::INPUT2_S8_ID,mgr);
ref.reload(Pooling::REF2_S8_ID,mgr);
this->DIM_IN_X= 4;
this->DIM_IN_Y= 2;
this->DIM_OUT_X= 2;
this->DIM_OUT_Y= 1;
this->IN_CHANNEL= 1;
this->DIM_FILTER_X= 2;
this->DIM_FILTER_Y= 2;
this->PAD_WIDTH= 0;
this->PAD_HEIGHT= 0;
this->STRIDE_X= 2;
this->STRIDE_Y= 2;
this->ACT_MIN= -128;
this->ACT_MAX= 127;
break;
case Pooling::TEST_AVGPOOL_S8_3:
input.reload(Pooling::INPUT3_S8_ID,mgr);
ref.reload(Pooling::REF3_S8_ID,mgr);
this->DIM_IN_X= 4;
this->DIM_IN_Y= 2;
this->DIM_OUT_X= 2;
this->DIM_OUT_Y= 1;
this->IN_CHANNEL= 1;
this->DIM_FILTER_X= 2;
this->DIM_FILTER_Y= 2;
this->PAD_WIDTH= 0;
this->PAD_HEIGHT= 0;
this->STRIDE_X= 2;
this->STRIDE_Y= 2;
this->ACT_MIN= -8;
this->ACT_MAX= 8;
break;
case Pooling::TEST_AVGPOOL_S8_4:
input.reload(Pooling::INPUT4_S8_ID,mgr);
ref.reload(Pooling::REF4_S8_ID,mgr);
this->DIM_IN_X= 4;
this->DIM_IN_Y= 2;
this->DIM_OUT_X= 2;
this->DIM_OUT_Y= 1;
this->IN_CHANNEL= 1;
this->DIM_FILTER_X= 2;
this->DIM_FILTER_Y= 2;
this->PAD_WIDTH= 0;
this->PAD_HEIGHT= 0;
this->STRIDE_X= 2;
this->STRIDE_Y= 2;
this->ACT_MIN= 0;
this->ACT_MAX= 48;
break;
case Pooling::TEST_AVGPOOL_S8_5:
input.reload(Pooling::INPUT5_S8_ID,mgr);
ref.reload(Pooling::REF5_S8_ID,mgr);
this->DIM_IN_X= 4;
this->DIM_IN_Y= 2;
this->DIM_OUT_X= 2;
this->DIM_OUT_Y= 1;
this->IN_CHANNEL= 1;
this->DIM_FILTER_X= 2;
this->DIM_FILTER_Y= 2;
this->PAD_WIDTH= 0;
this->PAD_HEIGHT= 0;
this->STRIDE_X= 2;
this->STRIDE_Y= 2;
this->ACT_MIN= 0;
this->ACT_MAX= 48;
break;
case Pooling::TEST_AVGPOOL_S8_6:
input.reload(Pooling::INPUT6_S8_ID,mgr);
ref.reload(Pooling::REF6_S8_ID,mgr);
this->DIM_IN_X= 4;
this->DIM_IN_Y= 2;
this->DIM_OUT_X= 4;
this->DIM_OUT_Y= 2;
this->IN_CHANNEL= 1;
this->DIM_FILTER_X= 2;
this->DIM_FILTER_Y= 2;
this->PAD_WIDTH= 0;
this->PAD_HEIGHT= 0;
this->STRIDE_X= 1;
this->STRIDE_Y= 1;
this->ACT_MIN= -128;
this->ACT_MAX= 127;
break;
case Pooling::TEST_AVGPOOL_S8_7:
input.reload(Pooling::INPUT7_S8_ID,mgr);
ref.reload(Pooling::REF7_S8_ID,mgr);
this->DIM_IN_X= 4;
this->DIM_IN_Y= 2;
this->DIM_OUT_X= 3;
this->DIM_OUT_Y= 1;
this->IN_CHANNEL= 1;
this->DIM_FILTER_X= 2;
this->DIM_FILTER_Y= 2;
this->PAD_WIDTH= 0;
this->PAD_HEIGHT= 0;
this->STRIDE_X= 1;
this->STRIDE_Y= 1;
this->ACT_MIN= -128;
this->ACT_MAX= 127;
break;
case Pooling::TEST_AVGPOOL_S8_8:
input.reload(Pooling::INPUT8_S8_ID,mgr);
ref.reload(Pooling::REF8_S8_ID,mgr);
this->DIM_IN_X= 63;
this->DIM_IN_Y= 63;
this->DIM_OUT_X= 1;
this->DIM_OUT_Y= 1;
this->IN_CHANNEL= 1;
this->DIM_FILTER_X= 63;
this->DIM_FILTER_Y= 63;
this->PAD_WIDTH= 0;
this->PAD_HEIGHT= 0;
this->STRIDE_X= 2;
this->STRIDE_Y= 2;
this->ACT_MIN= -128;
this->ACT_MAX= 127;
break;
}
output.create(ref.nbSamples(),Pooling::OUTPUT_S8_ID,mgr);
}
void Pooling::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
{
output.dump(mgr);
}

@ -1,651 +1,34 @@
3 1
n
n
3 1
n
y
DSP
3 1
n
y
Stats
2 1
n
y
StatsF32
0
14
Input1_f32.txt
Dims1_s16.txt
RefEntropy1_f32.txt
Input2_f32.txt
Dims2_s16.txt
RefLogSumExp2_f32.txt
InputA3_f32.txt
InputB3_f32.txt
Dims3_s16.txt
RefKL3_f32.txt
InputA4_f32.txt
InputB4_f32.txt
Dims4_s16.txt
RefLogSumExpDot4_f32.txt
2
Output
Temp
0
1 1
n
n
1 2
n
n
1 3
n
n
1 4
n
n
3 2
n
y
Support
2 1
n
y
SupportF32
0
8
Inputs1_f32.txt
Dims1_s16.txt
Weights1_f32.txt
Ref1_f32.txt
Inputs2_f32.txt
Dims2_s16.txt
Weights2_f32.txt
Ref2_f32.txt
1
Output
0
1 1
n
n
1 2
n
n
3 3
n
y
BasicMaths
2 1
n
y
BasicMathsF32
0
12
Input1_f32.txt
Input2_f32.txt
Reference1_f32.txt
Reference2_f32.txt
Reference3_f32.txt
Reference4_f32.txt
Reference5_f32.txt
Reference6_f32.txt
Reference7_f32.txt
Reference8_f32.txt
Reference9_f32.txt
Reference10_f32.txt
2
Output
State
0
1 1
n
n
1 2
n
n
1 3
n
n
1 4
n
n
1 5
n
n
1 6
n
n
1 7
n
n
1 8
n
n
1 9
n
n
1 10
n
n
1 11
n
n
1 12
n
n
1 13
n
n
1 14
n
n
1 15
n
n
1 16
n
n
1 17
n
n
1 18
n
n
1 19
n
n
1 20
n
n
1 21
n
n
1 22
n
n
1 23
n
n
1 24
n
n
3 4
n
y
SVM
2 1
n
y
SVMF32
0
20
Samples1_f32.txt
Params1_f32.txt
Dims1_s16.txt
Reference1_s32.txt
Samples2_f32.txt
Params2_f32.txt
Dims2_s16.txt
Reference2_s32.txt
Samples3_f32.txt
Params3_f32.txt
Dims3_s16.txt
Reference3_s32.txt
Samples4_f32.txt
Params4_f32.txt
Dims4_s16.txt
Reference4_s32.txt
Samples5_f32.txt
Params5_f32.txt
Dims5_s16.txt
Reference5_s32.txt
1
Output
0
1 1
n
n
1 2
n
n
1 3
n
n
1 4
n
n
1 5
n
n
3 5
n
y
Bayes
2 1
n
y
BayesF32
0
5
Dims1_s16.txt
Inputs1_f32.txt
Params1_f32.txt
Probas1_f32.txt
Predicts1_s16.txt
2
Probas
Predicts
0
1 1
n
n
3 6
n
y
Distance
2 1
n
y
DistanceF32
0
15
Dims1_s16.txt
Dims9_s16.txt
InputA1_f32.txt
InputB1_f32.txt
InputA8_f32.txt
InputB8_f32.txt
Ref1_f32.txt
Ref2_f32.txt
Ref3_f32.txt
Ref4_f32.txt
Ref5_f32.txt
Ref6_f32.txt
Ref7_f32.txt
Ref8_f32.txt
Ref9_f32.txt
3
Output
TmpA
TmpB
0
1 1
n
n
1 2
n
n
1 3
n
n
1 4
n
n
1 5
n
n
1 6
n
n
1 7
n
n
1 8
n
n
1 9
n
n
2 2
n
y
DistanceU32
0
12
Dims1_s16.txt
InputA1_u32.txt
InputB1_u32.txt
Ref1_f32.txt
Ref2_f32.txt
Ref3_f32.txt
Ref4_f32.txt
Ref5_f32.txt
Ref6_f32.txt
Ref7_f32.txt
Ref8_f32.txt
Ref9_f32.txt
1
Output
0
1 1
n
n
1 2
n
n
1 3
n
n
1 4
n
n
1 5
n
n
1 6
n
n
1 7
n
n
1 8
n
n
1 9
n
n
3 2
n
y
DSP
3 1
n
y
BasicMaths
2 1
y
0
y
BasicMathsF32
1
2
Input1_f32.txt
Input2_f32.txt
1
Output
1
g
1
6
5
1
5
16
32
64
128
256
1 1
y
0
n
1 2
y
0
n
1 3
y
0
n
1 4
y
0
n
1 5
y
0
n
1 6
y
0
n
1 7
y
0
n
1 8
y
0
n
NN
2 2
y
0
y
BasicMathsQ31
1
2
Input1_q31.txt
Input2_q31.txt
1
Output
1
g
1
6
5
1
5
16
32
64
128
256
1 1
y
0
n
1 2
y
0
n
1 3
y
0
n
1 4
y
0
n
1 5
y
0
n
1 6
y
0
n
1 7
y
0
n
1 8
y
Pooling
0
n
2 3
y
0
y
BasicMathsQ15
1
2
Input1_q15.txt
Input2_q15.txt
1
Output
1
g
1
6
5
1
5
16
32
64
128
256
1 1
y
0
n
1 2
y
0
n
1 3
y
0
n
1 4
y
0
n
1 5
y
0
n
1 6
y
0
n
1 7
y
0
n
1 8
y
0
n
2 4
y
0
y
BasicMathsQ7
1
2
Input1_q7.txt
Input2_q7.txt
1
Output
1
g
1
6
5
Input1.txt
Ref1.txt
Input2.txt
Ref2.txt
Input3.txt
Ref3.txt
Input4.txt
Ref4.txt
Input5.txt
Ref5.txt
Input6.txt
Ref6.txt
Input7.txt
Ref7.txt
Input8.txt
Ref8.txt
1
5
16
32
64
128
256
1 1
y
0
n
1 2
y
0
n
1 3
y
0
n
1 4
y
0
n
1 5
y
0
n
1 6
y
0
n
1 7
y
0
n
1 8
y
0
n
3 3
n
y
NN
2 1
n
y
FullyConnected
0
60
TestCase_1_10_4_input_1.txt
TestCase_1_10_4_bias_1.txt
TestCase_1_10_4_weights_1.txt
TestCase_1_10_4_output_1.txt
TestCase_1_8_9_input_2.txt
TestCase_1_8_9_bias_2.txt
TestCase_1_8_9_weights_2.txt
TestCase_1_8_9_output_2.txt
TestCase_1_10_4_input_3.txt
TestCase_1_10_4_bias_3.txt
TestCase_1_10_4_weights_3.txt
TestCase_1_10_4_output_3.txt
TestCase_1_9_1_input_4.txt
TestCase_1_9_1_bias_4.txt
TestCase_1_9_1_weights_4.txt
TestCase_1_9_1_output_4.txt
TestCase_1_8_8_input_5.txt
TestCase_1_8_8_bias_5.txt
TestCase_1_8_8_weights_5.txt
TestCase_1_8_8_output_5.txt
TestCase_9_6_1_input_6.txt
TestCase_9_6_1_bias_6.txt
TestCase_9_6_1_weights_6.txt
TestCase_9_6_1_output_6.txt
TestCase_8_8_1_input_7.txt
TestCase_8_8_1_bias_7.txt
TestCase_8_8_1_weights_7.txt
TestCase_8_8_1_output_7.txt
TestCase_4_10_1_input_8.txt
TestCase_4_10_1_bias_8.txt
TestCase_4_10_1_weights_8.txt
TestCase_4_10_1_output_8.txt
TestCase_9_6_1_input_9.txt
TestCase_9_6_1_bias_9.txt
TestCase_9_6_1_weights_9.txt
TestCase_9_6_1_output_9.txt
TestCase_4_10_1_input_10.txt
TestCase_4_10_1_bias_10.txt
TestCase_4_10_1_weights_10.txt
TestCase_4_10_1_output_10.txt
TestCase_8_8_1_input_11.txt
TestCase_8_8_1_bias_11.txt
TestCase_8_8_1_weights_11.txt
TestCase_8_8_1_output_11.txt
TestCase_9_8_4_input_12.txt
TestCase_9_8_4_bias_12.txt
TestCase_9_8_4_weights_12.txt
TestCase_9_8_4_output_12.txt
TestCase_8_8_5_input_13.txt
TestCase_8_8_5_bias_13.txt
TestCase_8_8_5_weights_13.txt
TestCase_8_8_5_output_13.txt
TestCase_4_7_3_input_14.txt
TestCase_4_7_3_bias_14.txt
TestCase_4_7_3_weights_14.txt
TestCase_4_7_3_output_14.txt
TestCase_8_7_4_input_15.txt
TestCase_8_7_4_bias_15.txt
TestCase_8_7_4_weights_15.txt
TestCase_8_7_4_output_15.txt
2
Output
Temp
0
1 1
n
@ -671,56 +54,3 @@ n
1 8
n
n
1 9
n
n
1 10
n
n
1 11
n
n
1 12
n
n
1 13
n
n
1 14
n
n
1 15
n
n
3 4
n
y
NN
2 1
n
y
FullyConnected
1
4
TestCase_1_10_4_input_1.txt
TestCase_1_10_4_bias_1.txt
TestCase_1_10_4_weights_1.txt
TestCase_1_10_4_output_1.txt
2
Output
Temp
1
g
1
5
4
1
4
10
20
100
200
1 1
y
0
n

@ -1,2 +1,2 @@
OPTIMIZED,HARDFP,FASTMATH,NEON,UNROLL,ROUNDING,PLATFORM,CORE,COMPILER,VERSION
1,1,1,1,1,0,FVP,ARMCA5,AC6,6120001
1,1,1,0,1,0,FVP,ARMCM7_DP,AC6,6120001

1 OPTIMIZED HARDFP FASTMATH NEON UNROLL ROUNDING PLATFORM CORE COMPILER VERSION
2 1 1 1 1 0 1 0 FVP ARMCA5 ARMCM7_DP AC6 6120001

@ -597,6 +597,48 @@ group Root {
matmul_tflite_s8 test15:test_fully_connected_tflite_s8
}
}
suite Pooling {
class = Pooling
folder = Pooling
Pattern INPUT1_S8_ID : Input1.txt
Pattern REF1_S8_ID : Ref1.txt
Pattern INPUT2_S8_ID : Input2.txt
Pattern REF2_S8_ID : Ref2.txt
Pattern INPUT3_S8_ID : Input3.txt
Pattern REF3_S8_ID : Ref3.txt
Pattern INPUT4_S8_ID : Input4.txt
Pattern REF4_S8_ID : Ref4.txt
Pattern INPUT5_S8_ID : Input5.txt
Pattern REF5_S8_ID : Ref5.txt
Pattern INPUT6_S8_ID : Input6.txt
Pattern REF6_S8_ID : Ref6.txt
Pattern INPUT7_S8_ID : Input7.txt
Pattern REF7_S8_ID : Ref7.txt
Pattern INPUT8_S8_ID : Input8.txt
Pattern REF8_S8_ID : Ref8.txt
Output OUTPUT_S8_ID : Output
Functions {
arm_avgpool_s8 Test 1:test_avgpool_s8
arm_avgpool_s8 Test 2:test_avgpool_s8
arm_avgpool_s8 Test 3:test_avgpool_s8
arm_avgpool_s8 Test 4:test_avgpool_s8
arm_avgpool_s8 Test 5:test_avgpool_s8
arm_avgpool_s8 Test 6:test_avgpool_s8
arm_avgpool_s8 Test 7:test_avgpool_s8
arm_avgpool_s8 Test 8:test_avgpool_s8
}
}
}
group NN Benchmarks

Loading…
Cancel
Save