BasicTestsQ7.cpp 24 KB

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