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