BasicTestsQ15.cpp 25 KB

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