Pattern.cpp 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  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. uint32_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  75. {
  76. return(mgr->load_u32(id,nb,maxSamples));
  77. }
  78. template <>
  79. uint16_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  80. {
  81. return(mgr->load_u16(id,nb,maxSamples));
  82. }
  83. template <>
  84. uint8_t *loadPattern(Testing::PatternID_t id, Client::PatternMgr *mgr,Testing::nbSamples_t &nb, Testing::nbSamples_t maxSamples)
  85. {
  86. return(mgr->load_u8(id,nb,maxSamples));
  87. }
  88. template <>
  89. float64_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  90. {
  91. return(mgr->local_f64(id));
  92. }
  93. template <>
  94. float32_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  95. {
  96. return(mgr->local_f32(id));
  97. }
  98. #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
  99. template <>
  100. float16_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  101. {
  102. return(mgr->local_f16(id));
  103. }
  104. #endif
  105. template <>
  106. q63_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  107. {
  108. return(mgr->local_q63(id));
  109. }
  110. template <>
  111. q31_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  112. {
  113. return(mgr->local_q31(id));
  114. }
  115. template <>
  116. q15_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  117. {
  118. return(mgr->local_q15(id));
  119. }
  120. template <>
  121. q7_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  122. {
  123. return(mgr->local_q7(id));
  124. }
  125. template <>
  126. uint32_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  127. {
  128. return(mgr->local_u32(id));
  129. }
  130. template <>
  131. uint16_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  132. {
  133. return(mgr->local_u16(id));
  134. }
  135. template <>
  136. uint8_t *localPattern(Testing::PatternID_t id, Client::PatternMgr *mgr)
  137. {
  138. return(mgr->local_u8(id));
  139. }
  140. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float64_t* data,PatternMgr *mgr)
  141. {
  142. mgr->dumpPattern_f64(id,nbSamples,data);
  143. }
  144. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float32_t* data,PatternMgr *mgr)
  145. {
  146. mgr->dumpPattern_f32(id,nbSamples,data);
  147. }
  148. #if !defined( __CC_ARM ) && defined(ARM_FLOAT16_SUPPORTED)
  149. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float16_t* data,PatternMgr *mgr)
  150. {
  151. mgr->dumpPattern_f16(id,nbSamples,data);
  152. }
  153. #endif
  154. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q63_t* data,PatternMgr *mgr)
  155. {
  156. mgr->dumpPattern_q63(id,nbSamples,data);
  157. }
  158. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q31_t* data,PatternMgr *mgr)
  159. {
  160. mgr->dumpPattern_q31(id,nbSamples,data);
  161. }
  162. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q15_t* data,PatternMgr *mgr)
  163. {
  164. mgr->dumpPattern_q15(id,nbSamples,data);
  165. }
  166. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q7_t* data,PatternMgr *mgr)
  167. {
  168. mgr->dumpPattern_q7(id,nbSamples,data);
  169. }
  170. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint32_t* data,PatternMgr *mgr)
  171. {
  172. mgr->dumpPattern_u32(id,nbSamples,data);
  173. }
  174. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint16_t* data,PatternMgr *mgr)
  175. {
  176. mgr->dumpPattern_u16(id,nbSamples,data);
  177. }
  178. void dumpPattern(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint8_t* data,PatternMgr *mgr)
  179. {
  180. mgr->dumpPattern_u8(id,nbSamples,data);
  181. }
  182. }