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