BasicTestsQ15.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  1. #include "BasicTestsQ15.h"
  2. #include <stdio.h>
  3. #include "Error.h"
  4. #define SNR_THRESHOLD 70
  5. /*
  6. Reference patterns are generated with
  7. a double precision computation.
  8. */
  9. #define ABS_ERROR_Q15 ((q15_t)2)
  10. #define ABS_ERROR_Q63 ((q63_t)(1<<16))
  11. #define MULT_SNR_THRESHOLD 60
  12. #define ONEHALF 0x4000
  13. #define GET_Q15_PTR() \
  14. const q15_t *inp1=input1.ptr(); \
  15. const q15_t *inp2=input2.ptr(); \
  16. q15_t *refp=ref.ptr(); \
  17. q15_t *outp=output.ptr();
  18. void BasicTestsQ15::test_add_q15()
  19. {
  20. GET_Q15_PTR();
  21. arm_add_q15(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_Q15);
  25. }
  26. void BasicTestsQ15::test_sub_q15()
  27. {
  28. GET_Q15_PTR();
  29. arm_sub_q15(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_Q15);
  33. }
  34. void BasicTestsQ15::test_mult_q15()
  35. {
  36. GET_Q15_PTR();
  37. arm_mult_q15(inp1,inp2,outp,input1.nbSamples());
  38. ASSERT_EMPTY_TAIL(output);
  39. ASSERT_SNR(output,ref,(float32_t)MULT_SNR_THRESHOLD);
  40. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  41. }
  42. void BasicTestsQ15::test_negate_q15()
  43. {
  44. const q15_t *inp1=input1.ptr();
  45. q15_t *refp=ref.ptr();
  46. q15_t *outp=output.ptr();
  47. arm_negate_q15(inp1,outp,input1.nbSamples());
  48. ASSERT_EMPTY_TAIL(output);
  49. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  50. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  51. }
  52. void BasicTestsQ15::test_offset_q15()
  53. {
  54. const q15_t *inp1=input1.ptr();
  55. q15_t *refp=ref.ptr();
  56. q15_t *outp=output.ptr();
  57. arm_offset_q15(inp1,this->scalar,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_Q15);
  61. }
  62. void BasicTestsQ15::test_scale_q15()
  63. {
  64. const q15_t *inp1=input1.ptr();
  65. q15_t *refp=ref.ptr();
  66. q15_t *outp=output.ptr();
  67. arm_scale_q15(inp1,this->scalar,0,outp,input1.nbSamples());
  68. ASSERT_EMPTY_TAIL(output);
  69. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  70. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  71. }
  72. void BasicTestsQ15::test_dot_prod_q15()
  73. {
  74. q63_t r;
  75. const q15_t *inp1=input1.ptr();
  76. const q15_t *inp2=input2.ptr();
  77. q63_t *refp=dotRef.ptr();
  78. q63_t *outp=dotOutput.ptr();
  79. arm_dot_prod_q15(inp1,inp2,input1.nbSamples(),&r);
  80. outp[0] = r;
  81. ASSERT_SNR(dotOutput,dotRef,(float32_t)SNR_THRESHOLD);
  82. ASSERT_NEAR_EQ(dotOutput,dotRef,ABS_ERROR_Q63);
  83. ASSERT_EMPTY_TAIL(dotOutput);
  84. }
  85. void BasicTestsQ15::test_abs_q15()
  86. {
  87. GET_Q15_PTR();
  88. arm_abs_q15(inp1,outp,input1.nbSamples());
  89. ASSERT_EMPTY_TAIL(output);
  90. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  91. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  92. }
  93. void BasicTestsQ15::test_shift_q15()
  94. {
  95. const q15_t *inp1=input1.ptr();
  96. q15_t *refp=ref.ptr();
  97. q15_t *outp=output.ptr();
  98. arm_shift_q15(inp1,1,outp,input1.nbSamples());
  99. ASSERT_EMPTY_TAIL(output);
  100. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  101. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  102. }
  103. void BasicTestsQ15::test_and_q15()
  104. {
  105. GET_Q15_PTR();
  106. arm_and_q15(inp1,inp2,outp,input1.nbSamples());
  107. ASSERT_EMPTY_TAIL(output);
  108. ASSERT_EQ(output,ref);
  109. }
  110. void BasicTestsQ15::test_or_q15()
  111. {
  112. GET_Q15_PTR();
  113. arm_or_q15(inp1,inp2,outp,input1.nbSamples());
  114. ASSERT_EMPTY_TAIL(output);
  115. ASSERT_EQ(output,ref);
  116. }
  117. void BasicTestsQ15::test_not_q15()
  118. {
  119. GET_Q15_PTR();
  120. arm_not_q15(inp1,outp,input1.nbSamples());
  121. ASSERT_EMPTY_TAIL(output);
  122. ASSERT_EQ(output,ref);
  123. }
  124. void BasicTestsQ15::test_xor_q15()
  125. {
  126. GET_Q15_PTR();
  127. arm_xor_q15(inp1,inp2,outp,input1.nbSamples());
  128. ASSERT_EMPTY_TAIL(output);
  129. ASSERT_EQ(output,ref);
  130. }
  131. void BasicTestsQ15::setUp(Testing::testID_t id,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
  132. {
  133. Testing::nbSamples_t nb=MAX_NB_SAMPLES;
  134. this->scalar = ONEHALF;
  135. switch(id)
  136. {
  137. case BasicTestsQ15::TEST_ADD_Q15_1:
  138. nb = 7;
  139. ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
  140. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  141. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  142. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  143. break;
  144. case BasicTestsQ15::TEST_ADD_Q15_2:
  145. nb = 16;
  146. ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
  147. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  148. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  149. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  150. break;
  151. case BasicTestsQ15::TEST_ADD_Q15_3:
  152. nb = 23;
  153. ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
  154. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  155. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  156. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  157. break;
  158. case BasicTestsQ15::TEST_SUB_Q15_4:
  159. nb = 7;
  160. ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
  161. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  162. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  163. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  164. break;
  165. case BasicTestsQ15::TEST_SUB_Q15_5:
  166. nb = 16;
  167. ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
  168. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  169. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  170. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  171. break;
  172. case BasicTestsQ15::TEST_SUB_Q15_6:
  173. nb = 23;
  174. ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
  175. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  176. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  177. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  178. break;
  179. case BasicTestsQ15::TEST_MULT_Q15_7:
  180. nb = 7;
  181. ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
  182. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  183. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  184. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  185. break;
  186. case BasicTestsQ15::TEST_MULT_Q15_8:
  187. nb = 16;
  188. ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
  189. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  190. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  191. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  192. break;
  193. case BasicTestsQ15::TEST_MULT_Q15_9:
  194. nb = 23;
  195. ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
  196. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  197. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  198. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  199. break;
  200. case BasicTestsQ15::TEST_NEGATE_Q15_10:
  201. nb = 7;
  202. ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
  203. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  204. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  205. break;
  206. case BasicTestsQ15::TEST_NEGATE_Q15_11:
  207. nb = 16;
  208. ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
  209. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  210. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  211. break;
  212. case BasicTestsQ15::TEST_NEGATE_Q15_12:
  213. nb = 23;
  214. ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
  215. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  216. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  217. break;
  218. case BasicTestsQ15::TEST_OFFSET_Q15_13:
  219. nb = 7;
  220. ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
  221. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  222. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  223. break;
  224. case BasicTestsQ15::TEST_OFFSET_Q15_14:
  225. nb = 16;
  226. ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
  227. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  228. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  229. break;
  230. case BasicTestsQ15::TEST_OFFSET_Q15_15:
  231. nb = 23;
  232. ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
  233. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  234. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  235. break;
  236. case BasicTestsQ15::TEST_SCALE_Q15_16:
  237. nb = 7;
  238. ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
  239. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  240. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  241. break;
  242. case BasicTestsQ15::TEST_SCALE_Q15_17:
  243. nb = 16;
  244. ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
  245. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  246. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  247. break;
  248. case BasicTestsQ15::TEST_SCALE_Q15_18:
  249. nb = 23;
  250. ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
  251. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  252. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  253. break;
  254. case BasicTestsQ15::TEST_DOT_PROD_Q15_19:
  255. nb = 7;
  256. dotRef.reload(BasicTestsQ15::REF_DOT_3_Q15_ID,mgr);
  257. dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  258. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  259. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  260. break;
  261. case BasicTestsQ15::TEST_DOT_PROD_Q15_20:
  262. nb = 16;
  263. dotRef.reload(BasicTestsQ15::REF_DOT_4N_Q15_ID,mgr);
  264. dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  265. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  266. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  267. break;
  268. case BasicTestsQ15::TEST_DOT_PROD_Q15_21:
  269. nb = 23;
  270. dotRef.reload(BasicTestsQ15::REF_DOT_4N1_Q15_ID,mgr);
  271. dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  272. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  273. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  274. break;
  275. case BasicTestsQ15::TEST_ABS_Q15_22:
  276. nb = 7;
  277. ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
  278. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  279. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  280. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  281. break;
  282. case BasicTestsQ15::TEST_ABS_Q15_23:
  283. nb = 16;
  284. ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
  285. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  286. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  287. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  288. break;
  289. case BasicTestsQ15::TEST_ABS_Q15_24:
  290. nb = 23;
  291. ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
  292. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  293. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  294. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  295. break;
  296. case BasicTestsQ15::TEST_ADD_Q15_25:
  297. input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  298. input2.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  299. ref.reload(BasicTestsQ15::REF_POSSAT_12_Q15_ID,mgr);
  300. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  301. break;
  302. case BasicTestsQ15::TEST_ADD_Q15_26:
  303. input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  304. input2.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  305. ref.reload(BasicTestsQ15::REF_NEGSAT_13_Q15_ID,mgr);
  306. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  307. break;
  308. case BasicTestsQ15::TEST_SUB_Q15_27:
  309. ref.reload(BasicTestsQ15::REF_POSSAT_14_Q15_ID,mgr);
  310. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  311. input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  312. input2.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  313. break;
  314. case BasicTestsQ15::TEST_SUB_Q15_28:
  315. ref.reload(BasicTestsQ15::REF_NEGSAT_15_Q15_ID,mgr);
  316. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  317. input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  318. input2.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  319. break;
  320. case BasicTestsQ15::TEST_MULT_Q15_29:
  321. ref.reload(BasicTestsQ15::REF_POSSAT_16_Q15_ID,mgr);
  322. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  323. input1.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
  324. input2.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
  325. break;
  326. case BasicTestsQ15::TEST_NEGATE_Q15_30:
  327. ref.reload(BasicTestsQ15::REF_POSSAT_17_Q15_ID,mgr);
  328. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  329. input1.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
  330. break;
  331. case BasicTestsQ15::TEST_OFFSET_Q15_31:
  332. ref.reload(BasicTestsQ15::REF_POSSAT_18_Q15_ID,mgr);
  333. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  334. input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  335. /* 0.9 */
  336. this->scalar = 0x7333;
  337. break;
  338. case BasicTestsQ15::TEST_OFFSET_Q15_32:
  339. ref.reload(BasicTestsQ15::REF_NEGSAT_19_Q15_ID,mgr);
  340. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  341. input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  342. /* -0.9 */
  343. this->scalar = 0x8ccd;
  344. break;
  345. case BasicTestsQ15::TEST_SCALE_Q15_33:
  346. ref.reload(BasicTestsQ15::REF_POSSAT_20_Q15_ID,mgr);
  347. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  348. input1.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
  349. /* Minus max*/
  350. this->scalar = 0x8000;
  351. break;
  352. case BasicTestsQ15::TEST_SHIFT_Q15_34:
  353. ref.reload(BasicTestsQ15::REF_SHIFT_21_Q15_ID,mgr);
  354. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  355. input1.reload(BasicTestsQ15::INPUTRAND_Q15_ID,mgr);
  356. break;
  357. case BasicTestsQ15::TEST_SHIFT_Q15_35:
  358. ref.reload(BasicTestsQ15::REF_SHIFT_POSSAT_22_Q15_ID,mgr);
  359. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  360. input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  361. break;
  362. case BasicTestsQ15::TEST_SHIFT_Q15_36:
  363. ref.reload(BasicTestsQ15::REF_SHIFT_NEGSAT_23_Q15_ID,mgr);
  364. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  365. input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  366. break;
  367. case BasicTestsQ15::TEST_AND_Q15_37:
  368. nb = 7;
  369. ref.reload(BasicTestsQ15::REF_AND_Q15_ID,mgr,nb);
  370. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  371. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  372. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  373. break;
  374. case BasicTestsQ15::TEST_AND_Q15_38:
  375. nb = 16;
  376. ref.reload(BasicTestsQ15::REF_AND_Q15_ID,mgr,nb);
  377. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  378. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  379. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  380. break;
  381. case BasicTestsQ15::TEST_AND_Q15_39:
  382. nb = 23;
  383. ref.reload(BasicTestsQ15::REF_AND_Q15_ID,mgr,nb);
  384. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  385. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  386. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  387. break;
  388. case BasicTestsQ15::TEST_OR_Q15_40:
  389. nb = 7;
  390. ref.reload(BasicTestsQ15::REF_OR_Q15_ID,mgr,nb);
  391. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  392. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  393. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  394. break;
  395. case BasicTestsQ15::TEST_OR_Q15_41:
  396. nb = 16;
  397. ref.reload(BasicTestsQ15::REF_OR_Q15_ID,mgr,nb);
  398. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  399. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  400. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  401. break;
  402. case BasicTestsQ15::TEST_OR_Q15_42:
  403. nb = 23;
  404. ref.reload(BasicTestsQ15::REF_OR_Q15_ID,mgr,nb);
  405. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  406. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  407. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  408. break;
  409. case BasicTestsQ15::TEST_NOT_Q15_43:
  410. nb = 7;
  411. ref.reload(BasicTestsQ15::REF_NOT_Q15_ID,mgr,nb);
  412. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  413. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  414. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  415. break;
  416. case BasicTestsQ15::TEST_NOT_Q15_44:
  417. nb = 16;
  418. ref.reload(BasicTestsQ15::REF_NOT_Q15_ID,mgr,nb);
  419. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  420. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  421. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  422. break;
  423. case BasicTestsQ15::TEST_NOT_Q15_45:
  424. nb = 23;
  425. ref.reload(BasicTestsQ15::REF_NOT_Q15_ID,mgr,nb);
  426. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  427. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  428. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  429. break;
  430. case BasicTestsQ15::TEST_XOR_Q15_46:
  431. nb = 7;
  432. ref.reload(BasicTestsQ15::REF_XOR_Q15_ID,mgr,nb);
  433. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  434. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  435. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  436. break;
  437. case BasicTestsQ15::TEST_XOR_Q15_47:
  438. nb = 16;
  439. ref.reload(BasicTestsQ15::REF_XOR_Q15_ID,mgr,nb);
  440. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  441. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  442. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  443. break;
  444. case BasicTestsQ15::TEST_XOR_Q15_48:
  445. nb = 23;
  446. ref.reload(BasicTestsQ15::REF_XOR_Q15_ID,mgr,nb);
  447. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_Q15_ID,mgr);
  448. input1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  449. input2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  450. break;
  451. }
  452. }
  453. void BasicTestsQ15::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
  454. {
  455. switch(id)
  456. {
  457. case BasicTestsQ15::TEST_DOT_PROD_Q15_19:
  458. case BasicTestsQ15::TEST_DOT_PROD_Q15_20:
  459. case BasicTestsQ15::TEST_DOT_PROD_Q15_21:
  460. dotOutput.dump(mgr);
  461. break;
  462. default:
  463. output.dump(mgr);
  464. }
  465. }