PatternMgr.cpp 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. /* ----------------------------------------------------------------------
  2. * Project: CMSIS DSP Library
  3. * Title: PatternMgr.cpp
  4. * Description: Pattern Manager
  5. *
  6. * The link between a pattern and a memory manager.
  7. * Allow creation and initialization of patterns
  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 "arm_math_types.h"
  33. #include "arm_math_types_f16.h"
  34. namespace Client
  35. {
  36. PatternMgr::PatternMgr(IO* io, Memory *mem)
  37. {
  38. m_io = io;
  39. m_mem = mem;
  40. }
  41. #define LOCAL(TYPE,EXT) \
  42. TYPE *PatternMgr::local_##EXT(Testing::nbSamples_t nbSamples) \
  43. { \
  44. return((TYPE*)(m_mem->NewBuffer(sizeof(TYPE)*nbSamples))); \
  45. }
  46. LOCAL(float64_t,f64)
  47. LOCAL(float32_t,f32)
  48. #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
  49. LOCAL(float16_t,f16)
  50. #endif
  51. LOCAL(q63_t,q63)
  52. LOCAL(q31_t,q31)
  53. LOCAL(q15_t,q15)
  54. LOCAL(q7_t,q7)
  55. LOCAL(uint64_t,u64)
  56. LOCAL(uint32_t,u32)
  57. LOCAL(uint16_t,u16)
  58. LOCAL(uint8_t,u8)
  59. float64_t *PatternMgr::load_f64(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  60. {
  61. nbSamples=m_io->GetPatternSize(id);
  62. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  63. {
  64. nbSamples = maxSamples;
  65. }
  66. char *b = m_mem->NewBuffer(sizeof(float64_t)*nbSamples);
  67. if (b != NULL)
  68. {
  69. m_io->ImportPattern_f64(id,b,nbSamples);
  70. }
  71. return((float64_t*)b);
  72. }
  73. float32_t *PatternMgr::load_f32(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  74. {
  75. nbSamples=m_io->GetPatternSize(id);
  76. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  77. {
  78. nbSamples = maxSamples;
  79. }
  80. char *b = m_mem->NewBuffer(sizeof(float32_t)*nbSamples);
  81. if (b != NULL)
  82. {
  83. m_io->ImportPattern_f32(id,b,nbSamples);
  84. }
  85. return((float32_t*)b);
  86. }
  87. #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
  88. float16_t *PatternMgr::load_f16(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  89. {
  90. nbSamples=m_io->GetPatternSize(id);
  91. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  92. {
  93. nbSamples = maxSamples;
  94. }
  95. char *b = m_mem->NewBuffer(sizeof(float16_t)*nbSamples);
  96. if (b != NULL)
  97. {
  98. m_io->ImportPattern_f16(id,b,nbSamples);
  99. }
  100. return((float16_t*)b);
  101. }
  102. #endif
  103. q63_t *PatternMgr::load_q63(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  104. {
  105. nbSamples=m_io->GetPatternSize(id);
  106. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  107. {
  108. nbSamples = maxSamples;
  109. }
  110. char *b = m_mem->NewBuffer(sizeof(q63_t)*nbSamples);
  111. if (b != NULL)
  112. {
  113. m_io->ImportPattern_q63(id,b,nbSamples);
  114. }
  115. return((q63_t*)b);
  116. }
  117. q31_t *PatternMgr::load_q31(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  118. {
  119. nbSamples=m_io->GetPatternSize(id);
  120. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  121. {
  122. nbSamples = maxSamples;
  123. }
  124. char *b = m_mem->NewBuffer(sizeof(q31_t)*nbSamples);
  125. if (b != NULL)
  126. {
  127. m_io->ImportPattern_q31(id,b,nbSamples);
  128. }
  129. return((q31_t*)b);
  130. }
  131. q15_t *PatternMgr::load_q15(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  132. {
  133. nbSamples=m_io->GetPatternSize(id);
  134. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  135. {
  136. nbSamples = maxSamples;
  137. }
  138. char *b = m_mem->NewBuffer(sizeof(q15_t)*nbSamples);
  139. if (b != NULL)
  140. {
  141. m_io->ImportPattern_q15(id,b,nbSamples);
  142. }
  143. return((q15_t*)b);
  144. }
  145. q7_t *PatternMgr::load_q7(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  146. {
  147. nbSamples=m_io->GetPatternSize(id);
  148. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  149. {
  150. nbSamples = maxSamples;
  151. }
  152. char *b = m_mem->NewBuffer(sizeof(q7_t)*nbSamples);
  153. if (b != NULL)
  154. {
  155. m_io->ImportPattern_q7(id,b,nbSamples);
  156. }
  157. return((q7_t*)b);
  158. }
  159. uint64_t *PatternMgr::load_u64(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  160. {
  161. nbSamples=m_io->GetPatternSize(id);
  162. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  163. {
  164. nbSamples = maxSamples;
  165. }
  166. char *b = m_mem->NewBuffer(sizeof(uint64_t)*nbSamples);
  167. if (b != NULL)
  168. {
  169. m_io->ImportPattern_u64(id,b,nbSamples);
  170. }
  171. return((uint64_t*)b);
  172. }
  173. uint32_t *PatternMgr::load_u32(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  174. {
  175. nbSamples=m_io->GetPatternSize(id);
  176. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  177. {
  178. nbSamples = maxSamples;
  179. }
  180. char *b = m_mem->NewBuffer(sizeof(uint32_t)*nbSamples);
  181. if (b != NULL)
  182. {
  183. m_io->ImportPattern_u32(id,b,nbSamples);
  184. }
  185. return((uint32_t*)b);
  186. }
  187. uint16_t *PatternMgr::load_u16(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  188. {
  189. nbSamples=m_io->GetPatternSize(id);
  190. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  191. {
  192. nbSamples = maxSamples;
  193. }
  194. char *b = m_mem->NewBuffer(sizeof(uint16_t)*nbSamples);
  195. if (b != NULL)
  196. {
  197. m_io->ImportPattern_u16(id,b,nbSamples);
  198. }
  199. return((uint16_t*)b);
  200. }
  201. uint8_t *PatternMgr::load_u8(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  202. {
  203. nbSamples=m_io->GetPatternSize(id);
  204. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  205. {
  206. nbSamples = maxSamples;
  207. }
  208. char *b = m_mem->NewBuffer(sizeof(uint8_t)*nbSamples);
  209. if (b != NULL)
  210. {
  211. m_io->ImportPattern_u8(id,b,nbSamples);
  212. }
  213. return((uint8_t*)b);
  214. }
  215. void PatternMgr::dumpPattern_f64(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float64_t* data)
  216. {
  217. m_io->DumpPattern_f64(id,nbSamples,data);
  218. }
  219. void PatternMgr::dumpPattern_f32(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float32_t* data)
  220. {
  221. m_io->DumpPattern_f32(id,nbSamples,data);
  222. }
  223. #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
  224. void PatternMgr::dumpPattern_f16(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float16_t* data)
  225. {
  226. m_io->DumpPattern_f16(id,nbSamples,data);
  227. }
  228. #endif
  229. void PatternMgr::dumpPattern_q63(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q63_t* data)
  230. {
  231. m_io->DumpPattern_q63(id,nbSamples,data);
  232. }
  233. void PatternMgr::dumpPattern_q31(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q31_t* data)
  234. {
  235. m_io->DumpPattern_q31(id,nbSamples,data);
  236. }
  237. void PatternMgr::dumpPattern_q15(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q15_t* data)
  238. {
  239. m_io->DumpPattern_q15(id,nbSamples,data);
  240. }
  241. void PatternMgr::dumpPattern_q7(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q7_t* data)
  242. {
  243. m_io->DumpPattern_q7(id,nbSamples,data);
  244. }
  245. void PatternMgr::dumpPattern_u64(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint64_t* data)
  246. {
  247. m_io->DumpPattern_u64(id,nbSamples,data);
  248. }
  249. void PatternMgr::dumpPattern_u32(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint32_t* data)
  250. {
  251. m_io->DumpPattern_u32(id,nbSamples,data);
  252. }
  253. void PatternMgr::dumpPattern_u16(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint16_t* data)
  254. {
  255. m_io->DumpPattern_u16(id,nbSamples,data);
  256. }
  257. void PatternMgr::dumpPattern_u8(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint8_t* data)
  258. {
  259. m_io->DumpPattern_u8(id,nbSamples,data);
  260. }
  261. void PatternMgr::freeAll()
  262. {
  263. m_mem->FreeMemory();
  264. }
  265. }