BasicTestsQ7.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607
  1. #include "BasicTestsQ7.h"
  2. #include <stdio.h>
  3. #include "Error.h"
  4. #define SNR_THRESHOLD 20
  5. #define ABS_ERROR_Q7 ((q7_t)2)
  6. #define ABS_ERROR_Q31 ((q31_t)(1<<15))
  7. #define ONEHALF 0x40
  8. #define GET_Q7_PTR() \
  9. const q7_t *inp1=input1.ptr(); \
  10. const q7_t *inp2=input2.ptr(); \
  11. q7_t *refp=ref.ptr(); \
  12. q7_t *outp=output.ptr();
  13. void BasicTestsQ7::test_add_q7()
  14. {
  15. GET_Q7_PTR();
  16. arm_add_q7(inp1,inp2,outp,input1.nbSamples());
  17. ASSERT_EMPTY_TAIL(output);
  18. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  19. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  20. }
  21. void BasicTestsQ7::test_sub_q7()
  22. {
  23. GET_Q7_PTR();
  24. arm_sub_q7(inp1,inp2,outp,input1.nbSamples());
  25. ASSERT_EMPTY_TAIL(output);
  26. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  27. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  28. }
  29. void BasicTestsQ7::test_mult_q7()
  30. {
  31. GET_Q7_PTR();
  32. arm_mult_q7(inp1,inp2,outp,input1.nbSamples());
  33. ASSERT_EMPTY_TAIL(output);
  34. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  35. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  36. }
  37. /*
  38. This test is run on a very short signal (3 samples).
  39. It is too short for a good SNR estimation.
  40. So, SNR is artificially decreased a little just for this test.
  41. */
  42. void BasicTestsQ7::test_mult_short_q7()
  43. {
  44. GET_Q7_PTR();
  45. arm_mult_q7(inp1,inp2,outp,input1.nbSamples());
  46. ASSERT_EMPTY_TAIL(output);
  47. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD - 1.0f);
  48. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  49. }
  50. void BasicTestsQ7::test_negate_q7()
  51. {
  52. const q7_t *inp1=input1.ptr();
  53. q7_t *refp=ref.ptr();
  54. q7_t *outp=output.ptr();
  55. arm_negate_q7(inp1,outp,input1.nbSamples());
  56. ASSERT_EMPTY_TAIL(output);
  57. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  58. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  59. }
  60. void BasicTestsQ7::test_offset_q7()
  61. {
  62. const q7_t *inp1=input1.ptr();
  63. q7_t *refp=ref.ptr();
  64. q7_t *outp=output.ptr();
  65. arm_offset_q7(inp1,this->scalar,outp,input1.nbSamples());
  66. ASSERT_EMPTY_TAIL(output);
  67. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  68. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  69. }
  70. void BasicTestsQ7::test_scale_q7()
  71. {
  72. const q7_t *inp1=input1.ptr();
  73. q7_t *refp=ref.ptr();
  74. q7_t *outp=output.ptr();
  75. arm_scale_q7(inp1,this->scalar,0,outp,input1.nbSamples());
  76. ASSERT_EMPTY_TAIL(output);
  77. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  78. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  79. }
  80. void BasicTestsQ7::test_dot_prod_q7()
  81. {
  82. q31_t r;
  83. const q7_t *inp1=input1.ptr();
  84. const q7_t *inp2=input2.ptr();
  85. q31_t *refp=dotRef.ptr();
  86. q31_t *outp=dotOutput.ptr();
  87. arm_dot_prod_q7(inp1,inp2,input1.nbSamples(),&r);
  88. outp[0] = r;
  89. ASSERT_SNR(dotOutput,dotRef,(float32_t)SNR_THRESHOLD);
  90. ASSERT_NEAR_EQ(dotOutput,dotRef,ABS_ERROR_Q31);
  91. ASSERT_EMPTY_TAIL(dotOutput);
  92. }
  93. void BasicTestsQ7::test_abs_q7()
  94. {
  95. GET_Q7_PTR();
  96. arm_abs_q7(inp1,outp,input1.nbSamples());
  97. ASSERT_EMPTY_TAIL(output);
  98. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  99. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  100. }
  101. void BasicTestsQ7::test_shift_q7()
  102. {
  103. const q7_t *inp1=input1.ptr();
  104. q7_t *refp=ref.ptr();
  105. q7_t *outp=output.ptr();
  106. arm_shift_q7(inp1,1,outp,input1.nbSamples());
  107. ASSERT_EMPTY_TAIL(output);
  108. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  109. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  110. }
  111. void BasicTestsQ7::test_and_q7()
  112. {
  113. GET_Q7_PTR();
  114. arm_and_q7(inp1,inp2,outp,input1.nbSamples());
  115. ASSERT_EMPTY_TAIL(output);
  116. ASSERT_EQ(output,ref);
  117. }
  118. void BasicTestsQ7::test_or_q7()
  119. {
  120. GET_Q7_PTR();
  121. arm_or_q7(inp1,inp2,outp,input1.nbSamples());
  122. ASSERT_EMPTY_TAIL(output);
  123. ASSERT_EQ(output,ref);
  124. }
  125. void BasicTestsQ7::test_not_q7()
  126. {
  127. GET_Q7_PTR();
  128. arm_not_q7(inp1,outp,input1.nbSamples());
  129. ASSERT_EMPTY_TAIL(output);
  130. ASSERT_EQ(output,ref);
  131. }
  132. void BasicTestsQ7::test_xor_q7()
  133. {
  134. GET_Q7_PTR();
  135. arm_xor_q7(inp1,inp2,outp,input1.nbSamples());
  136. ASSERT_EMPTY_TAIL(output);
  137. ASSERT_EQ(output,ref);
  138. }
  139. void BasicTestsQ7::setUp(Testing::testID_t id,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
  140. {
  141. Testing::nbSamples_t nb=MAX_NB_SAMPLES;
  142. this->scalar = ONEHALF;
  143. switch(id)
  144. {
  145. case BasicTestsQ7::TEST_ADD_Q7_1:
  146. nb = 15;
  147. ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
  148. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  149. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  150. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  151. break;
  152. case BasicTestsQ7::TEST_ADD_Q7_2:
  153. nb = 32;
  154. ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
  155. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  156. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  157. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  158. break;
  159. case BasicTestsQ7::TEST_ADD_Q7_3:
  160. nb = 47;
  161. ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
  162. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  163. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  164. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  165. break;
  166. case BasicTestsQ7::TEST_SUB_Q7_4:
  167. nb = 15;
  168. ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
  169. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  170. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  171. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  172. break;
  173. case BasicTestsQ7::TEST_SUB_Q7_5:
  174. nb = 32;
  175. ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
  176. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  177. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  178. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  179. break;
  180. case BasicTestsQ7::TEST_SUB_Q7_6:
  181. nb = 47;
  182. ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
  183. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  184. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  185. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  186. break;
  187. case BasicTestsQ7::TEST_MULT_SHORT_Q7_7:
  188. nb = 15;
  189. ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
  190. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  191. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  192. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  193. break;
  194. case BasicTestsQ7::TEST_MULT_Q7_8:
  195. nb = 32;
  196. ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
  197. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  198. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  199. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  200. break;
  201. case BasicTestsQ7::TEST_MULT_Q7_9:
  202. nb = 47;
  203. ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
  204. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  205. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  206. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  207. break;
  208. case BasicTestsQ7::TEST_NEGATE_Q7_10:
  209. nb = 15;
  210. ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
  211. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  212. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  213. break;
  214. case BasicTestsQ7::TEST_NEGATE_Q7_11:
  215. nb = 32;
  216. ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
  217. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  218. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  219. break;
  220. case BasicTestsQ7::TEST_NEGATE_Q7_12:
  221. nb = 47;
  222. ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
  223. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  224. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  225. break;
  226. case BasicTestsQ7::TEST_OFFSET_Q7_13:
  227. nb = 15;
  228. ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
  229. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  230. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  231. break;
  232. case BasicTestsQ7::TEST_OFFSET_Q7_14:
  233. nb = 32;
  234. ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
  235. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  236. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  237. break;
  238. case BasicTestsQ7::TEST_OFFSET_Q7_15:
  239. nb = 47;
  240. ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
  241. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  242. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  243. break;
  244. case BasicTestsQ7::TEST_SCALE_Q7_16:
  245. nb = 15;
  246. ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
  247. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  248. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  249. break;
  250. case BasicTestsQ7::TEST_SCALE_Q7_17:
  251. nb = 32;
  252. ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
  253. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  254. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  255. break;
  256. case BasicTestsQ7::TEST_SCALE_Q7_18:
  257. nb = 47;
  258. ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
  259. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  260. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  261. break;
  262. case BasicTestsQ7::TEST_DOT_PROD_Q7_19:
  263. nb = 15;
  264. dotRef.reload(BasicTestsQ7::REF_DOT_3_Q7_ID,mgr);
  265. dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  266. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  267. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  268. break;
  269. case BasicTestsQ7::TEST_DOT_PROD_Q7_20:
  270. nb = 32;
  271. dotRef.reload(BasicTestsQ7::REF_DOT_4N_Q7_ID,mgr);
  272. dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  273. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  274. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  275. break;
  276. case BasicTestsQ7::TEST_DOT_PROD_Q7_21:
  277. nb = 47;
  278. dotRef.reload(BasicTestsQ7::REF_DOT_4N1_Q7_ID,mgr);
  279. dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  280. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  281. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  282. break;
  283. case BasicTestsQ7::TEST_ABS_Q7_22:
  284. nb = 15;
  285. ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
  286. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  287. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  288. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  289. break;
  290. case BasicTestsQ7::TEST_ABS_Q7_23:
  291. nb = 32;
  292. ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
  293. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  294. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  295. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  296. break;
  297. case BasicTestsQ7::TEST_ABS_Q7_24:
  298. nb = 47;
  299. ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
  300. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  301. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  302. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  303. break;
  304. case BasicTestsQ7::TEST_ADD_Q7_25:
  305. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  306. input2.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  307. ref.reload(BasicTestsQ7::REF_POSSAT_12_Q7_ID,mgr);
  308. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  309. break;
  310. case BasicTestsQ7::TEST_ADD_Q7_26:
  311. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  312. input2.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  313. ref.reload(BasicTestsQ7::REF_NEGSAT_13_Q7_ID,mgr);
  314. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  315. break;
  316. case BasicTestsQ7::TEST_SUB_Q7_27:
  317. ref.reload(BasicTestsQ7::REF_POSSAT_14_Q7_ID,mgr);
  318. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  319. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  320. input2.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  321. break;
  322. case BasicTestsQ7::TEST_SUB_Q7_28:
  323. ref.reload(BasicTestsQ7::REF_NEGSAT_15_Q7_ID,mgr);
  324. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  325. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  326. input2.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  327. break;
  328. case BasicTestsQ7::TEST_MULT_Q7_29:
  329. ref.reload(BasicTestsQ7::REF_POSSAT_16_Q7_ID,mgr);
  330. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  331. input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  332. input2.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  333. break;
  334. case BasicTestsQ7::TEST_NEGATE_Q7_30:
  335. ref.reload(BasicTestsQ7::REF_POSSAT_17_Q7_ID,mgr);
  336. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  337. input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  338. break;
  339. case BasicTestsQ7::TEST_OFFSET_Q7_31:
  340. ref.reload(BasicTestsQ7::REF_POSSAT_18_Q7_ID,mgr);
  341. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  342. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  343. /* 0.9 */
  344. this->scalar = 0x73;
  345. break;
  346. case BasicTestsQ7::TEST_OFFSET_Q7_32:
  347. ref.reload(BasicTestsQ7::REF_NEGSAT_19_Q7_ID,mgr);
  348. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  349. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  350. /* -0.9 */
  351. this->scalar = 0x8d;
  352. break;
  353. case BasicTestsQ7::TEST_SCALE_Q7_33:
  354. ref.reload(BasicTestsQ7::REF_POSSAT_20_Q7_ID,mgr);
  355. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  356. input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  357. /* Minus max*/
  358. this->scalar = 0x80;
  359. break;
  360. case BasicTestsQ7::TEST_SHIFT_Q7_34:
  361. ref.reload(BasicTestsQ7::REF_SHIFT_21_Q7_ID,mgr);
  362. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  363. input1.reload(BasicTestsQ7::INPUTRAND_Q7_ID,mgr);
  364. break;
  365. case BasicTestsQ7::TEST_SHIFT_Q7_35:
  366. ref.reload(BasicTestsQ7::REF_SHIFT_POSSAT_22_Q7_ID,mgr);
  367. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  368. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  369. break;
  370. case BasicTestsQ7::TEST_SHIFT_Q7_36:
  371. ref.reload(BasicTestsQ7::REF_SHIFT_NEGSAT_23_Q7_ID,mgr);
  372. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  373. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  374. break;
  375. case BasicTestsQ7::TEST_AND_Q7_37:
  376. nb = 15;
  377. ref.reload(BasicTestsQ7::REF_AND_Q7_ID,mgr,nb);
  378. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  379. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  380. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  381. break;
  382. case BasicTestsQ7::TEST_AND_Q7_38:
  383. nb = 32;
  384. ref.reload(BasicTestsQ7::REF_AND_Q7_ID,mgr,nb);
  385. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  386. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  387. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  388. break;
  389. case BasicTestsQ7::TEST_AND_Q7_39:
  390. nb = 47;
  391. ref.reload(BasicTestsQ7::REF_AND_Q7_ID,mgr,nb);
  392. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  393. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  394. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  395. break;
  396. case BasicTestsQ7::TEST_OR_Q7_40:
  397. nb = 15;
  398. ref.reload(BasicTestsQ7::REF_OR_Q7_ID,mgr,nb);
  399. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  400. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  401. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  402. break;
  403. case BasicTestsQ7::TEST_OR_Q7_41:
  404. nb = 32;
  405. ref.reload(BasicTestsQ7::REF_OR_Q7_ID,mgr,nb);
  406. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  407. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  408. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  409. break;
  410. case BasicTestsQ7::TEST_OR_Q7_42:
  411. nb = 47;
  412. ref.reload(BasicTestsQ7::REF_OR_Q7_ID,mgr,nb);
  413. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  414. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  415. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  416. break;
  417. case BasicTestsQ7::TEST_NOT_Q7_43:
  418. nb = 15;
  419. ref.reload(BasicTestsQ7::REF_NOT_Q7_ID,mgr,nb);
  420. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  421. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  422. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  423. break;
  424. case BasicTestsQ7::TEST_NOT_Q7_44:
  425. nb = 32;
  426. ref.reload(BasicTestsQ7::REF_NOT_Q7_ID,mgr,nb);
  427. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  428. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  429. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  430. break;
  431. case BasicTestsQ7::TEST_NOT_Q7_45:
  432. nb = 47;
  433. ref.reload(BasicTestsQ7::REF_NOT_Q7_ID,mgr,nb);
  434. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  435. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  436. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  437. break;
  438. case BasicTestsQ7::TEST_XOR_Q7_46:
  439. nb = 15;
  440. ref.reload(BasicTestsQ7::REF_XOR_Q7_ID,mgr,nb);
  441. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  442. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  443. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  444. break;
  445. case BasicTestsQ7::TEST_XOR_Q7_47:
  446. nb = 32;
  447. ref.reload(BasicTestsQ7::REF_XOR_Q7_ID,mgr,nb);
  448. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  449. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  450. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  451. break;
  452. case BasicTestsQ7::TEST_XOR_Q7_48:
  453. nb = 47;
  454. ref.reload(BasicTestsQ7::REF_XOR_Q7_ID,mgr,nb);
  455. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  456. input1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  457. input2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  458. break;
  459. }
  460. }
  461. void BasicTestsQ7::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
  462. {
  463. switch(id)
  464. {
  465. case BasicTestsQ7::TEST_DOT_PROD_Q7_19:
  466. case BasicTestsQ7::TEST_DOT_PROD_Q7_20:
  467. case BasicTestsQ7::TEST_DOT_PROD_Q7_21:
  468. dotOutput.dump(mgr);
  469. break;
  470. default:
  471. output.dump(mgr);
  472. }
  473. }