BasicTestsQ31.cpp 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  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)4)
  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 *outp=output.ptr();
  16. #define GET_LOGICAL_UINT32_PTR() \
  17. const uint32_t *inp1=inputLogical1.ptr(); \
  18. const uint32_t *inp2=inputLogical2.ptr(); \
  19. uint32_t *outp=outputLogical.ptr();
  20. void BasicTestsQ31::test_add_q31()
  21. {
  22. GET_Q31_PTR();
  23. arm_add_q31(inp1,inp2,outp,input1.nbSamples());
  24. ASSERT_EMPTY_TAIL(output);
  25. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  26. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  27. }
  28. void BasicTestsQ31::test_sub_q31()
  29. {
  30. GET_Q31_PTR();
  31. arm_sub_q31(inp1,inp2,outp,input1.nbSamples());
  32. ASSERT_EMPTY_TAIL(output);
  33. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  34. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  35. }
  36. void BasicTestsQ31::test_mult_q31()
  37. {
  38. GET_Q31_PTR();
  39. arm_mult_q31(inp1,inp2,outp,input1.nbSamples());
  40. ASSERT_EMPTY_TAIL(output);
  41. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  42. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  43. }
  44. void BasicTestsQ31::test_negate_q31()
  45. {
  46. const q31_t *inp1=input1.ptr();
  47. q31_t *outp=output.ptr();
  48. arm_negate_q31(inp1,outp,input1.nbSamples());
  49. ASSERT_EMPTY_TAIL(output);
  50. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  51. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  52. }
  53. void BasicTestsQ31::test_offset_q31()
  54. {
  55. const q31_t *inp1=input1.ptr();
  56. q31_t *outp=output.ptr();
  57. arm_offset_q31(inp1,this->scalar,outp,input1.nbSamples());
  58. ASSERT_EMPTY_TAIL(output);
  59. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  60. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q31);
  61. }
  62. void BasicTestsQ31::test_scale_q31()
  63. {
  64. const q31_t *inp1=input1.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 *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. (void)inp2;
  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 *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_u32()
  102. {
  103. GET_LOGICAL_UINT32_PTR();
  104. arm_and_u32(inp1, inp2, outp,inputLogical1.nbSamples());
  105. ASSERT_EMPTY_TAIL(outputLogical);
  106. ASSERT_EQ(outputLogical,refLogical);
  107. }
  108. void BasicTestsQ31::test_or_u32()
  109. {
  110. GET_LOGICAL_UINT32_PTR();
  111. arm_or_u32(inp1,inp2,outp,inputLogical1.nbSamples());
  112. ASSERT_EMPTY_TAIL(outputLogical);
  113. ASSERT_EQ(outputLogical,refLogical);
  114. }
  115. void BasicTestsQ31::test_not_u32()
  116. {
  117. GET_LOGICAL_UINT32_PTR();
  118. (void)inp2;
  119. arm_not_u32(inp1,outp,inputLogical1.nbSamples());
  120. ASSERT_EMPTY_TAIL(outputLogical);
  121. ASSERT_EQ(outputLogical,refLogical);
  122. }
  123. void BasicTestsQ31::test_xor_u32()
  124. {
  125. GET_LOGICAL_UINT32_PTR();
  126. arm_xor_u32(inp1,inp2,outp,inputLogical1.nbSamples());
  127. ASSERT_EMPTY_TAIL(outputLogical);
  128. ASSERT_EQ(outputLogical,refLogical);
  129. }
  130. void BasicTestsQ31::setUp(Testing::testID_t id,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
  131. {
  132. (void)params;
  133. Testing::nbSamples_t nb=MAX_NB_SAMPLES;
  134. this->scalar = ONEHALF;
  135. switch(id)
  136. {
  137. case BasicTestsQ31::TEST_ADD_Q31_1:
  138. nb = 3;
  139. ref.reload(BasicTestsQ31::REF_ADD_Q31_ID,mgr,nb);
  140. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  141. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  142. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  143. break;
  144. case BasicTestsQ31::TEST_ADD_Q31_2:
  145. nb = 8;
  146. ref.reload(BasicTestsQ31::REF_ADD_Q31_ID,mgr,nb);
  147. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  148. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  149. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  150. break;
  151. case BasicTestsQ31::TEST_ADD_Q31_3:
  152. nb = 11;
  153. ref.reload(BasicTestsQ31::REF_ADD_Q31_ID,mgr,nb);
  154. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  155. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  156. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  157. break;
  158. case BasicTestsQ31::TEST_SUB_Q31_4:
  159. nb = 3;
  160. ref.reload(BasicTestsQ31::REF_SUB_Q31_ID,mgr,nb);
  161. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  162. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  163. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  164. break;
  165. case BasicTestsQ31::TEST_SUB_Q31_5:
  166. nb = 8;
  167. ref.reload(BasicTestsQ31::REF_SUB_Q31_ID,mgr,nb);
  168. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  169. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  170. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  171. break;
  172. case BasicTestsQ31::TEST_SUB_Q31_6:
  173. nb = 11;
  174. ref.reload(BasicTestsQ31::REF_SUB_Q31_ID,mgr,nb);
  175. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  176. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  177. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  178. break;
  179. case BasicTestsQ31::TEST_MULT_Q31_7:
  180. nb = 3;
  181. ref.reload(BasicTestsQ31::REF_MULT_Q31_ID,mgr,nb);
  182. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  183. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  184. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  185. break;
  186. case BasicTestsQ31::TEST_MULT_Q31_8:
  187. nb = 8;
  188. ref.reload(BasicTestsQ31::REF_MULT_Q31_ID,mgr,nb);
  189. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  190. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  191. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  192. break;
  193. case BasicTestsQ31::TEST_MULT_Q31_9:
  194. nb = 11;
  195. ref.reload(BasicTestsQ31::REF_MULT_Q31_ID,mgr,nb);
  196. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  197. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  198. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  199. break;
  200. case BasicTestsQ31::TEST_NEGATE_Q31_10:
  201. nb = 3;
  202. ref.reload(BasicTestsQ31::REF_NEGATE_Q31_ID,mgr,nb);
  203. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  204. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  205. break;
  206. case BasicTestsQ31::TEST_NEGATE_Q31_11:
  207. nb = 8;
  208. ref.reload(BasicTestsQ31::REF_NEGATE_Q31_ID,mgr,nb);
  209. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  210. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  211. break;
  212. case BasicTestsQ31::TEST_NEGATE_Q31_12:
  213. nb = 11;
  214. ref.reload(BasicTestsQ31::REF_NEGATE_Q31_ID,mgr,nb);
  215. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  216. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  217. break;
  218. case BasicTestsQ31::TEST_OFFSET_Q31_13:
  219. nb = 3;
  220. ref.reload(BasicTestsQ31::REF_OFFSET_Q31_ID,mgr,nb);
  221. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  222. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  223. break;
  224. case BasicTestsQ31::TEST_OFFSET_Q31_14:
  225. nb = 8;
  226. ref.reload(BasicTestsQ31::REF_OFFSET_Q31_ID,mgr,nb);
  227. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  228. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  229. break;
  230. case BasicTestsQ31::TEST_OFFSET_Q31_15:
  231. nb = 11;
  232. ref.reload(BasicTestsQ31::REF_OFFSET_Q31_ID,mgr,nb);
  233. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  234. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  235. break;
  236. case BasicTestsQ31::TEST_SCALE_Q31_16:
  237. nb = 3;
  238. ref.reload(BasicTestsQ31::REF_SCALE_Q31_ID,mgr,nb);
  239. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  240. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  241. break;
  242. case BasicTestsQ31::TEST_SCALE_Q31_17:
  243. nb = 8;
  244. ref.reload(BasicTestsQ31::REF_SCALE_Q31_ID,mgr,nb);
  245. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  246. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  247. break;
  248. case BasicTestsQ31::TEST_SCALE_Q31_18:
  249. nb = 11;
  250. ref.reload(BasicTestsQ31::REF_SCALE_Q31_ID,mgr,nb);
  251. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  252. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  253. break;
  254. case BasicTestsQ31::TEST_DOT_PROD_Q31_19:
  255. nb = 3;
  256. dotRef.reload(BasicTestsQ31::REF_DOT_3_Q31_ID,mgr);
  257. dotOutput.create(dotRef.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  258. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  259. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  260. break;
  261. case BasicTestsQ31::TEST_DOT_PROD_Q31_20:
  262. nb = 8;
  263. dotRef.reload(BasicTestsQ31::REF_DOT_4N_Q31_ID,mgr);
  264. dotOutput.create(dotRef.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  265. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  266. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  267. break;
  268. case BasicTestsQ31::TEST_DOT_PROD_Q31_21:
  269. nb = 11;
  270. dotRef.reload(BasicTestsQ31::REF_DOT_4N1_Q31_ID,mgr);
  271. dotOutput.create(dotRef.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  272. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  273. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  274. break;
  275. case BasicTestsQ31::TEST_ABS_Q31_22:
  276. nb = 3;
  277. ref.reload(BasicTestsQ31::REF_ABS_Q31_ID,mgr,nb);
  278. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  279. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  280. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  281. break;
  282. case BasicTestsQ31::TEST_ABS_Q31_23:
  283. nb = 8;
  284. ref.reload(BasicTestsQ31::REF_ABS_Q31_ID,mgr,nb);
  285. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  286. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  287. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  288. break;
  289. case BasicTestsQ31::TEST_ABS_Q31_24:
  290. nb = 11;
  291. ref.reload(BasicTestsQ31::REF_ABS_Q31_ID,mgr,nb);
  292. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  293. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  294. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  295. break;
  296. case BasicTestsQ31::TEST_ADD_Q31_25:
  297. input1.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  298. input2.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  299. ref.reload(BasicTestsQ31::REF_POSSAT_12_Q31_ID,mgr);
  300. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  301. break;
  302. case BasicTestsQ31::TEST_ADD_Q31_26:
  303. input1.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  304. input2.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  305. ref.reload(BasicTestsQ31::REF_NEGSAT_13_Q31_ID,mgr);
  306. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  307. break;
  308. case BasicTestsQ31::TEST_SUB_Q31_27:
  309. ref.reload(BasicTestsQ31::REF_POSSAT_14_Q31_ID,mgr);
  310. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  311. input1.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  312. input2.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  313. break;
  314. case BasicTestsQ31::TEST_SUB_Q31_28:
  315. ref.reload(BasicTestsQ31::REF_NEGSAT_15_Q31_ID,mgr);
  316. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  317. input1.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  318. input2.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  319. break;
  320. case BasicTestsQ31::TEST_MULT_Q31_29:
  321. ref.reload(BasicTestsQ31::REF_POSSAT_16_Q31_ID,mgr);
  322. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  323. input1.reload(BasicTestsQ31::MAXNEG2_Q31_ID,mgr);
  324. input2.reload(BasicTestsQ31::MAXNEG2_Q31_ID,mgr);
  325. break;
  326. case BasicTestsQ31::TEST_NEGATE_Q31_30:
  327. ref.reload(BasicTestsQ31::REF_POSSAT_17_Q31_ID,mgr);
  328. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  329. input1.reload(BasicTestsQ31::MAXNEG2_Q31_ID,mgr);
  330. break;
  331. case BasicTestsQ31::TEST_OFFSET_Q31_31:
  332. ref.reload(BasicTestsQ31::REF_POSSAT_18_Q31_ID,mgr);
  333. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  334. input1.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  335. /* 0.9 */
  336. this->scalar = 0x73333333;
  337. break;
  338. case BasicTestsQ31::TEST_OFFSET_Q31_32:
  339. ref.reload(BasicTestsQ31::REF_NEGSAT_19_Q31_ID,mgr);
  340. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  341. input1.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  342. /* -0.9 */
  343. this->scalar = 0x8ccccccd;
  344. break;
  345. case BasicTestsQ31::TEST_SCALE_Q31_33:
  346. ref.reload(BasicTestsQ31::REF_POSSAT_20_Q31_ID,mgr);
  347. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  348. input1.reload(BasicTestsQ31::MAXNEG2_Q31_ID,mgr);
  349. /* Minus max*/
  350. this->scalar = 0x80000000;
  351. break;
  352. case BasicTestsQ31::TEST_SHIFT_Q31_34:
  353. ref.reload(BasicTestsQ31::REF_SHIFT_21_Q31_ID,mgr);
  354. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  355. input1.reload(BasicTestsQ31::INPUTRAND_Q31_ID,mgr);
  356. break;
  357. case BasicTestsQ31::TEST_SHIFT_Q31_35:
  358. ref.reload(BasicTestsQ31::REF_SHIFT_POSSAT_22_Q31_ID,mgr);
  359. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  360. input1.reload(BasicTestsQ31::MAXPOS_Q31_ID,mgr);
  361. break;
  362. case BasicTestsQ31::TEST_SHIFT_Q31_36:
  363. ref.reload(BasicTestsQ31::REF_SHIFT_NEGSAT_23_Q31_ID,mgr);
  364. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  365. input1.reload(BasicTestsQ31::MAXNEG_Q31_ID,mgr);
  366. break;
  367. case BasicTestsQ31::TEST_AND_U32_37:
  368. nb = 3;
  369. refLogical.reload(BasicTestsQ31::REF_AND_Q31_ID,mgr,nb);
  370. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  371. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  372. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  373. break;
  374. case BasicTestsQ31::TEST_AND_U32_38:
  375. nb = 8;
  376. refLogical.reload(BasicTestsQ31::REF_AND_Q31_ID,mgr,nb);
  377. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  378. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  379. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  380. break;
  381. case BasicTestsQ31::TEST_AND_U32_39:
  382. nb = 11;
  383. refLogical.reload(BasicTestsQ31::REF_AND_Q31_ID,mgr,nb);
  384. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  385. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  386. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  387. break;
  388. case BasicTestsQ31::TEST_OR_U32_40:
  389. nb = 3;
  390. refLogical.reload(BasicTestsQ31::REF_OR_Q31_ID,mgr,nb);
  391. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  392. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  393. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  394. break;
  395. case BasicTestsQ31::TEST_OR_U32_41:
  396. nb = 8;
  397. refLogical.reload(BasicTestsQ31::REF_OR_Q31_ID,mgr,nb);
  398. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  399. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  400. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  401. break;
  402. case BasicTestsQ31::TEST_OR_U32_42:
  403. nb = 11;
  404. refLogical.reload(BasicTestsQ31::REF_OR_Q31_ID,mgr,nb);
  405. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  406. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  407. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  408. break;
  409. case BasicTestsQ31::TEST_NOT_U32_43:
  410. nb = 3;
  411. refLogical.reload(BasicTestsQ31::REF_NOT_Q31_ID,mgr,nb);
  412. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  413. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  414. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  415. break;
  416. case BasicTestsQ31::TEST_NOT_U32_44:
  417. nb = 8;
  418. refLogical.reload(BasicTestsQ31::REF_NOT_Q31_ID,mgr,nb);
  419. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  420. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  421. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  422. break;
  423. case BasicTestsQ31::TEST_NOT_U32_45:
  424. nb = 11;
  425. refLogical.reload(BasicTestsQ31::REF_NOT_Q31_ID,mgr,nb);
  426. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  427. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  428. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  429. break;
  430. case BasicTestsQ31::TEST_XOR_U32_46:
  431. nb = 3;
  432. refLogical.reload(BasicTestsQ31::REF_XOR_Q31_ID,mgr,nb);
  433. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  434. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  435. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  436. break;
  437. case BasicTestsQ31::TEST_XOR_U32_47:
  438. nb = 8;
  439. refLogical.reload(BasicTestsQ31::REF_XOR_Q31_ID,mgr,nb);
  440. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  441. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  442. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  443. break;
  444. case BasicTestsQ31::TEST_XOR_U32_48:
  445. nb = 11;
  446. refLogical.reload(BasicTestsQ31::REF_XOR_Q31_ID,mgr,nb);
  447. outputLogical.create(refLogical.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  448. inputLogical1.reload(BasicTestsQ31::INPUT1_BITWISE_Q31_ID,mgr,nb);
  449. inputLogical2.reload(BasicTestsQ31::INPUT2_BITWISE_Q31_ID,mgr,nb);
  450. break;
  451. case BasicTestsQ31::TEST_ADD_Q31_49:
  452. ref.reload(BasicTestsQ31::REF_ADD_Q31_ID,mgr,nb);
  453. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  454. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  455. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  456. break;
  457. case BasicTestsQ31::TEST_SUB_Q31_50:
  458. ref.reload(BasicTestsQ31::REF_SUB_Q31_ID,mgr,nb);
  459. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  460. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  461. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  462. break;
  463. case BasicTestsQ31::TEST_MULT_Q31_51:
  464. ref.reload(BasicTestsQ31::REF_MULT_Q31_ID,mgr,nb);
  465. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  466. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  467. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  468. break;
  469. case BasicTestsQ31::TEST_NEGATE_Q31_52:
  470. ref.reload(BasicTestsQ31::REF_NEGATE_Q31_ID,mgr,nb);
  471. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  472. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  473. break;
  474. case BasicTestsQ31::TEST_OFFSET_Q31_53:
  475. ref.reload(BasicTestsQ31::REF_OFFSET_Q31_ID,mgr,nb);
  476. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  477. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  478. break;
  479. case BasicTestsQ31::TEST_SCALE_Q31_54:
  480. ref.reload(BasicTestsQ31::REF_SCALE_Q31_ID,mgr,nb);
  481. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  482. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  483. break;
  484. case BasicTestsQ31::TEST_DOT_PROD_Q31_55:
  485. dotRef.reload(BasicTestsQ31::REF_DOT_LONG_Q31_ID,mgr);
  486. dotOutput.create(dotRef.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  487. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  488. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  489. break;
  490. case BasicTestsQ31::TEST_ABS_Q31_56:
  491. ref.reload(BasicTestsQ31::REF_ABS_Q31_ID,mgr,nb);
  492. output.create(ref.nbSamples(),BasicTestsQ31::OUT_SAMPLES_ID,mgr);
  493. input1.reload(BasicTestsQ31::INPUT1_Q31_ID,mgr,nb);
  494. input2.reload(BasicTestsQ31::INPUT2_Q31_ID,mgr,nb);
  495. break;
  496. }
  497. }
  498. void BasicTestsQ31::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
  499. {
  500. switch(id)
  501. {
  502. case BasicTestsQ31::TEST_DOT_PROD_Q31_19:
  503. case BasicTestsQ31::TEST_DOT_PROD_Q31_20:
  504. case BasicTestsQ31::TEST_DOT_PROD_Q31_21:
  505. case BasicTestsQ31::TEST_DOT_PROD_Q31_55:
  506. dotOutput.dump(mgr);
  507. break;
  508. case BasicTestsQ31::TEST_AND_U32_37:
  509. case BasicTestsQ31::TEST_AND_U32_38:
  510. case BasicTestsQ31::TEST_AND_U32_39:
  511. case BasicTestsQ31::TEST_OR_U32_40:
  512. case BasicTestsQ31::TEST_OR_U32_41:
  513. case BasicTestsQ31::TEST_OR_U32_42:
  514. case BasicTestsQ31::TEST_NOT_U32_43:
  515. case BasicTestsQ31::TEST_NOT_U32_44:
  516. case BasicTestsQ31::TEST_NOT_U32_45:
  517. case BasicTestsQ31::TEST_XOR_U32_46:
  518. case BasicTestsQ31::TEST_XOR_U32_47:
  519. case BasicTestsQ31::TEST_XOR_U32_48:
  520. outputLogical.dump(mgr);
  521. break;
  522. default:
  523. output.dump(mgr);
  524. }
  525. }