BasicTestsQ31.cpp 20 KB

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