BasicTestsQ31.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592
  1. #include "BasicTestsQ31.h"
  2. #include <stdio.h>
  3. #include "Error.h"
  4. #define SNR_THRESHOLD 100
  5. /*
  6. Reference patterns are generated with
  7. a double precision computation.
  8. */
  9. #define ABS_ERROR_Q31 ((q31_t)2)
  10. #define ABS_ERROR_Q63 ((q63_t)(1<<17))
  11. #define ONEHALF 0x40000000
  12. #define GET_Q31_PTR() \
  13. const q31_t *inp1=input1.ptr(); \
  14. const q31_t *inp2=input2.ptr(); \
  15. q31_t *refp=ref.ptr(); \
  16. q31_t *outp=output.ptr();
  17. void BasicTestsQ31::test_add_q31()
  18. {
  19. GET_Q31_PTR();
  20. arm_add_q31(inp1,inp2,outp,input1.nbSamples());
  21. ASSERT_EMPTY_TAIL(output);
  22. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  23. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  24. }
  25. void BasicTestsQ31::test_sub_q31()
  26. {
  27. GET_Q31_PTR();
  28. arm_sub_q31(inp1,inp2,outp,input1.nbSamples());
  29. ASSERT_EMPTY_TAIL(output);
  30. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  31. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  32. }
  33. void BasicTestsQ31::test_mult_q31()
  34. {
  35. GET_Q31_PTR();
  36. arm_mult_q31(inp1,inp2,outp,input1.nbSamples());
  37. ASSERT_EMPTY_TAIL(output);
  38. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  39. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  40. }
  41. void BasicTestsQ31::test_negate_q31()
  42. {
  43. const q31_t *inp1=input1.ptr();
  44. q31_t *refp=ref.ptr();
  45. q31_t *outp=output.ptr();
  46. arm_negate_q31(inp1,outp,input1.nbSamples());
  47. ASSERT_EMPTY_TAIL(output);
  48. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  49. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  50. }
  51. void BasicTestsQ31::test_offset_q31()
  52. {
  53. const q31_t *inp1=input1.ptr();
  54. q31_t *refp=ref.ptr();
  55. q31_t *outp=output.ptr();
  56. arm_offset_q31(inp1,this->scalar,outp,input1.nbSamples());
  57. ASSERT_EMPTY_TAIL(output);
  58. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  59. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  60. }
  61. void BasicTestsQ31::test_scale_q31()
  62. {
  63. const q31_t *inp1=input1.ptr();
  64. q31_t *refp=ref.ptr();
  65. q31_t *outp=output.ptr();
  66. arm_scale_q31(inp1,this->scalar,0,outp,input1.nbSamples());
  67. ASSERT_EMPTY_TAIL(output);
  68. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  69. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  70. }
  71. void BasicTestsQ31::test_dot_prod_q31()
  72. {
  73. q63_t r;
  74. const q31_t *inp1=input1.ptr();
  75. const q31_t *inp2=input2.ptr();
  76. q63_t *refp=dotRef.ptr();
  77. q63_t *outp=dotOutput.ptr();
  78. arm_dot_prod_q31(inp1,inp2,input1.nbSamples(),&r);
  79. outp[0] = r;
  80. ASSERT_SNR(dotOutput,dotRef,(float32_t)SNR_THRESHOLD);
  81. ASSERT_NEAR_EQ(dotOutput,dotRef,(q63_t)ABS_ERROR_Q63);
  82. ASSERT_EMPTY_TAIL(dotOutput);
  83. }
  84. void BasicTestsQ31::test_abs_q31()
  85. {
  86. GET_Q31_PTR();
  87. arm_abs_q31(inp1,outp,input1.nbSamples());
  88. ASSERT_EMPTY_TAIL(output);
  89. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  90. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  91. }
  92. void BasicTestsQ31::test_shift_q31()
  93. {
  94. const q31_t *inp1=input1.ptr();
  95. q31_t *refp=ref.ptr();
  96. q31_t *outp=output.ptr();
  97. arm_shift_q31(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_Q31);
  101. }
  102. void BasicTestsQ31::test_and_q31()
  103. {
  104. GET_Q31_PTR();
  105. arm_and_q31(inp1,inp2,outp,input1.nbSamples());
  106. ASSERT_EMPTY_TAIL(output);
  107. ASSERT_EQ(output,ref);
  108. }
  109. void BasicTestsQ31::test_or_q31()
  110. {
  111. GET_Q31_PTR();
  112. arm_or_q31(inp1,inp2,outp,input1.nbSamples());
  113. ASSERT_EMPTY_TAIL(output);
  114. ASSERT_EQ(output,ref);
  115. }
  116. void BasicTestsQ31::test_not_q31()
  117. {
  118. GET_Q31_PTR();
  119. arm_not_q31(inp1,outp,input1.nbSamples());
  120. ASSERT_EMPTY_TAIL(output);
  121. ASSERT_EQ(output,ref);
  122. }
  123. void BasicTestsQ31::test_xor_q31()
  124. {
  125. GET_Q31_PTR();
  126. arm_xor_q31(inp1,inp2,outp,input1.nbSamples());
  127. ASSERT_EMPTY_TAIL(output);
  128. ASSERT_EQ(output,ref);
  129. }
  130. void BasicTestsQ31::setUp(Testing::testID_t id,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
  131. {
  132. Testing::nbSamples_t nb=MAX_NB_SAMPLES;
  133. this->scalar = ONEHALF;
  134. switch(id)
  135. {
  136. case BasicTestsQ31::TEST_ADD_Q31_1:
  137. nb = 3;
  138. ref.reload(BasicTestsQ31::REF_ADD_Q31_ID,mgr,nb);
  139. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  140. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  141. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  142. break;
  143. case BasicTestsQ31::TEST_ADD_Q31_2:
  144. nb = 8;
  145. ref.reload(BasicTestsQ31::REF_ADD_Q31_ID,mgr,nb);
  146. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  147. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  148. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  149. break;
  150. case BasicTestsQ31::TEST_ADD_Q31_3:
  151. nb = 11;
  152. ref.reload(BasicTestsQ31::REF_ADD_Q31_ID,mgr,nb);
  153. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  154. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  155. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  156. break;
  157. case BasicTestsQ31::TEST_SUB_Q31_4:
  158. nb = 3;
  159. ref.reload(BasicTestsQ31::REF_SUB_Q31_ID,mgr,nb);
  160. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  161. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  162. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  163. break;
  164. case BasicTestsQ31::TEST_SUB_Q31_5:
  165. nb = 8;
  166. ref.reload(BasicTestsQ31::REF_SUB_Q31_ID,mgr,nb);
  167. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  168. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  169. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  170. break;
  171. case BasicTestsQ31::TEST_SUB_Q31_6:
  172. nb = 11;
  173. ref.reload(BasicTestsQ31::REF_SUB_Q31_ID,mgr,nb);
  174. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  175. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  176. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  177. break;
  178. case BasicTestsQ31::TEST_MULT_Q31_7:
  179. nb = 3;
  180. ref.reload(BasicTestsQ31::REF_MULT_Q31_ID,mgr,nb);
  181. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  182. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  183. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  184. break;
  185. case BasicTestsQ31::TEST_MULT_Q31_8:
  186. nb = 8;
  187. ref.reload(BasicTestsQ31::REF_MULT_Q31_ID,mgr,nb);
  188. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  189. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  190. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  191. break;
  192. case BasicTestsQ31::TEST_MULT_Q31_9:
  193. nb = 11;
  194. ref.reload(BasicTestsQ31::REF_MULT_Q31_ID,mgr,nb);
  195. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  196. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  197. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  198. break;
  199. case BasicTestsQ31::TEST_NEGATE_Q31_10:
  200. nb = 3;
  201. ref.reload(BasicTestsQ31::REF_NEGATE_Q31_ID,mgr,nb);
  202. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  203. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  204. break;
  205. case BasicTestsQ31::TEST_NEGATE_Q31_11:
  206. nb = 8;
  207. ref.reload(BasicTestsQ31::REF_NEGATE_Q31_ID,mgr,nb);
  208. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  209. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  210. break;
  211. case BasicTestsQ31::TEST_NEGATE_Q31_12:
  212. nb = 11;
  213. ref.reload(BasicTestsQ31::REF_NEGATE_Q31_ID,mgr,nb);
  214. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  215. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  216. break;
  217. case BasicTestsQ31::TEST_OFFSET_Q31_13:
  218. nb = 3;
  219. ref.reload(BasicTestsQ31::REF_OFFSET_Q31_ID,mgr,nb);
  220. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  221. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  222. break;
  223. case BasicTestsQ31::TEST_OFFSET_Q31_14:
  224. nb = 8;
  225. ref.reload(BasicTestsQ31::REF_OFFSET_Q31_ID,mgr,nb);
  226. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  227. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  228. break;
  229. case BasicTestsQ31::TEST_OFFSET_Q31_15:
  230. nb = 11;
  231. ref.reload(BasicTestsQ31::REF_OFFSET_Q31_ID,mgr,nb);
  232. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  233. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  234. break;
  235. case BasicTestsQ31::TEST_SCALE_Q31_16:
  236. nb = 3;
  237. ref.reload(BasicTestsQ31::REF_SCALE_Q31_ID,mgr,nb);
  238. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  239. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  240. break;
  241. case BasicTestsQ31::TEST_SCALE_Q31_17:
  242. nb = 8;
  243. ref.reload(BasicTestsQ31::REF_SCALE_Q31_ID,mgr,nb);
  244. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  245. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  246. break;
  247. case BasicTestsQ31::TEST_SCALE_Q31_18:
  248. nb = 11;
  249. ref.reload(BasicTestsQ31::REF_SCALE_Q31_ID,mgr,nb);
  250. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  251. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  252. break;
  253. case BasicTestsQ31::TEST_DOT_PROD_Q31_19:
  254. nb = 3;
  255. dotRef.reload(BasicTestsQ31::REF_DOT_3_Q31_ID,mgr);
  256. dotOutput.create(dotRef.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  257. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  258. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  259. break;
  260. case BasicTestsQ31::TEST_DOT_PROD_Q31_20:
  261. nb = 8;
  262. dotRef.reload(BasicTestsQ31::REF_DOT_4N_Q31_ID,mgr);
  263. dotOutput.create(dotRef.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  264. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  265. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  266. break;
  267. case BasicTestsQ31::TEST_DOT_PROD_Q31_21:
  268. nb = 11;
  269. dotRef.reload(BasicTestsQ31::REF_DOT_4N1_Q31_ID,mgr);
  270. dotOutput.create(dotRef.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  271. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  272. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  273. break;
  274. case BasicTestsQ31::TEST_ABS_Q31_22:
  275. nb = 3;
  276. ref.reload(BasicTestsQ31::REF_ABS_Q31_ID,mgr,nb);
  277. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  278. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  279. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  280. break;
  281. case BasicTestsQ31::TEST_ABS_Q31_23:
  282. nb = 8;
  283. ref.reload(BasicTestsQ31::REF_ABS_Q31_ID,mgr,nb);
  284. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  285. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  286. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  287. break;
  288. case BasicTestsQ31::TEST_ABS_Q31_24:
  289. nb = 11;
  290. ref.reload(BasicTestsQ31::REF_ABS_Q31_ID,mgr,nb);
  291. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  292. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  293. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  294. break;
  295. case BasicTestsQ31::TEST_ADD_Q31_25:
  296. input1.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  297. input2.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  298. ref.reload(BasicTestsQ31::REF_POSSAT_12_Q31_ID,mgr);
  299. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  300. break;
  301. case BasicTestsQ31::TEST_ADD_Q31_26:
  302. input1.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  303. input2.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  304. ref.reload(BasicTestsQ31::REF_NEGSAT_13_Q31_ID,mgr);
  305. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  306. break;
  307. case BasicTestsQ31::TEST_SUB_Q31_27:
  308. ref.reload(BasicTestsQ31::REF_POSSAT_14_Q31_ID,mgr);
  309. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  310. input1.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  311. input2.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  312. break;
  313. case BasicTestsQ31::TEST_SUB_Q31_28:
  314. ref.reload(BasicTestsQ31::REF_NEGSAT_15_Q31_ID,mgr);
  315. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  316. input1.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  317. input2.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  318. break;
  319. case BasicTestsQ31::TEST_MULT_Q31_29:
  320. ref.reload(BasicTestsQ31::REF_POSSAT_16_Q31_ID,mgr);
  321. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  322. input1.reload(BasicTestsQ31::MAXNEG2_Q31_ID,mgr);
  323. input2.reload(BasicTestsQ31::MAXNEG2_Q31_ID,mgr);
  324. break;
  325. case BasicTestsQ31::TEST_NEGATE_Q31_30:
  326. ref.reload(BasicTestsQ31::REF_POSSAT_17_Q31_ID,mgr);
  327. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  328. input1.reload(BasicTestsQ31::MAXNEG2_Q31_ID,mgr);
  329. break;
  330. case BasicTestsQ31::TEST_OFFSET_Q31_31:
  331. ref.reload(BasicTestsQ31::REF_POSSAT_18_Q31_ID,mgr);
  332. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  333. input1.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  334. /* 0.9 */
  335. this->scalar = 0x73333333;
  336. break;
  337. case BasicTestsQ31::TEST_OFFSET_Q31_32:
  338. ref.reload(BasicTestsQ31::REF_NEGSAT_19_Q31_ID,mgr);
  339. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  340. input1.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  341. /* -0.9 */
  342. this->scalar = 0x8ccccccd;
  343. break;
  344. case BasicTestsQ31::TEST_SCALE_Q31_33:
  345. ref.reload(BasicTestsQ31::REF_POSSAT_20_Q31_ID,mgr);
  346. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  347. input1.reload(BasicTestsQ31::MAXNEG2_Q31_ID,mgr);
  348. /* Minus max*/
  349. this->scalar = 0x80000000;
  350. break;
  351. case BasicTestsQ31::TEST_SHIFT_Q31_34:
  352. ref.reload(BasicTestsQ31::REF_SHIFT_21_Q31_ID,mgr);
  353. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  354. input1.reload(BasicTestsQ31::INPUTRAND_Q31_ID,mgr);
  355. break;
  356. case BasicTestsQ31::TEST_SHIFT_Q31_35:
  357. ref.reload(BasicTestsQ31::REF_SHIFT_POSSAT_22_Q31_ID,mgr);
  358. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  359. input1.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  360. break;
  361. case BasicTestsQ31::TEST_SHIFT_Q31_36:
  362. ref.reload(BasicTestsQ31::REF_SHIFT_NEGSAT_23_Q31_ID,mgr);
  363. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  364. input1.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  365. break;
  366. case BasicTestsQ31::TEST_AND_Q31_37:
  367. nb = 3;
  368. ref.reload(BasicTestsQ31::REF_AND_Q31_ID,mgr,nb);
  369. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  370. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  371. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  372. break;
  373. case BasicTestsQ31::TEST_AND_Q31_38:
  374. nb = 8;
  375. ref.reload(BasicTestsQ31::REF_AND_Q31_ID,mgr,nb);
  376. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  377. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  378. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  379. break;
  380. case BasicTestsQ31::TEST_AND_Q31_39:
  381. nb = 11;
  382. ref.reload(BasicTestsQ31::REF_AND_Q31_ID,mgr,nb);
  383. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  384. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  385. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  386. break;
  387. case BasicTestsQ31::TEST_OR_Q31_40:
  388. nb = 3;
  389. ref.reload(BasicTestsQ31::REF_OR_Q31_ID,mgr,nb);
  390. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  391. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  392. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  393. break;
  394. case BasicTestsQ31::TEST_OR_Q31_41:
  395. nb = 8;
  396. ref.reload(BasicTestsQ31::REF_OR_Q31_ID,mgr,nb);
  397. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  398. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  399. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  400. break;
  401. case BasicTestsQ31::TEST_OR_Q31_42:
  402. nb = 11;
  403. ref.reload(BasicTestsQ31::REF_OR_Q31_ID,mgr,nb);
  404. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  405. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  406. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  407. break;
  408. case BasicTestsQ31::TEST_NOT_Q31_43:
  409. nb = 3;
  410. ref.reload(BasicTestsQ31::REF_NOT_Q31_ID,mgr,nb);
  411. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  412. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  413. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  414. break;
  415. case BasicTestsQ31::TEST_NOT_Q31_44:
  416. nb = 8;
  417. ref.reload(BasicTestsQ31::REF_NOT_Q31_ID,mgr,nb);
  418. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  419. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  420. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  421. break;
  422. case BasicTestsQ31::TEST_NOT_Q31_45:
  423. nb = 11;
  424. ref.reload(BasicTestsQ31::REF_NOT_Q31_ID,mgr,nb);
  425. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  426. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  427. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  428. break;
  429. case BasicTestsQ31::TEST_XOR_Q31_46:
  430. nb = 3;
  431. ref.reload(BasicTestsQ31::REF_XOR_Q31_ID,mgr,nb);
  432. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  433. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  434. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  435. break;
  436. case BasicTestsQ31::TEST_XOR_Q31_47:
  437. nb = 8;
  438. ref.reload(BasicTestsQ31::REF_XOR_Q31_ID,mgr,nb);
  439. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  440. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  441. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  442. break;
  443. case BasicTestsQ31::TEST_XOR_Q31_48:
  444. nb = 11;
  445. ref.reload(BasicTestsQ31::REF_XOR_Q31_ID,mgr,nb);
  446. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_Q31_ID,mgr);
  447. input1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  448. input2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  449. break;
  450. }
  451. }
  452. void BasicTestsQ31::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
  453. {
  454. switch(id)
  455. {
  456. case BasicTestsQ31::TEST_DOT_PROD_Q31_19:
  457. case BasicTestsQ31::TEST_DOT_PROD_Q31_20:
  458. case BasicTestsQ31::TEST_DOT_PROD_Q31_21:
  459. dotOutput.dump(mgr);
  460. break;
  461. default:
  462. output.dump(mgr);
  463. }
  464. }