Pattern.cpp 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  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. namespace Client {
  36. template <>
  37. float64_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  38. {
  39. return(mgr->load_f64(id,nb,maxSamples));
  40. }
  41. template <>
  42. float32_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  43. {
  44. return(mgr->load_f32(id,nb,maxSamples));
  45. }
  46. #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
  47. template <>
  48. float16_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  49. {
  50. return(mgr->load_f16(id,nb,maxSamples));
  51. }
  52. #endif
  53. template <>
  54. q63_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  55. {
  56. return(mgr->load_q63(id,nb,maxSamples));
  57. }
  58. template <>
  59. q31_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  60. {
  61. return(mgr->load_q31(id,nb,maxSamples));
  62. }
  63. template <>
  64. q15_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  65. {
  66. return(mgr->load_q15(id,nb,maxSamples));
  67. }
  68. template <>
  69. q7_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  70. {
  71. return(mgr->load_q7(id,nb,maxSamples));
  72. }
  73. template <>
  74. uint64_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  75. {
  76. return(mgr->load_u64(id,nb,maxSamples));
  77. }
  78. template <>
  79. uint32_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  80. {
  81. return(mgr->load_u32(id,nb,maxSamples));
  82. }
  83. template <>
  84. uint16_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  85. {
  86. return(mgr->load_u16(id,nb,maxSamples));
  87. }
  88. template <>
  89. uint8_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  90. {
  91. return(mgr->load_u8(id,nb,maxSamples));
  92. }
  93. template <>
  94. float64_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  95. {
  96. return(mgr->local_f64(id));
  97. }
  98. template <>
  99. float32_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  100. {
  101. return(mgr->local_f32(id));
  102. }
  103. #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
  104. template <>
  105. float16_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  106. {
  107. return(mgr->local_f16(id));
  108. }
  109. #endif
  110. template <>
  111. q63_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  112. {
  113. return(mgr->local_q63(id));
  114. }
  115. template <>
  116. q31_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  117. {
  118. return(mgr->local_q31(id));
  119. }
  120. template <>
  121. q15_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  122. {
  123. return(mgr->local_q15(id));
  124. }
  125. template <>
  126. q7_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  127. {
  128. return(mgr->local_q7(id));
  129. }
  130. template <>
  131. uint64_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  132. {
  133. return(mgr->local_u64(id));
  134. }
  135. template <>
  136. uint32_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  137. {
  138. return(mgr->local_u32(id));
  139. }
  140. template <>
  141. uint16_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  142. {
  143. return(mgr->local_u16(id));
  144. }
  145. template <>
  146. uint8_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  147. {
  148. return(mgr->local_u8(id));
  149. }
  150. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float64_t* data,PatternMgr *mgr)
  151. {
  152. mgr->dumpPattern_f64(id,nbSamples,data);
  153. }
  154. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float32_t* data,PatternMgr *mgr)
  155. {
  156. mgr->dumpPattern_f32(id,nbSamples,data);
  157. }
  158. #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
  159. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float16_t* data,PatternMgr *mgr)
  160. {
  161. mgr->dumpPattern_f16(id,nbSamples,data);
  162. }
  163. #endif
  164. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q63_t* data,PatternMgr *mgr)
  165. {
  166. mgr->dumpPattern_q63(id,nbSamples,data);
  167. }
  168. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q31_t* data,PatternMgr *mgr)
  169. {
  170. mgr->dumpPattern_q31(id,nbSamples,data);
  171. }
  172. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q15_t* data,PatternMgr *mgr)
  173. {
  174. mgr->dumpPattern_q15(id,nbSamples,data);
  175. }
  176. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q7_t* data,PatternMgr *mgr)
  177. {
  178. mgr->dumpPattern_q7(id,nbSamples,data);
  179. }
  180. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint64_t* data,PatternMgr *mgr)
  181. {
  182. mgr->dumpPattern_u64(id,nbSamples,data);
  183. }
  184. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint32_t* data,PatternMgr *mgr)
  185. {
  186. mgr->dumpPattern_u32(id,nbSamples,data);
  187. }
  188. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint16_t* data,PatternMgr *mgr)
  189. {
  190. mgr->dumpPattern_u16(id,nbSamples,data);
  191. }
  192. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint8_t* data,PatternMgr *mgr)
  193. {
  194. mgr->dumpPattern_u8(id,nbSamples,data);
  195. }
  196. }