1 /* ----------------------------------------------------------------------
2 * Project: CMSIS DSP Library
3 * Title: Pattern.cpp
4 * Description: Patterns
5 *
6 * Abstraction to manipulate test patterns
7 * and hiding where they come from
8 *
9 * $Date: 20. June 2019
10 * $Revision: V1.0.0
11 *
12 * Target Processor: Cortex-M cores
13 * -------------------------------------------------------------------- */
14 /*
15 * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.
16 *
17 * SPDX-License-Identifier: Apache-2.0
18 *
19 * Licensed under the Apache License, Version 2.0 (the License); you may
20 * not use this file except in compliance with the License.
21 * You may obtain a copy of the License at
22 *
23 * www.apache.org/licenses/LICENSE-2.0
24 *
25 * Unless required by applicable law or agreed to in writing, software
26 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
27 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28 * See the License for the specific language governing permissions and
29 * limitations under the License.
30 */
31 #include "Test.h"
32 #include "Pattern.h"
33 #include "arm_math_types.h"
34 #include "arm_math_types_f16.h"
35
36 namespace Client {
37
38 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)39 float64_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
40 {
41 return(mgr->load_f64(id,nb,maxSamples));
42 }
43
44 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)45 float32_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
46 {
47 return(mgr->load_f32(id,nb,maxSamples));
48 }
49
50 #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
51 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)52 float16_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
53 {
54 return(mgr->load_f16(id,nb,maxSamples));
55 }
56 #endif
57
58 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)59 q63_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
60 {
61 return(mgr->load_q63(id,nb,maxSamples));
62 }
63
64 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)65 q31_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
66 {
67 return(mgr->load_q31(id,nb,maxSamples));
68 }
69
70 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)71 q15_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
72 {
73 return(mgr->load_q15(id,nb,maxSamples));
74 }
75
76 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)77 q7_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
78 {
79 return(mgr->load_q7(id,nb,maxSamples));
80 }
81
82 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)83 uint64_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
84 {
85 return(mgr->load_u64(id,nb,maxSamples));
86 }
87
88
89 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)90 uint32_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
91 {
92 return(mgr->load_u32(id,nb,maxSamples));
93 }
94
95 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)96 uint16_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
97 {
98 return(mgr->load_u16(id,nb,maxSamples));
99 }
100
101 template <>
loadPattern(Testing::PatternID_t id,Client::PatternMgr * mgr,Testing::nbSamples_t & nb,Testing::nbSamples_t maxSamples)102 uint8_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
103 {
104 return(mgr->load_u8(id,nb,maxSamples));
105 }
106
107
108 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)109 float64_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
110 {
111 return(mgr->local_f64(id));
112 }
113
114 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)115 float32_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
116 {
117 return(mgr->local_f32(id));
118 }
119
120 #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
121 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)122 float16_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
123 {
124 return(mgr->local_f16(id));
125 }
126 #endif
127
128 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)129 q63_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
130 {
131 return(mgr->local_q63(id));
132 }
133
134 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)135 q31_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
136 {
137 return(mgr->local_q31(id));
138 }
139
140 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)141 q15_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
142 {
143 return(mgr->local_q15(id));
144 }
145
146 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)147 q7_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
148 {
149 return(mgr->local_q7(id));
150 }
151
152 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)153 uint64_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
154 {
155 return(mgr->local_u64(id));
156 }
157
158 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)159 uint32_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
160 {
161 return(mgr->local_u32(id));
162 }
163
164 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)165 uint16_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
166 {
167 return(mgr->local_u16(id));
168 }
169
170 template <>
localPattern(Testing::PatternID_t id,Client::PatternMgr * mgr)171 uint8_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
172 {
173 return(mgr->local_u8(id));
174 }
175
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float64_t * data,PatternMgr * mgr)176 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float64_t* data,PatternMgr *mgr)
177 {
178 mgr->dumpPattern_f64(id,nbSamples,data);
179 }
180
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float32_t * data,PatternMgr * mgr)181 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float32_t* data,PatternMgr *mgr)
182 {
183 mgr->dumpPattern_f32(id,nbSamples,data);
184 }
185
186 #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float16_t * data,PatternMgr * mgr)187 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float16_t* data,PatternMgr *mgr)
188 {
189 mgr->dumpPattern_f16(id,nbSamples,data);
190 }
191 #endif
192
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q63_t * data,PatternMgr * mgr)193 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q63_t* data,PatternMgr *mgr)
194 {
195 mgr->dumpPattern_q63(id,nbSamples,data);
196 }
197
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q31_t * data,PatternMgr * mgr)198 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q31_t* data,PatternMgr *mgr)
199 {
200 mgr->dumpPattern_q31(id,nbSamples,data);
201 }
202
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q15_t * data,PatternMgr * mgr)203 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q15_t* data,PatternMgr *mgr)
204 {
205 mgr->dumpPattern_q15(id,nbSamples,data);
206 }
207
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q7_t * data,PatternMgr * mgr)208 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q7_t* data,PatternMgr *mgr)
209 {
210 mgr->dumpPattern_q7(id,nbSamples,data);
211 }
212
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint64_t * data,PatternMgr * mgr)213 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint64_t* data,PatternMgr *mgr)
214 {
215 mgr->dumpPattern_u64(id,nbSamples,data);
216 }
217
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint32_t * data,PatternMgr * mgr)218 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint32_t* data,PatternMgr *mgr)
219 {
220 mgr->dumpPattern_u32(id,nbSamples,data);
221 }
222
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint16_t * data,PatternMgr * mgr)223 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint16_t* data,PatternMgr *mgr)
224 {
225 mgr->dumpPattern_u16(id,nbSamples,data);
226 }
227
dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint8_t * data,PatternMgr * mgr)228 void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint8_t* data,PatternMgr *mgr)
229 {
230 mgr->dumpPattern_u8(id,nbSamples,data);
231 }
232
233
234 }
235