BasicTestsQ7.cpp 20 KB

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