1 #include "BasicTestsQ15.h"
2 #include <stdio.h>
3 #include "Error.h"
4 
5 #define SNR_THRESHOLD 70
6 
7 /*
8 
9 Reference patterns are generated with
10 a double precision computation.
11 
12 */
13 #define ABS_ERROR_Q15 ((q15_t)2)
14 #define ABS_ERROR_Q63 ((q63_t)(1<<17))
15 
16 #define MULT_SNR_THRESHOLD 60
17 
18 #define ONEHALF 0x4000
19 
20 #define GET_Q15_PTR() \
21 const q15_t *inp1=input1.ptr(); \
22 const q15_t *inp2=input2.ptr(); \
23 q15_t *outp=output.ptr();
24 
25 #define GET_LOGICAL_UINT16_PTR() \
26 const uint16_t *inp1=inputLogical1.ptr(); \
27 const uint16_t *inp2=inputLogical2.ptr(); \
28 uint16_t *outp=outputLogical.ptr();
29 
30 
test_add_q15()31     void BasicTestsQ15::test_add_q15()
32     {
33         GET_Q15_PTR();
34 
35         arm_add_q15(inp1,inp2,outp,input1.nbSamples());
36 
37         ASSERT_EMPTY_TAIL(output);
38 
39         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
40 
41         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
42 
43     }
44 
test_clip_q15()45     void BasicTestsQ15::test_clip_q15()
46     {
47         const q15_t *inp=input1.ptr();
48         q15_t *outp=output.ptr();
49 
50         arm_clip_q15(inp,outp,this->min, this->max,input1.nbSamples());
51 
52         ASSERT_EMPTY_TAIL(output);
53 
54         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
55 
56         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
57 
58     }
59 
test_sub_q15()60     void BasicTestsQ15::test_sub_q15()
61     {
62         GET_Q15_PTR();
63 
64         arm_sub_q15(inp1,inp2,outp,input1.nbSamples());
65 
66         ASSERT_EMPTY_TAIL(output);
67 
68         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
69 
70         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
71 
72     }
73 
test_mult_q15()74     void BasicTestsQ15::test_mult_q15()
75     {
76         GET_Q15_PTR();
77 
78         arm_mult_q15(inp1,inp2,outp,input1.nbSamples());
79 
80         ASSERT_EMPTY_TAIL(output);
81 
82         ASSERT_SNR(output,ref,(float32_t)MULT_SNR_THRESHOLD);
83 
84         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
85 
86     }
87 
88 
89 
test_negate_q15()90     void BasicTestsQ15::test_negate_q15()
91     {
92         const q15_t *inp1=input1.ptr();
93         q15_t *outp=output.ptr();
94 
95         arm_negate_q15(inp1,outp,input1.nbSamples());
96 
97         ASSERT_EMPTY_TAIL(output);
98 
99         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
100 
101         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
102 
103     }
104 
test_offset_q15()105     void BasicTestsQ15::test_offset_q15()
106     {
107         const q15_t *inp1=input1.ptr();
108         q15_t *outp=output.ptr();
109 
110         arm_offset_q15(inp1,this->scalar,outp,input1.nbSamples());
111 
112         ASSERT_EMPTY_TAIL(output);
113 
114         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
115 
116         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
117 
118     }
119 
test_scale_q15()120     void BasicTestsQ15::test_scale_q15()
121     {
122         const q15_t *inp1=input1.ptr();
123         q15_t *outp=output.ptr();
124 
125         arm_scale_q15(inp1,this->scalar,0,outp,input1.nbSamples());
126 
127         ASSERT_EMPTY_TAIL(output);
128 
129         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
130 
131         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
132 
133     }
134 
test_dot_prod_q15()135     void BasicTestsQ15::test_dot_prod_q15()
136     {
137         q63_t r;
138 
139         const q15_t *inp1=input1.ptr();
140         const q15_t *inp2=input2.ptr();
141         q63_t *outp=dotOutput.ptr();
142 
143         arm_dot_prod_q15(inp1,inp2,input1.nbSamples(),&r);
144 
145         outp[0] = r;
146 
147         ASSERT_SNR(dotOutput,dotRef,(float32_t)MULT_SNR_THRESHOLD);
148 
149         ASSERT_NEAR_EQ(dotOutput,dotRef,ABS_ERROR_Q63);
150 
151         ASSERT_EMPTY_TAIL(dotOutput);
152 
153     }
154 
test_abs_q15()155     void BasicTestsQ15::test_abs_q15()
156     {
157         GET_Q15_PTR();
158 
159         (void)inp2;
160 
161         arm_abs_q15(inp1,outp,input1.nbSamples());
162 
163         ASSERT_EMPTY_TAIL(output);
164 
165         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
166 
167         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
168 
169     }
170 
test_shift_q15()171     void BasicTestsQ15::test_shift_q15()
172     {
173         const q15_t *inp1=input1.ptr();
174         q15_t *outp=output.ptr();
175 
176 
177         arm_shift_q15(inp1,1,outp,input1.nbSamples());
178 
179         ASSERT_EMPTY_TAIL(output);
180 
181         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
182 
183         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q15);
184 
185     }
186 
test_and_u16()187     void BasicTestsQ15::test_and_u16()
188     {
189         GET_LOGICAL_UINT16_PTR();
190 
191         arm_and_u16(inp1,inp2,outp,inputLogical1.nbSamples());
192 
193         ASSERT_EMPTY_TAIL(outputLogical);
194 
195         ASSERT_EQ(outputLogical,refLogical);
196 
197     }
198 
test_or_u16()199     void BasicTestsQ15::test_or_u16()
200     {
201         GET_LOGICAL_UINT16_PTR();
202 
203         arm_or_u16(inp1,inp2,outp,inputLogical1.nbSamples());
204 
205         ASSERT_EMPTY_TAIL(outputLogical);
206 
207         ASSERT_EQ(outputLogical,refLogical);
208 
209     }
210 
test_not_u16()211     void BasicTestsQ15::test_not_u16()
212     {
213         GET_LOGICAL_UINT16_PTR();
214 
215         (void)inp2;
216 
217         arm_not_u16(inp1,outp,inputLogical1.nbSamples());
218 
219         ASSERT_EMPTY_TAIL(outputLogical);
220 
221         ASSERT_EQ(outputLogical,refLogical);
222 
223     }
224 
test_xor_u16()225     void BasicTestsQ15::test_xor_u16()
226     {
227         GET_LOGICAL_UINT16_PTR();
228 
229         arm_xor_u16(inp1,inp2,outp,inputLogical1.nbSamples());
230 
231         ASSERT_EMPTY_TAIL(outputLogical);
232 
233         ASSERT_EQ(outputLogical,refLogical);
234 
235     }
236 
237 
setUp(Testing::testID_t id,std::vector<Testing::param_t> & params,Client::PatternMgr * mgr)238     void BasicTestsQ15::setUp(Testing::testID_t id,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
239     {
240 
241        Testing::nbSamples_t nb=MAX_NB_SAMPLES;
242 
243        this->scalar = ONEHALF;
244 
245        (void)params;
246 
247 
248        switch(id)
249        {
250         case BasicTestsQ15::TEST_ADD_Q15_1:
251           nb = 7;
252           ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
253           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
254           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
255           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
256           break;
257 
258         case BasicTestsQ15::TEST_ADD_Q15_2:
259           nb = 16;
260           ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
261           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
262           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
263           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
264           break;
265         case BasicTestsQ15::TEST_ADD_Q15_3:
266           nb = 23;
267           ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
268           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
269           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
270           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
271           break;
272 
273 
274         case BasicTestsQ15::TEST_SUB_Q15_4:
275           nb = 7;
276           ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
277           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
278           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
279           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
280           break;
281         case BasicTestsQ15::TEST_SUB_Q15_5:
282           nb = 16;
283           ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
284           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
285           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
286           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
287           break;
288         case BasicTestsQ15::TEST_SUB_Q15_6:
289           nb = 23;
290           ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
291           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
292           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
293           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
294           break;
295 
296         case BasicTestsQ15::TEST_MULT_Q15_7:
297           nb = 7;
298           ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
299           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
300           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
301           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
302           break;
303         case BasicTestsQ15::TEST_MULT_Q15_8:
304           nb = 16;
305           ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
306           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
307           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
308           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
309           break;
310         case BasicTestsQ15::TEST_MULT_Q15_9:
311           nb = 23;
312           ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
313           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
314           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
315           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
316           break;
317 
318         case BasicTestsQ15::TEST_NEGATE_Q15_10:
319           nb = 7;
320           ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
321           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
322           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
323           break;
324         case BasicTestsQ15::TEST_NEGATE_Q15_11:
325           nb = 16;
326           ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
327           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
328           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
329           break;
330         case BasicTestsQ15::TEST_NEGATE_Q15_12:
331           nb = 23;
332           ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
333           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
334           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
335           break;
336 
337         case BasicTestsQ15::TEST_OFFSET_Q15_13:
338           nb = 7;
339           ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
340           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
341           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
342           break;
343         case BasicTestsQ15::TEST_OFFSET_Q15_14:
344           nb = 16;
345           ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
346           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
347           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
348           break;
349         case BasicTestsQ15::TEST_OFFSET_Q15_15:
350           nb = 23;
351           ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
352           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
353           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
354           break;
355 
356         case BasicTestsQ15::TEST_SCALE_Q15_16:
357           nb = 7;
358           ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
359           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
360           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
361           break;
362         case BasicTestsQ15::TEST_SCALE_Q15_17:
363           nb = 16;
364           ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
365           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
366           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
367           break;
368         case BasicTestsQ15::TEST_SCALE_Q15_18:
369           nb = 23;
370           ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
371           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
372           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
373           break;
374 
375         case BasicTestsQ15::TEST_DOT_PROD_Q15_19:
376           nb = 7;
377           dotRef.reload(BasicTestsQ15::REF_DOT_3_Q15_ID,mgr);
378           dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
379           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
380           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
381           break;
382         case BasicTestsQ15::TEST_DOT_PROD_Q15_20:
383           nb = 16;
384           dotRef.reload(BasicTestsQ15::REF_DOT_4N_Q15_ID,mgr);
385           dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
386           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
387           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
388           break;
389         case BasicTestsQ15::TEST_DOT_PROD_Q15_21:
390           nb = 23;
391           dotRef.reload(BasicTestsQ15::REF_DOT_4N1_Q15_ID,mgr);
392           dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
393           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
394           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
395           break;
396 
397         case BasicTestsQ15::TEST_ABS_Q15_22:
398           nb = 7;
399           ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
400           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
401           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
402           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
403           break;
404         case BasicTestsQ15::TEST_ABS_Q15_23:
405           nb = 16;
406           ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
407           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
408           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
409           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
410           break;
411         case BasicTestsQ15::TEST_ABS_Q15_24:
412           nb = 23;
413           ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
414           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
415           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
416           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
417           break;
418 
419         case BasicTestsQ15::TEST_ADD_Q15_25:
420           input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
421           input2.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
422           ref.reload(BasicTestsQ15::REF_POSSAT_12_Q15_ID,mgr);
423           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
424         break;
425 
426         case BasicTestsQ15::TEST_ADD_Q15_26:
427           input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
428           input2.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
429           ref.reload(BasicTestsQ15::REF_NEGSAT_13_Q15_ID,mgr);
430           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
431         break;
432 
433         case BasicTestsQ15::TEST_SUB_Q15_27:
434           ref.reload(BasicTestsQ15::REF_POSSAT_14_Q15_ID,mgr);
435           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
436           input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
437           input2.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
438         break;
439 
440         case BasicTestsQ15::TEST_SUB_Q15_28:
441           ref.reload(BasicTestsQ15::REF_NEGSAT_15_Q15_ID,mgr);
442           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
443           input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
444           input2.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
445         break;
446 
447         case BasicTestsQ15::TEST_MULT_Q15_29:
448           ref.reload(BasicTestsQ15::REF_POSSAT_16_Q15_ID,mgr);
449           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
450           input1.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
451           input2.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
452         break;
453 
454         case BasicTestsQ15::TEST_NEGATE_Q15_30:
455           ref.reload(BasicTestsQ15::REF_POSSAT_17_Q15_ID,mgr);
456           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
457           input1.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
458           break;
459 
460         case BasicTestsQ15::TEST_OFFSET_Q15_31:
461           ref.reload(BasicTestsQ15::REF_POSSAT_18_Q15_ID,mgr);
462           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
463           input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
464           /* 0.9 */
465           this->scalar = 0x7333;
466           break;
467 
468         case BasicTestsQ15::TEST_OFFSET_Q15_32:
469           ref.reload(BasicTestsQ15::REF_NEGSAT_19_Q15_ID,mgr);
470           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
471           input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
472           /* -0.9 */
473           this->scalar = 0x8ccd;
474           break;
475 
476         case BasicTestsQ15::TEST_SCALE_Q15_33:
477           ref.reload(BasicTestsQ15::REF_POSSAT_20_Q15_ID,mgr);
478           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
479           input1.reload(BasicTestsQ15::MAXNEG2_Q15_ID,mgr);
480           /* Minus max*/
481           this->scalar = 0x8000;
482           break;
483 
484         case BasicTestsQ15::TEST_SHIFT_Q15_34:
485           ref.reload(BasicTestsQ15::REF_SHIFT_21_Q15_ID,mgr);
486           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
487           input1.reload(BasicTestsQ15::INPUTRAND_Q15_ID,mgr);
488         break;
489 
490         case BasicTestsQ15::TEST_SHIFT_Q15_35:
491           ref.reload(BasicTestsQ15::REF_SHIFT_POSSAT_22_Q15_ID,mgr);
492           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
493           input1.reload(BasicTestsQ15::MAXPOS_Q15_ID,mgr);
494         break;
495 
496         case BasicTestsQ15::TEST_SHIFT_Q15_36:
497           ref.reload(BasicTestsQ15::REF_SHIFT_NEGSAT_23_Q15_ID,mgr);
498           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
499           input1.reload(BasicTestsQ15::MAXNEG_Q15_ID,mgr);
500         break;
501 
502         case BasicTestsQ15::TEST_AND_U16_37:
503           nb = 7;
504           refLogical.reload(BasicTestsQ15::REF_AND_Q15_ID,mgr,nb);
505           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
506           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
507           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
508           break;
509 
510         case BasicTestsQ15::TEST_AND_U16_38:
511           nb = 16;
512           refLogical.reload(BasicTestsQ15::REF_AND_Q15_ID,mgr,nb);
513           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
514           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
515           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
516           break;
517         case BasicTestsQ15::TEST_AND_U16_39:
518           nb = 23;
519           refLogical.reload(BasicTestsQ15::REF_AND_Q15_ID,mgr,nb);
520           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
521           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
522           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
523           break;
524 
525         case BasicTestsQ15::TEST_OR_U16_40:
526           nb = 7;
527           refLogical.reload(BasicTestsQ15::REF_OR_Q15_ID,mgr,nb);
528           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
529           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
530           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
531           break;
532 
533         case BasicTestsQ15::TEST_OR_U16_41:
534           nb = 16;
535           refLogical.reload(BasicTestsQ15::REF_OR_Q15_ID,mgr,nb);
536           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
537           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
538           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
539           break;
540         case BasicTestsQ15::TEST_OR_U16_42:
541           nb = 23;
542           refLogical.reload(BasicTestsQ15::REF_OR_Q15_ID,mgr,nb);
543           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
544           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
545           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
546           break;
547 
548         case BasicTestsQ15::TEST_NOT_U16_43:
549           nb = 7;
550           refLogical.reload(BasicTestsQ15::REF_NOT_Q15_ID,mgr,nb);
551           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
552           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
553           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
554           break;
555 
556         case BasicTestsQ15::TEST_NOT_U16_44:
557           nb = 16;
558           refLogical.reload(BasicTestsQ15::REF_NOT_Q15_ID,mgr,nb);
559           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
560           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
561           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
562           break;
563         case BasicTestsQ15::TEST_NOT_U16_45:
564           nb = 23;
565           refLogical.reload(BasicTestsQ15::REF_NOT_Q15_ID,mgr,nb);
566           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
567           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
568           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
569           break;
570 
571         case BasicTestsQ15::TEST_XOR_U16_46:
572           nb = 7;
573           refLogical.reload(BasicTestsQ15::REF_XOR_Q15_ID,mgr,nb);
574           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
575           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
576           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
577           break;
578 
579         case BasicTestsQ15::TEST_XOR_U16_47:
580           nb = 16;
581           refLogical.reload(BasicTestsQ15::REF_XOR_Q15_ID,mgr,nb);
582           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
583           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
584           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
585           break;
586         case BasicTestsQ15::TEST_XOR_U16_48:
587           nb = 23;
588           refLogical.reload(BasicTestsQ15::REF_XOR_Q15_ID,mgr,nb);
589           outputLogical.create(refLogical.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
590           inputLogical1.reload(BasicTestsQ15::INPUT1_BITWISE_Q15_ID,mgr,nb);
591           inputLogical2.reload(BasicTestsQ15::INPUT2_BITWISE_Q15_ID,mgr,nb);
592           break;
593 
594         case BasicTestsQ15::TEST_ADD_Q15_49:
595              ref.reload(BasicTestsQ15::REF_ADD_Q15_ID,mgr,nb);
596              output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
597              input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
598              input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
599         break;
600 
601         case BasicTestsQ15::TEST_SUB_Q15_50:
602              ref.reload(BasicTestsQ15::REF_SUB_Q15_ID,mgr,nb);
603              output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
604              input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
605              input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
606         break;
607 
608         case BasicTestsQ15::TEST_MULT_Q15_51:
609           ref.reload(BasicTestsQ15::REF_MULT_Q15_ID,mgr,nb);
610           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
611           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
612           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
613         break;
614 
615         case BasicTestsQ15::TEST_NEGATE_Q15_52:
616           ref.reload(BasicTestsQ15::REF_NEGATE_Q15_ID,mgr,nb);
617           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
618           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
619         break;
620 
621         case BasicTestsQ15::TEST_OFFSET_Q15_53:
622           ref.reload(BasicTestsQ15::REF_OFFSET_Q15_ID,mgr,nb);
623           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
624           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
625         break;
626 
627         case BasicTestsQ15::TEST_SCALE_Q15_54:
628           ref.reload(BasicTestsQ15::REF_SCALE_Q15_ID,mgr,nb);
629           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
630           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
631         break;
632 
633         case BasicTestsQ15::TEST_DOT_PROD_Q15_55:
634           dotRef.reload(BasicTestsQ15::REF_DOT_LONG_Q15_ID,mgr);
635           dotOutput.create(dotRef.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
636           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
637           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
638         break;
639 
640         case BasicTestsQ15::TEST_ABS_Q15_56:
641           ref.reload(BasicTestsQ15::REF_ABS_Q15_ID,mgr,nb);
642           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
643           input1.reload(BasicTestsQ15::INPUT1_Q15_ID,mgr,nb);
644           input2.reload(BasicTestsQ15::INPUT2_Q15_ID,mgr,nb);
645         break;
646 
647         case BasicTestsQ15::TEST_CLIP_Q15_57:
648           ref.reload(BasicTestsQ15::REF_CLIP1_Q15_ID,mgr);
649           input1.reload(BasicTestsQ15::INPUT_CLIP_Q15_ID,mgr,ref.nbSamples());
650 
651           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
652           // Must be coherent with Python script used to generate test patterns
653           this->min=0xC000;
654           this->max=0xF333;
655         break;
656 
657         case BasicTestsQ15::TEST_CLIP_Q15_58:
658           ref.reload(BasicTestsQ15::REF_CLIP2_Q15_ID,mgr);
659           input1.reload(BasicTestsQ15::INPUT_CLIP_Q15_ID,mgr,ref.nbSamples());
660 
661           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
662           // Must be coherent with Python script used to generate test patterns
663           this->min=0xC000;
664           this->max=0x4000;
665         break;
666 
667         case BasicTestsQ15::TEST_CLIP_Q15_59:
668           ref.reload(BasicTestsQ15::REF_CLIP3_Q15_ID,mgr);
669           input1.reload(BasicTestsQ15::INPUT_CLIP_Q15_ID,mgr,ref.nbSamples());
670 
671           output.create(ref.nbSamples(),BasicTestsQ15::OUT_SAMPLES_ID,mgr);
672           // Must be coherent with Python script used to generate test patterns
673           this->min=0x0CCD;
674           this->max=0x4000;
675         break;
676 
677 
678 
679        }
680 
681 
682 
683 
684     }
685 
tearDown(Testing::testID_t id,Client::PatternMgr * mgr)686     void BasicTestsQ15::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
687     {
688        switch(id)
689        {
690          case BasicTestsQ15::TEST_DOT_PROD_Q15_19:
691          case BasicTestsQ15::TEST_DOT_PROD_Q15_20:
692          case BasicTestsQ15::TEST_DOT_PROD_Q15_21:
693          case BasicTestsQ15::TEST_DOT_PROD_Q15_55:
694             dotOutput.dump(mgr);
695          break;
696 
697          case BasicTestsQ15::TEST_AND_U16_37:
698          case BasicTestsQ15::TEST_AND_U16_38:
699          case BasicTestsQ15::TEST_AND_U16_39:
700          case BasicTestsQ15::TEST_OR_U16_40:
701          case BasicTestsQ15::TEST_OR_U16_41:
702          case BasicTestsQ15::TEST_OR_U16_42:
703          case BasicTestsQ15::TEST_NOT_U16_43:
704          case BasicTestsQ15::TEST_NOT_U16_44:
705          case BasicTestsQ15::TEST_NOT_U16_45:
706          case BasicTestsQ15::TEST_XOR_U16_46:
707          case BasicTestsQ15::TEST_XOR_U16_47:
708          case BasicTestsQ15::TEST_XOR_U16_48:
709            outputLogical.dump(mgr);
710          break;
711 
712          default:
713             output.dump(mgr);
714        }
715 
716 
717     }
718