BasicTestsQ15.cpp 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671
  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<<17))
  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 *outp=output.ptr();
  17. #define GET_LOGICAL_UINT16_PTR() \
  18. const uint16_t *inp1=inputLogical1.ptr(); \
  19. const uint16_t *inp2=inputLogical2.ptr(); \
  20. uint16_t *outp=outputLogical.ptr();
  21. void BasicTestsQ15::test_add_q15()
  22. {
  23. GET_Q15_PTR();
  24. arm_add_q15(inp1,inp2,outp,input1.nbSamples());
  25. ASSERT_EMPTY_TAIL(output);
  26. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  27. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  28. }
  29. void BasicTestsQ15::test_sub_q15()
  30. {
  31. GET_Q15_PTR();
  32. arm_sub_q15(inp1,inp2,outp,input1.nbSamples());
  33. ASSERT_EMPTY_TAIL(output);
  34. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  35. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  36. }
  37. void BasicTestsQ15::test_mult_q15()
  38. {
  39. GET_Q15_PTR();
  40. arm_mult_q15(inp1,inp2,outp,input1.nbSamples());
  41. ASSERT_EMPTY_TAIL(output);
  42. ASSERT_SNR(output,ref,(float32_t)MULT_SNR_THRESHOLD);
  43. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  44. }
  45. void BasicTestsQ15::test_negate_q15()
  46. {
  47. const q15_t *inp1=input1.ptr();
  48. q15_t *outp=output.ptr();
  49. arm_negate_q15(inp1,outp,input1.nbSamples());
  50. ASSERT_EMPTY_TAIL(output);
  51. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  52. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  53. }
  54. void BasicTestsQ15::test_offset_q15()
  55. {
  56. const q15_t *inp1=input1.ptr();
  57. q15_t *outp=output.ptr();
  58. arm_offset_q15(inp1,this->scalar,outp,input1.nbSamples());
  59. ASSERT_EMPTY_TAIL(output);
  60. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  61. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  62. }
  63. void BasicTestsQ15::test_scale_q15()
  64. {
  65. const q15_t *inp1=input1.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 *outp=dotOutput.ptr();
  78. arm_dot_prod_q15(inp1,inp2,input1.nbSamples(),&r);
  79. outp[0] = r;
  80. ASSERT_SNR(dotOutput,dotRef,(float32_t)MULT_SNR_THRESHOLD);
  81. ASSERT_NEAR_EQ(dotOutput,dotRef,ABS_ERROR_Q63);
  82. ASSERT_EMPTY_TAIL(dotOutput);
  83. }
  84. void BasicTestsQ15::test_abs_q15()
  85. {
  86. GET_Q15_PTR();
  87. (void)inp2;
  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 *outp=output.ptr();
  97. arm_shift_q15(inp1,1,outp,input1.nbSamples());
  98. ASSERT_EMPTY_TAIL(output);
  99. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  100. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
  101. }
  102. void BasicTestsQ15::test_and_u16()
  103. {
  104. GET_LOGICAL_UINT16_PTR();
  105. arm_and_u16(inp1,inp2,outp,inputLogical1.nbSamples());
  106. ASSERT_EMPTY_TAIL(outputLogical);
  107. ASSERT_EQ(outputLogical,refLogical);
  108. }
  109. void BasicTestsQ15::test_or_u16()
  110. {
  111. GET_LOGICAL_UINT16_PTR();
  112. arm_or_u16(inp1,inp2,outp,inputLogical1.nbSamples());
  113. ASSERT_EMPTY_TAIL(outputLogical);
  114. ASSERT_EQ(outputLogical,refLogical);
  115. }
  116. void BasicTestsQ15::test_not_u16()
  117. {
  118. GET_LOGICAL_UINT16_PTR();
  119. (void)inp2;
  120. arm_not_u16(inp1,outp,inputLogical1.nbSamples());
  121. ASSERT_EMPTY_TAIL(outputLogical);
  122. ASSERT_EQ(outputLogical,refLogical);
  123. }
  124. void BasicTestsQ15::test_xor_u16()
  125. {
  126. GET_LOGICAL_UINT16_PTR();
  127. arm_xor_u16(inp1,inp2,outp,inputLogical1.nbSamples());
  128. ASSERT_EMPTY_TAIL(outputLogical);
  129. ASSERT_EQ(outputLogical,refLogical);
  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. (void)params;
  136. switch(id)
  137. {
  138. case BasicTestsQ15::TEST_ADD_Q15_1:
  139. nb = 7;
  140. ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
  141. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  142. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  143. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  144. break;
  145. case BasicTestsQ15::TEST_ADD_Q15_2:
  146. nb = 16;
  147. ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
  148. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  149. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  150. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  151. break;
  152. case BasicTestsQ15::TEST_ADD_Q15_3:
  153. nb = 23;
  154. ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
  155. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  156. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  157. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  158. break;
  159. case BasicTestsQ15::TEST_SUB_Q15_4:
  160. nb = 7;
  161. ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
  162. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  163. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  164. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  165. break;
  166. case BasicTestsQ15::TEST_SUB_Q15_5:
  167. nb = 16;
  168. ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
  169. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  170. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  171. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  172. break;
  173. case BasicTestsQ15::TEST_SUB_Q15_6:
  174. nb = 23;
  175. ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
  176. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  177. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  178. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  179. break;
  180. case BasicTestsQ15::TEST_MULT_Q15_7:
  181. nb = 7;
  182. ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
  183. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  184. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  185. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  186. break;
  187. case BasicTestsQ15::TEST_MULT_Q15_8:
  188. nb = 16;
  189. ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
  190. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  191. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  192. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  193. break;
  194. case BasicTestsQ15::TEST_MULT_Q15_9:
  195. nb = 23;
  196. ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
  197. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  198. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  199. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  200. break;
  201. case BasicTestsQ15::TEST_NEGATE_Q15_10:
  202. nb = 7;
  203. ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
  204. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  205. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  206. break;
  207. case BasicTestsQ15::TEST_NEGATE_Q15_11:
  208. nb = 16;
  209. ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
  210. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  211. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  212. break;
  213. case BasicTestsQ15::TEST_NEGATE_Q15_12:
  214. nb = 23;
  215. ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
  216. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  217. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  218. break;
  219. case BasicTestsQ15::TEST_OFFSET_Q15_13:
  220. nb = 7;
  221. ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
  222. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  223. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  224. break;
  225. case BasicTestsQ15::TEST_OFFSET_Q15_14:
  226. nb = 16;
  227. ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
  228. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  229. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  230. break;
  231. case BasicTestsQ15::TEST_OFFSET_Q15_15:
  232. nb = 23;
  233. ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
  234. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  235. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  236. break;
  237. case BasicTestsQ15::TEST_SCALE_Q15_16:
  238. nb = 7;
  239. ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
  240. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  241. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  242. break;
  243. case BasicTestsQ15::TEST_SCALE_Q15_17:
  244. nb = 16;
  245. ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
  246. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  247. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  248. break;
  249. case BasicTestsQ15::TEST_SCALE_Q15_18:
  250. nb = 23;
  251. ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
  252. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  253. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  254. break;
  255. case BasicTestsQ15::TEST_DOT_PROD_Q15_19:
  256. nb = 7;
  257. dotRef.reload(BasicTestsQ15::REF_DOT_3_Q15_ID,mgr);
  258. dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  259. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  260. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  261. break;
  262. case BasicTestsQ15::TEST_DOT_PROD_Q15_20:
  263. nb = 16;
  264. dotRef.reload(BasicTestsQ15::REF_DOT_4N_Q15_ID,mgr);
  265. dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  266. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  267. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  268. break;
  269. case BasicTestsQ15::TEST_DOT_PROD_Q15_21:
  270. nb = 23;
  271. dotRef.reload(BasicTestsQ15::REF_DOT_4N1_Q15_ID,mgr);
  272. dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  273. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  274. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  275. break;
  276. case BasicTestsQ15::TEST_ABS_Q15_22:
  277. nb = 7;
  278. ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
  279. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  280. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  281. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  282. break;
  283. case BasicTestsQ15::TEST_ABS_Q15_23:
  284. nb = 16;
  285. ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
  286. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  287. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  288. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  289. break;
  290. case BasicTestsQ15::TEST_ABS_Q15_24:
  291. nb = 23;
  292. ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
  293. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  294. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  295. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  296. break;
  297. case BasicTestsQ15::TEST_ADD_Q15_25:
  298. input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  299. input2.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  300. ref.reload(BasicTestsQ15::REF_POSSAT_12_Q15_ID,mgr);
  301. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  302. break;
  303. case BasicTestsQ15::TEST_ADD_Q15_26:
  304. input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  305. input2.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  306. ref.reload(BasicTestsQ15::REF_NEGSAT_13_Q15_ID,mgr);
  307. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  308. break;
  309. case BasicTestsQ15::TEST_SUB_Q15_27:
  310. ref.reload(BasicTestsQ15::REF_POSSAT_14_Q15_ID,mgr);
  311. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  312. input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  313. input2.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  314. break;
  315. case BasicTestsQ15::TEST_SUB_Q15_28:
  316. ref.reload(BasicTestsQ15::REF_NEGSAT_15_Q15_ID,mgr);
  317. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  318. input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  319. input2.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  320. break;
  321. case BasicTestsQ15::TEST_MULT_Q15_29:
  322. ref.reload(BasicTestsQ15::REF_POSSAT_16_Q15_ID,mgr);
  323. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  324. input1.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
  325. input2.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
  326. break;
  327. case BasicTestsQ15::TEST_NEGATE_Q15_30:
  328. ref.reload(BasicTestsQ15::REF_POSSAT_17_Q15_ID,mgr);
  329. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  330. input1.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
  331. break;
  332. case BasicTestsQ15::TEST_OFFSET_Q15_31:
  333. ref.reload(BasicTestsQ15::REF_POSSAT_18_Q15_ID,mgr);
  334. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  335. input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  336. /* 0.9 */
  337. this->scalar = 0x7333;
  338. break;
  339. case BasicTestsQ15::TEST_OFFSET_Q15_32:
  340. ref.reload(BasicTestsQ15::REF_NEGSAT_19_Q15_ID,mgr);
  341. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  342. input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  343. /* -0.9 */
  344. this->scalar = 0x8ccd;
  345. break;
  346. case BasicTestsQ15::TEST_SCALE_Q15_33:
  347. ref.reload(BasicTestsQ15::REF_POSSAT_20_Q15_ID,mgr);
  348. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  349. input1.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
  350. /* Minus max*/
  351. this->scalar = 0x8000;
  352. break;
  353. case BasicTestsQ15::TEST_SHIFT_Q15_34:
  354. ref.reload(BasicTestsQ15::REF_SHIFT_21_Q15_ID,mgr);
  355. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  356. input1.reload(BasicTestsQ15::INPUTRAND_Q15_ID,mgr);
  357. break;
  358. case BasicTestsQ15::TEST_SHIFT_Q15_35:
  359. ref.reload(BasicTestsQ15::REF_SHIFT_POSSAT_22_Q15_ID,mgr);
  360. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  361. input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
  362. break;
  363. case BasicTestsQ15::TEST_SHIFT_Q15_36:
  364. ref.reload(BasicTestsQ15::REF_SHIFT_NEGSAT_23_Q15_ID,mgr);
  365. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  366. input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
  367. break;
  368. case BasicTestsQ15::TEST_AND_U16_37:
  369. nb = 7;
  370. refLogical.reload(BasicTestsQ15::REF_AND_Q15_ID,mgr,nb);
  371. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  372. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  373. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  374. break;
  375. case BasicTestsQ15::TEST_AND_U16_38:
  376. nb = 16;
  377. refLogical.reload(BasicTestsQ15::REF_AND_Q15_ID,mgr,nb);
  378. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  379. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  380. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  381. break;
  382. case BasicTestsQ15::TEST_AND_U16_39:
  383. nb = 23;
  384. refLogical.reload(BasicTestsQ15::REF_AND_Q15_ID,mgr,nb);
  385. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  386. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  387. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  388. break;
  389. case BasicTestsQ15::TEST_OR_U16_40:
  390. nb = 7;
  391. refLogical.reload(BasicTestsQ15::REF_OR_Q15_ID,mgr,nb);
  392. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  393. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  394. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  395. break;
  396. case BasicTestsQ15::TEST_OR_U16_41:
  397. nb = 16;
  398. refLogical.reload(BasicTestsQ15::REF_OR_Q15_ID,mgr,nb);
  399. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  400. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  401. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  402. break;
  403. case BasicTestsQ15::TEST_OR_U16_42:
  404. nb = 23;
  405. refLogical.reload(BasicTestsQ15::REF_OR_Q15_ID,mgr,nb);
  406. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  407. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  408. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  409. break;
  410. case BasicTestsQ15::TEST_NOT_U16_43:
  411. nb = 7;
  412. refLogical.reload(BasicTestsQ15::REF_NOT_Q15_ID,mgr,nb);
  413. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  414. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  415. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  416. break;
  417. case BasicTestsQ15::TEST_NOT_U16_44:
  418. nb = 16;
  419. refLogical.reload(BasicTestsQ15::REF_NOT_Q15_ID,mgr,nb);
  420. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  421. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  422. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  423. break;
  424. case BasicTestsQ15::TEST_NOT_U16_45:
  425. nb = 23;
  426. refLogical.reload(BasicTestsQ15::REF_NOT_Q15_ID,mgr,nb);
  427. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  428. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  429. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  430. break;
  431. case BasicTestsQ15::TEST_XOR_U16_46:
  432. nb = 7;
  433. refLogical.reload(BasicTestsQ15::REF_XOR_Q15_ID,mgr,nb);
  434. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  435. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  436. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  437. break;
  438. case BasicTestsQ15::TEST_XOR_U16_47:
  439. nb = 16;
  440. refLogical.reload(BasicTestsQ15::REF_XOR_Q15_ID,mgr,nb);
  441. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  442. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  443. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  444. break;
  445. case BasicTestsQ15::TEST_XOR_U16_48:
  446. nb = 23;
  447. refLogical.reload(BasicTestsQ15::REF_XOR_Q15_ID,mgr,nb);
  448. outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  449. inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
  450. inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
  451. break;
  452. case BasicTestsQ15::TEST_ADD_Q15_49:
  453. ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
  454. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  455. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  456. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  457. break;
  458. case BasicTestsQ15::TEST_SUB_Q15_50:
  459. ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
  460. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  461. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  462. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  463. break;
  464. case BasicTestsQ15::TEST_MULT_Q15_51:
  465. ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
  466. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  467. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  468. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  469. break;
  470. case BasicTestsQ15::TEST_NEGATE_Q15_52:
  471. ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
  472. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  473. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  474. break;
  475. case BasicTestsQ15::TEST_OFFSET_Q15_53:
  476. ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
  477. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  478. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  479. break;
  480. case BasicTestsQ15::TEST_SCALE_Q15_54:
  481. ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
  482. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  483. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  484. break;
  485. case BasicTestsQ15::TEST_DOT_PROD_Q15_55:
  486. dotRef.reload(BasicTestsQ15::REF_DOT_LONG_Q15_ID,mgr);
  487. dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  488. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  489. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  490. break;
  491. case BasicTestsQ15::TEST_ABS_Q15_56:
  492. ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
  493. output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
  494. input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
  495. input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
  496. break;
  497. }
  498. }
  499. void BasicTestsQ15::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
  500. {
  501. switch(id)
  502. {
  503. case BasicTestsQ15::TEST_DOT_PROD_Q15_19:
  504. case BasicTestsQ15::TEST_DOT_PROD_Q15_20:
  505. case BasicTestsQ15::TEST_DOT_PROD_Q15_21:
  506. case BasicTestsQ15::TEST_DOT_PROD_Q15_55:
  507. dotOutput.dump(mgr);
  508. break;
  509. case BasicTestsQ15::TEST_AND_U16_37:
  510. case BasicTestsQ15::TEST_AND_U16_38:
  511. case BasicTestsQ15::TEST_AND_U16_39:
  512. case BasicTestsQ15::TEST_OR_U16_40:
  513. case BasicTestsQ15::TEST_OR_U16_41:
  514. case BasicTestsQ15::TEST_OR_U16_42:
  515. case BasicTestsQ15::TEST_NOT_U16_43:
  516. case BasicTestsQ15::TEST_NOT_U16_44:
  517. case BasicTestsQ15::TEST_NOT_U16_45:
  518. case BasicTestsQ15::TEST_XOR_U16_46:
  519. case BasicTestsQ15::TEST_XOR_U16_47:
  520. case BasicTestsQ15::TEST_XOR_U16_48:
  521. outputLogical.dump(mgr);
  522. break;
  523. default:
  524. output.dump(mgr);
  525. }
  526. }