BasicTestsQ7.cpp 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683
  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 *outp=output.ptr();
  12. #define GET_LOGICAL_UINT8_PTR() \
  13. const uint8_t *inp1=inputLogical1.ptr(); \
  14. const uint8_t *inp2=inputLogical2.ptr(); \
  15. uint8_t *outp=outputLogical.ptr();
  16. void BasicTestsQ7::test_add_q7()
  17. {
  18. GET_Q7_PTR();
  19. arm_add_q7(inp1,inp2,outp,input1.nbSamples());
  20. ASSERT_EMPTY_TAIL(output);
  21. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  22. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  23. }
  24. void BasicTestsQ7::test_sub_q7()
  25. {
  26. GET_Q7_PTR();
  27. arm_sub_q7(inp1,inp2,outp,input1.nbSamples());
  28. ASSERT_EMPTY_TAIL(output);
  29. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  30. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  31. }
  32. void BasicTestsQ7::test_mult_q7()
  33. {
  34. GET_Q7_PTR();
  35. arm_mult_q7(inp1,inp2,outp,input1.nbSamples());
  36. ASSERT_EMPTY_TAIL(output);
  37. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  38. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  39. }
  40. /*
  41. This test is run on a very short signal (3 samples).
  42. It is too short for a good SNR estimation.
  43. So, SNR is artificially decreased a little just for this test.
  44. */
  45. void BasicTestsQ7::test_mult_short_q7()
  46. {
  47. GET_Q7_PTR();
  48. arm_mult_q7(inp1,inp2,outp,input1.nbSamples());
  49. ASSERT_EMPTY_TAIL(output);
  50. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD - 1.0f);
  51. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  52. }
  53. void BasicTestsQ7::test_negate_q7()
  54. {
  55. const q7_t *inp1=input1.ptr();
  56. q7_t *outp=output.ptr();
  57. arm_negate_q7(inp1,outp,input1.nbSamples());
  58. ASSERT_EMPTY_TAIL(output);
  59. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  60. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  61. }
  62. void BasicTestsQ7::test_offset_q7()
  63. {
  64. const q7_t *inp1=input1.ptr();
  65. q7_t *outp=output.ptr();
  66. arm_offset_q7(inp1,this->scalar,outp,input1.nbSamples());
  67. ASSERT_EMPTY_TAIL(output);
  68. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  69. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  70. }
  71. void BasicTestsQ7::test_scale_q7()
  72. {
  73. const q7_t *inp1=input1.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 *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. (void)inp2;
  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 *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_u8()
  111. {
  112. GET_LOGICAL_UINT8_PTR();
  113. arm_and_u8(inp1,inp2,outp,inputLogical1.nbSamples());
  114. ASSERT_EMPTY_TAIL(outputLogical);
  115. ASSERT_EQ(outputLogical, refLogical);
  116. }
  117. void BasicTestsQ7::test_or_u8()
  118. {
  119. GET_LOGICAL_UINT8_PTR();
  120. arm_or_u8(inp1,inp2,outp,inputLogical1.nbSamples());
  121. ASSERT_EMPTY_TAIL(outputLogical);
  122. ASSERT_EQ(outputLogical, refLogical);
  123. }
  124. void BasicTestsQ7::test_not_u8()
  125. {
  126. GET_LOGICAL_UINT8_PTR();
  127. (void)inp2;
  128. arm_not_u8(inp1,outp,inputLogical1.nbSamples());
  129. ASSERT_EMPTY_TAIL(outputLogical);
  130. ASSERT_EQ(outputLogical, refLogical);
  131. }
  132. void BasicTestsQ7::test_xor_u8()
  133. {
  134. GET_LOGICAL_UINT8_PTR();
  135. arm_xor_u8(inp1,inp2,outp,inputLogical1.nbSamples());
  136. ASSERT_EMPTY_TAIL(outputLogical);
  137. ASSERT_EQ(outputLogical, refLogical);
  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. (void)params;
  144. switch(id)
  145. {
  146. case BasicTestsQ7::TEST_ADD_Q7_1:
  147. nb = 15;
  148. ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
  149. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  150. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  151. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  152. break;
  153. case BasicTestsQ7::TEST_ADD_Q7_2:
  154. nb = 32;
  155. ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
  156. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  157. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  158. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  159. break;
  160. case BasicTestsQ7::TEST_ADD_Q7_3:
  161. nb = 47;
  162. ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
  163. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  164. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  165. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  166. break;
  167. case BasicTestsQ7::TEST_SUB_Q7_4:
  168. nb = 15;
  169. ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
  170. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  171. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  172. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  173. break;
  174. case BasicTestsQ7::TEST_SUB_Q7_5:
  175. nb = 32;
  176. ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
  177. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  178. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  179. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  180. break;
  181. case BasicTestsQ7::TEST_SUB_Q7_6:
  182. nb = 47;
  183. ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
  184. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  185. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  186. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  187. break;
  188. case BasicTestsQ7::TEST_MULT_SHORT_Q7_7:
  189. nb = 15;
  190. ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
  191. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  192. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  193. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  194. break;
  195. case BasicTestsQ7::TEST_MULT_Q7_8:
  196. nb = 32;
  197. ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
  198. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  199. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  200. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  201. break;
  202. case BasicTestsQ7::TEST_MULT_Q7_9:
  203. nb = 47;
  204. ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
  205. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  206. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  207. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  208. break;
  209. case BasicTestsQ7::TEST_NEGATE_Q7_10:
  210. nb = 15;
  211. ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
  212. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  213. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  214. break;
  215. case BasicTestsQ7::TEST_NEGATE_Q7_11:
  216. nb = 32;
  217. ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
  218. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  219. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  220. break;
  221. case BasicTestsQ7::TEST_NEGATE_Q7_12:
  222. nb = 47;
  223. ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
  224. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  225. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  226. break;
  227. case BasicTestsQ7::TEST_OFFSET_Q7_13:
  228. nb = 15;
  229. ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
  230. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  231. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  232. break;
  233. case BasicTestsQ7::TEST_OFFSET_Q7_14:
  234. nb = 32;
  235. ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
  236. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  237. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  238. break;
  239. case BasicTestsQ7::TEST_OFFSET_Q7_15:
  240. nb = 47;
  241. ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
  242. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  243. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  244. break;
  245. case BasicTestsQ7::TEST_SCALE_Q7_16:
  246. nb = 15;
  247. ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
  248. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  249. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  250. break;
  251. case BasicTestsQ7::TEST_SCALE_Q7_17:
  252. nb = 32;
  253. ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
  254. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  255. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  256. break;
  257. case BasicTestsQ7::TEST_SCALE_Q7_18:
  258. nb = 47;
  259. ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
  260. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  261. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  262. break;
  263. case BasicTestsQ7::TEST_DOT_PROD_Q7_19:
  264. nb = 15;
  265. dotRef.reload(BasicTestsQ7::REF_DOT_3_Q7_ID,mgr);
  266. dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  267. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  268. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  269. break;
  270. case BasicTestsQ7::TEST_DOT_PROD_Q7_20:
  271. nb = 32;
  272. dotRef.reload(BasicTestsQ7::REF_DOT_4N_Q7_ID,mgr);
  273. dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  274. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  275. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  276. break;
  277. case BasicTestsQ7::TEST_DOT_PROD_Q7_21:
  278. nb = 47;
  279. dotRef.reload(BasicTestsQ7::REF_DOT_4N1_Q7_ID,mgr);
  280. dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  281. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  282. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  283. break;
  284. case BasicTestsQ7::TEST_ABS_Q7_22:
  285. nb = 15;
  286. ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
  287. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  288. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  289. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  290. break;
  291. case BasicTestsQ7::TEST_ABS_Q7_23:
  292. nb = 32;
  293. ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
  294. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  295. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  296. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  297. break;
  298. case BasicTestsQ7::TEST_ABS_Q7_24:
  299. nb = 47;
  300. ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
  301. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  302. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  303. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  304. break;
  305. case BasicTestsQ7::TEST_ADD_Q7_25:
  306. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  307. input2.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  308. ref.reload(BasicTestsQ7::REF_POSSAT_12_Q7_ID,mgr);
  309. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  310. break;
  311. case BasicTestsQ7::TEST_ADD_Q7_26:
  312. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  313. input2.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  314. ref.reload(BasicTestsQ7::REF_NEGSAT_13_Q7_ID,mgr);
  315. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  316. break;
  317. case BasicTestsQ7::TEST_SUB_Q7_27:
  318. ref.reload(BasicTestsQ7::REF_POSSAT_14_Q7_ID,mgr);
  319. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  320. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  321. input2.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  322. break;
  323. case BasicTestsQ7::TEST_SUB_Q7_28:
  324. ref.reload(BasicTestsQ7::REF_NEGSAT_15_Q7_ID,mgr);
  325. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  326. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  327. input2.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  328. break;
  329. case BasicTestsQ7::TEST_MULT_Q7_29:
  330. ref.reload(BasicTestsQ7::REF_POSSAT_16_Q7_ID,mgr);
  331. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  332. input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  333. input2.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  334. break;
  335. case BasicTestsQ7::TEST_NEGATE_Q7_30:
  336. ref.reload(BasicTestsQ7::REF_POSSAT_17_Q7_ID,mgr);
  337. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  338. input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  339. break;
  340. case BasicTestsQ7::TEST_OFFSET_Q7_31:
  341. ref.reload(BasicTestsQ7::REF_POSSAT_18_Q7_ID,mgr);
  342. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  343. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  344. /* 0.9 */
  345. this->scalar = 0x73;
  346. break;
  347. case BasicTestsQ7::TEST_OFFSET_Q7_32:
  348. ref.reload(BasicTestsQ7::REF_NEGSAT_19_Q7_ID,mgr);
  349. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  350. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  351. /* -0.9 */
  352. this->scalar = 0x8d;
  353. break;
  354. case BasicTestsQ7::TEST_SCALE_Q7_33:
  355. ref.reload(BasicTestsQ7::REF_POSSAT_20_Q7_ID,mgr);
  356. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  357. input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  358. /* Minus max*/
  359. this->scalar = 0x80;
  360. break;
  361. case BasicTestsQ7::TEST_SHIFT_Q7_34:
  362. ref.reload(BasicTestsQ7::REF_SHIFT_21_Q7_ID,mgr);
  363. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  364. input1.reload(BasicTestsQ7::INPUTRAND_Q7_ID,mgr);
  365. break;
  366. case BasicTestsQ7::TEST_SHIFT_Q7_35:
  367. ref.reload(BasicTestsQ7::REF_SHIFT_POSSAT_22_Q7_ID,mgr);
  368. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  369. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  370. break;
  371. case BasicTestsQ7::TEST_SHIFT_Q7_36:
  372. ref.reload(BasicTestsQ7::REF_SHIFT_NEGSAT_23_Q7_ID,mgr);
  373. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  374. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  375. break;
  376. case BasicTestsQ7::TEST_AND_U8_37:
  377. nb = 15;
  378. refLogical.reload(BasicTestsQ7::REF_AND_Q7_ID,mgr,nb);
  379. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  380. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  381. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  382. break;
  383. case BasicTestsQ7::TEST_AND_U8_38:
  384. nb = 32;
  385. refLogical.reload(BasicTestsQ7::REF_AND_Q7_ID,mgr,nb);
  386. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  387. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  388. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  389. break;
  390. case BasicTestsQ7::TEST_AND_U8_39:
  391. nb = 47;
  392. refLogical.reload(BasicTestsQ7::REF_AND_Q7_ID,mgr,nb);
  393. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  394. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  395. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  396. break;
  397. case BasicTestsQ7::TEST_OR_U8_40:
  398. nb = 15;
  399. refLogical.reload(BasicTestsQ7::REF_OR_Q7_ID,mgr,nb);
  400. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  401. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  402. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  403. break;
  404. case BasicTestsQ7::TEST_OR_U8_41:
  405. nb = 32;
  406. refLogical.reload(BasicTestsQ7::REF_OR_Q7_ID,mgr,nb);
  407. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  408. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  409. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  410. break;
  411. case BasicTestsQ7::TEST_OR_U8_42:
  412. nb = 47;
  413. refLogical.reload(BasicTestsQ7::REF_OR_Q7_ID,mgr,nb);
  414. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  415. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  416. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  417. break;
  418. case BasicTestsQ7::TEST_NOT_U8_43:
  419. nb = 15;
  420. refLogical.reload(BasicTestsQ7::REF_NOT_Q7_ID,mgr,nb);
  421. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  422. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  423. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  424. break;
  425. case BasicTestsQ7::TEST_NOT_U8_44:
  426. nb = 32;
  427. refLogical.reload(BasicTestsQ7::REF_NOT_Q7_ID,mgr,nb);
  428. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  429. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  430. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  431. break;
  432. case BasicTestsQ7::TEST_NOT_U8_45:
  433. nb = 47;
  434. refLogical.reload(BasicTestsQ7::REF_NOT_Q7_ID,mgr,nb);
  435. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  436. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  437. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  438. break;
  439. case BasicTestsQ7::TEST_XOR_U8_46:
  440. nb = 15;
  441. refLogical.reload(BasicTestsQ7::REF_XOR_Q7_ID,mgr,nb);
  442. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  443. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  444. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  445. break;
  446. case BasicTestsQ7::TEST_XOR_U8_47:
  447. nb = 32;
  448. refLogical.reload(BasicTestsQ7::REF_XOR_Q7_ID,mgr,nb);
  449. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  450. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  451. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  452. break;
  453. case BasicTestsQ7::TEST_XOR_U8_48:
  454. nb = 47;
  455. refLogical.reload(BasicTestsQ7::REF_XOR_Q7_ID,mgr,nb);
  456. outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  457. inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
  458. inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
  459. break;
  460. case BasicTestsQ7::TEST_ADD_Q7_49:
  461. ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
  462. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  463. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  464. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  465. break;
  466. case BasicTestsQ7::TEST_SUB_Q7_50:
  467. ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
  468. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  469. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  470. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  471. break;
  472. case BasicTestsQ7::TEST_MULT_Q7_51:
  473. ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
  474. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  475. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  476. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  477. break;
  478. case BasicTestsQ7::TEST_NEGATE_Q7_52:
  479. ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
  480. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  481. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  482. break;
  483. case BasicTestsQ7::TEST_OFFSET_Q7_53:
  484. ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
  485. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  486. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  487. break;
  488. case BasicTestsQ7::TEST_SCALE_Q7_54:
  489. ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
  490. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  491. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  492. break;
  493. case BasicTestsQ7::TEST_DOT_PROD_Q7_55:
  494. dotRef.reload(BasicTestsQ7::REF_DOT_LONG_Q7_ID,mgr);
  495. dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  496. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  497. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  498. break;
  499. case BasicTestsQ7::TEST_ABS_Q7_56:
  500. ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
  501. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
  502. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  503. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  504. break;
  505. }
  506. }
  507. void BasicTestsQ7::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
  508. {
  509. switch(id)
  510. {
  511. case BasicTestsQ7::TEST_DOT_PROD_Q7_19:
  512. case BasicTestsQ7::TEST_DOT_PROD_Q7_20:
  513. case BasicTestsQ7::TEST_DOT_PROD_Q7_21:
  514. case BasicTestsQ7::TEST_DOT_PROD_Q7_55:
  515. dotOutput.dump(mgr);
  516. break;
  517. case BasicTestsQ7::TEST_AND_U8_37:
  518. case BasicTestsQ7::TEST_AND_U8_38:
  519. case BasicTestsQ7::TEST_AND_U8_39:
  520. case BasicTestsQ7::TEST_OR_U8_40:
  521. case BasicTestsQ7::TEST_OR_U8_41:
  522. case BasicTestsQ7::TEST_OR_U8_42:
  523. case BasicTestsQ7::TEST_NOT_U8_43:
  524. case BasicTestsQ7::TEST_NOT_U8_44:
  525. case BasicTestsQ7::TEST_NOT_U8_45:
  526. case BasicTestsQ7::TEST_XOR_U8_46:
  527. case BasicTestsQ7::TEST_XOR_U8_47:
  528. case BasicTestsQ7::TEST_XOR_U8_48:
  529. outputLogical.dump(mgr);
  530. break;
  531. default:
  532. output.dump(mgr);
  533. }
  534. }