1 #include "BasicTestsQ7.h"
2 #include <stdio.h>
3 #include "Error.h"
4 
5 #define SNR_THRESHOLD 20
6 
7 #define ABS_ERROR_Q7 ((q7_t)2)
8 #define ABS_ERROR_Q31 ((q31_t)(1<<15))
9 
10 #define ONEHALF 0x40
11 
12 #define GET_Q7_PTR() \
13 const q7_t *inp1=input1.ptr(); \
14 const q7_t *inp2=input2.ptr(); \
15 q7_t *outp=output.ptr();
16 
17 #define GET_LOGICAL_UINT8_PTR() \
18 const uint8_t *inp1=inputLogical1.ptr(); \
19 const uint8_t *inp2=inputLogical2.ptr(); \
20 uint8_t *outp=outputLogical.ptr();
21 
test_add_q7()22     void BasicTestsQ7::test_add_q7()
23     {
24         GET_Q7_PTR();
25 
26         arm_add_q7(inp1,inp2,outp,input1.nbSamples());
27 
28         ASSERT_EMPTY_TAIL(output);
29 
30         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
31 
32         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
33 
34     }
35 
test_clip_q7()36     void BasicTestsQ7::test_clip_q7()
37     {
38         const q7_t *inp=input1.ptr();
39         q7_t *outp=output.ptr();
40 
41         arm_clip_q7(inp,outp,this->min, this->max,input1.nbSamples());
42 
43         ASSERT_EMPTY_TAIL(output);
44 
45         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
46 
47         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
48 
49     }
50 
test_sub_q7()51     void BasicTestsQ7::test_sub_q7()
52     {
53         GET_Q7_PTR();
54 
55         arm_sub_q7(inp1,inp2,outp,input1.nbSamples());
56 
57         ASSERT_EMPTY_TAIL(output);
58 
59         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
60 
61         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
62 
63     }
64 
test_mult_q7()65     void BasicTestsQ7::test_mult_q7()
66     {
67         GET_Q7_PTR();
68 
69         arm_mult_q7(inp1,inp2,outp,input1.nbSamples());
70 
71         ASSERT_EMPTY_TAIL(output);
72 
73         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
74 
75         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
76 
77     }
78 
79     /*
80 
81     This test is run on a very short signal (3 samples).
82     It is too short for a good SNR estimation.
83     So, SNR is artificially decreased a little just for this test.
84 
85     */
test_mult_short_q7()86     void BasicTestsQ7::test_mult_short_q7()
87     {
88         GET_Q7_PTR();
89 
90         arm_mult_q7(inp1,inp2,outp,input1.nbSamples());
91 
92         ASSERT_EMPTY_TAIL(output);
93 
94         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD - 1.0f);
95 
96         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
97 
98     }
99 
test_negate_q7()100     void BasicTestsQ7::test_negate_q7()
101     {
102         const q7_t *inp1=input1.ptr();
103         q7_t *outp=output.ptr();
104 
105         arm_negate_q7(inp1,outp,input1.nbSamples());
106 
107         ASSERT_EMPTY_TAIL(output);
108 
109         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
110 
111         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
112 
113     }
114 
test_offset_q7()115     void BasicTestsQ7::test_offset_q7()
116     {
117         const q7_t *inp1=input1.ptr();
118         q7_t *outp=output.ptr();
119 
120         arm_offset_q7(inp1,this->scalar,outp,input1.nbSamples());
121 
122         ASSERT_EMPTY_TAIL(output);
123 
124         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
125 
126         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
127 
128     }
129 
test_scale_q7()130     void BasicTestsQ7::test_scale_q7()
131     {
132         const q7_t *inp1=input1.ptr();
133         q7_t *outp=output.ptr();
134 
135         arm_scale_q7(inp1,this->scalar,0,outp,input1.nbSamples());
136 
137         ASSERT_EMPTY_TAIL(output);
138 
139         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
140 
141         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
142 
143     }
144 
test_dot_prod_q7()145     void BasicTestsQ7::test_dot_prod_q7()
146     {
147         q31_t r;
148 
149         const q7_t *inp1=input1.ptr();
150         const q7_t *inp2=input2.ptr();
151         q31_t *outp=dotOutput.ptr();
152 
153         arm_dot_prod_q7(inp1,inp2,input1.nbSamples(),&r);
154 
155         outp[0] = r;
156 
157         ASSERT_SNR(dotOutput,dotRef,(float32_t)SNR_THRESHOLD);
158 
159         ASSERT_NEAR_EQ(dotOutput,dotRef,ABS_ERROR_Q31);
160 
161         ASSERT_EMPTY_TAIL(dotOutput);
162 
163 
164     }
165 
test_abs_q7()166     void BasicTestsQ7::test_abs_q7()
167     {
168         GET_Q7_PTR();
169 
170         (void)inp2;
171 
172         arm_abs_q7(inp1,outp,input1.nbSamples());
173 
174         ASSERT_EMPTY_TAIL(output);
175 
176         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
177 
178         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
179 
180     }
181 
test_shift_q7()182     void BasicTestsQ7::test_shift_q7()
183     {
184         const q7_t *inp1=input1.ptr();
185         q7_t *outp=output.ptr();
186 
187         arm_shift_q7(inp1,1,outp,input1.nbSamples());
188 
189         ASSERT_EMPTY_TAIL(output);
190 
191         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
192 
193         ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
194 
195     }
196 
test_and_u8()197     void BasicTestsQ7::test_and_u8()
198     {
199 
200         GET_LOGICAL_UINT8_PTR();
201 
202 
203         arm_and_u8(inp1,inp2,outp,inputLogical1.nbSamples());
204 
205         ASSERT_EMPTY_TAIL(outputLogical);
206 
207         ASSERT_EQ(outputLogical, refLogical);
208 
209 
210     }
211 
test_or_u8()212     void BasicTestsQ7::test_or_u8()
213     {
214         GET_LOGICAL_UINT8_PTR();
215 
216         arm_or_u8(inp1,inp2,outp,inputLogical1.nbSamples());
217 
218         ASSERT_EMPTY_TAIL(outputLogical);
219 
220         ASSERT_EQ(outputLogical, refLogical);
221 
222     }
223 
test_not_u8()224     void BasicTestsQ7::test_not_u8()
225     {
226         GET_LOGICAL_UINT8_PTR();
227 
228         (void)inp2;
229 
230         arm_not_u8(inp1,outp,inputLogical1.nbSamples());
231 
232         ASSERT_EMPTY_TAIL(outputLogical);
233 
234         ASSERT_EQ(outputLogical, refLogical);
235 
236     }
237 
test_xor_u8()238     void BasicTestsQ7::test_xor_u8()
239     {
240         GET_LOGICAL_UINT8_PTR();
241 
242         arm_xor_u8(inp1,inp2,outp,inputLogical1.nbSamples());
243 
244         ASSERT_EMPTY_TAIL(outputLogical);
245 
246         ASSERT_EQ(outputLogical, refLogical);
247 
248     }
249 
setUp(Testing::testID_t id,std::vector<Testing::param_t> & params,Client::PatternMgr * mgr)250     void BasicTestsQ7::setUp(Testing::testID_t id,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
251     {
252 
253        Testing::nbSamples_t nb=MAX_NB_SAMPLES;
254 
255        this->scalar = ONEHALF;
256 
257        (void)params;
258 
259 
260        switch(id)
261        {
262         case BasicTestsQ7::TEST_ADD_Q7_1:
263           nb = 15;
264           ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
265           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
266           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
267           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
268           break;
269 
270         case BasicTestsQ7::TEST_ADD_Q7_2:
271           nb = 32;
272           ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
273           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
274           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
275           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
276           break;
277         case BasicTestsQ7::TEST_ADD_Q7_3:
278           nb = 47;
279           ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
280           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
281           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
282           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
283           break;
284 
285 
286         case BasicTestsQ7::TEST_SUB_Q7_4:
287           nb = 15;
288           ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
289           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
290           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
291           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
292           break;
293         case BasicTestsQ7::TEST_SUB_Q7_5:
294           nb = 32;
295           ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
296           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
297           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
298           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
299           break;
300         case BasicTestsQ7::TEST_SUB_Q7_6:
301           nb = 47;
302           ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
303           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
304           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
305           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
306           break;
307 
308         case BasicTestsQ7::TEST_MULT_SHORT_Q7_7:
309           nb = 15;
310           ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
311           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
312           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
313           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
314           break;
315         case BasicTestsQ7::TEST_MULT_Q7_8:
316           nb = 32;
317           ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
318           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
319           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
320           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
321           break;
322         case BasicTestsQ7::TEST_MULT_Q7_9:
323           nb = 47;
324           ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
325           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
326           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
327           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
328           break;
329 
330         case BasicTestsQ7::TEST_NEGATE_Q7_10:
331           nb = 15;
332           ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
333           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
334           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
335           break;
336         case BasicTestsQ7::TEST_NEGATE_Q7_11:
337           nb = 32;
338           ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
339           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
340           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
341           break;
342         case BasicTestsQ7::TEST_NEGATE_Q7_12:
343           nb = 47;
344           ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
345           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
346           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
347           break;
348 
349         case BasicTestsQ7::TEST_OFFSET_Q7_13:
350           nb = 15;
351           ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
352           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
353           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
354           break;
355         case BasicTestsQ7::TEST_OFFSET_Q7_14:
356           nb = 32;
357           ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
358           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
359           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
360           break;
361         case BasicTestsQ7::TEST_OFFSET_Q7_15:
362           nb = 47;
363           ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
364           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
365           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
366           break;
367 
368         case BasicTestsQ7::TEST_SCALE_Q7_16:
369           nb = 15;
370           ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
371           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
372           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
373           break;
374         case BasicTestsQ7::TEST_SCALE_Q7_17:
375           nb = 32;
376           ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
377           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
378           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
379           break;
380         case BasicTestsQ7::TEST_SCALE_Q7_18:
381           nb = 47;
382           ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
383           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
384           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
385           break;
386 
387         case BasicTestsQ7::TEST_DOT_PROD_Q7_19:
388           nb = 15;
389           dotRef.reload(BasicTestsQ7::REF_DOT_3_Q7_ID,mgr);
390           dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
391           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
392           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
393           break;
394         case BasicTestsQ7::TEST_DOT_PROD_Q7_20:
395           nb = 32;
396           dotRef.reload(BasicTestsQ7::REF_DOT_4N_Q7_ID,mgr);
397           dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
398           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
399           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
400           break;
401         case BasicTestsQ7::TEST_DOT_PROD_Q7_21:
402           nb = 47;
403           dotRef.reload(BasicTestsQ7::REF_DOT_4N1_Q7_ID,mgr);
404           dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
405           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
406           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
407           break;
408 
409         case BasicTestsQ7::TEST_ABS_Q7_22:
410           nb = 15;
411           ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
412           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
413           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
414           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
415           break;
416         case BasicTestsQ7::TEST_ABS_Q7_23:
417           nb = 32;
418           ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
419           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
420           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
421           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
422           break;
423         case BasicTestsQ7::TEST_ABS_Q7_24:
424           nb = 47;
425           ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
426           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
427           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
428           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
429           break;
430 
431         case BasicTestsQ7::TEST_ADD_Q7_25:
432           input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
433           input2.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
434           ref.reload(BasicTestsQ7::REF_POSSAT_12_Q7_ID,mgr);
435           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
436         break;
437 
438         case BasicTestsQ7::TEST_ADD_Q7_26:
439           input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
440           input2.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
441           ref.reload(BasicTestsQ7::REF_NEGSAT_13_Q7_ID,mgr);
442           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
443         break;
444 
445         case BasicTestsQ7::TEST_SUB_Q7_27:
446           ref.reload(BasicTestsQ7::REF_POSSAT_14_Q7_ID,mgr);
447           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
448           input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
449           input2.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
450         break;
451 
452         case BasicTestsQ7::TEST_SUB_Q7_28:
453           ref.reload(BasicTestsQ7::REF_NEGSAT_15_Q7_ID,mgr);
454           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
455           input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
456           input2.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
457         break;
458 
459         case BasicTestsQ7::TEST_MULT_Q7_29:
460           ref.reload(BasicTestsQ7::REF_POSSAT_16_Q7_ID,mgr);
461           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
462           input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
463           input2.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
464         break;
465 
466         case BasicTestsQ7::TEST_NEGATE_Q7_30:
467           ref.reload(BasicTestsQ7::REF_POSSAT_17_Q7_ID,mgr);
468           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
469           input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
470           break;
471 
472         case BasicTestsQ7::TEST_OFFSET_Q7_31:
473           ref.reload(BasicTestsQ7::REF_POSSAT_18_Q7_ID,mgr);
474           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
475           input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
476           /* 0.9 */
477           this->scalar = 0x73;
478           break;
479 
480         case BasicTestsQ7::TEST_OFFSET_Q7_32:
481           ref.reload(BasicTestsQ7::REF_NEGSAT_19_Q7_ID,mgr);
482           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
483           input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
484           /* -0.9 */
485           this->scalar = 0x8d;
486           break;
487 
488         case BasicTestsQ7::TEST_SCALE_Q7_33:
489           ref.reload(BasicTestsQ7::REF_POSSAT_20_Q7_ID,mgr);
490           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
491           input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
492           /* Minus max*/
493           this->scalar = 0x80;
494           break;
495 
496         case BasicTestsQ7::TEST_SHIFT_Q7_34:
497           ref.reload(BasicTestsQ7::REF_SHIFT_21_Q7_ID,mgr);
498           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
499           input1.reload(BasicTestsQ7::INPUTRAND_Q7_ID,mgr);
500         break;
501 
502         case BasicTestsQ7::TEST_SHIFT_Q7_35:
503           ref.reload(BasicTestsQ7::REF_SHIFT_POSSAT_22_Q7_ID,mgr);
504           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
505           input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
506         break;
507 
508         case BasicTestsQ7::TEST_SHIFT_Q7_36:
509           ref.reload(BasicTestsQ7::REF_SHIFT_NEGSAT_23_Q7_ID,mgr);
510           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
511           input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
512         break;
513 
514         case BasicTestsQ7::TEST_AND_U8_37:
515           nb = 15;
516           refLogical.reload(BasicTestsQ7::REF_AND_Q7_ID,mgr,nb);
517           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
518           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
519           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
520           break;
521 
522         case BasicTestsQ7::TEST_AND_U8_38:
523           nb = 32;
524           refLogical.reload(BasicTestsQ7::REF_AND_Q7_ID,mgr,nb);
525           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
526           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
527           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
528           break;
529         case BasicTestsQ7::TEST_AND_U8_39:
530           nb = 47;
531           refLogical.reload(BasicTestsQ7::REF_AND_Q7_ID,mgr,nb);
532           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
533           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
534           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
535           break;
536 
537         case BasicTestsQ7::TEST_OR_U8_40:
538           nb = 15;
539           refLogical.reload(BasicTestsQ7::REF_OR_Q7_ID,mgr,nb);
540           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
541           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
542           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
543           break;
544 
545         case BasicTestsQ7::TEST_OR_U8_41:
546           nb = 32;
547           refLogical.reload(BasicTestsQ7::REF_OR_Q7_ID,mgr,nb);
548           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
549           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
550           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
551           break;
552         case BasicTestsQ7::TEST_OR_U8_42:
553           nb = 47;
554           refLogical.reload(BasicTestsQ7::REF_OR_Q7_ID,mgr,nb);
555           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
556           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
557           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
558           break;
559 
560         case BasicTestsQ7::TEST_NOT_U8_43:
561           nb = 15;
562           refLogical.reload(BasicTestsQ7::REF_NOT_Q7_ID,mgr,nb);
563           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
564           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
565           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
566           break;
567 
568         case BasicTestsQ7::TEST_NOT_U8_44:
569           nb = 32;
570           refLogical.reload(BasicTestsQ7::REF_NOT_Q7_ID,mgr,nb);
571           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
572           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
573           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
574           break;
575         case BasicTestsQ7::TEST_NOT_U8_45:
576           nb = 47;
577           refLogical.reload(BasicTestsQ7::REF_NOT_Q7_ID,mgr,nb);
578           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
579           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
580           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
581           break;
582 
583         case BasicTestsQ7::TEST_XOR_U8_46:
584           nb = 15;
585           refLogical.reload(BasicTestsQ7::REF_XOR_Q7_ID,mgr,nb);
586           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
587           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
588           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
589           break;
590 
591         case BasicTestsQ7::TEST_XOR_U8_47:
592           nb = 32;
593           refLogical.reload(BasicTestsQ7::REF_XOR_Q7_ID,mgr,nb);
594           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
595           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
596           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
597           break;
598         case BasicTestsQ7::TEST_XOR_U8_48:
599           nb = 47;
600           refLogical.reload(BasicTestsQ7::REF_XOR_Q7_ID,mgr,nb);
601           outputLogical.create(refLogical.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
602           inputLogical1.reload(BasicTestsQ7::INPUT1_BITWISE_Q7_ID,mgr,nb);
603           inputLogical2.reload(BasicTestsQ7::INPUT2_BITWISE_Q7_ID,mgr,nb);
604           break;
605 
606         case BasicTestsQ7::TEST_ADD_Q7_49:
607           ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
608           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
609           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
610           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
611         break;
612 
613         case BasicTestsQ7::TEST_SUB_Q7_50:
614           ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
615           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
616           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
617           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
618         break;
619 
620         case BasicTestsQ7::TEST_MULT_Q7_51:
621           ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
622           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
623           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
624           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
625         break;
626 
627         case BasicTestsQ7::TEST_NEGATE_Q7_52:
628           ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
629           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
630           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
631         break;
632 
633         case BasicTestsQ7::TEST_OFFSET_Q7_53:
634           ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
635           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
636           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
637         break;
638 
639         case BasicTestsQ7::TEST_SCALE_Q7_54:
640           ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
641           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
642           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
643         break;
644 
645         case BasicTestsQ7::TEST_DOT_PROD_Q7_55:
646           dotRef.reload(BasicTestsQ7::REF_DOT_LONG_Q7_ID,mgr);
647           dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
648           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
649           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
650         break;
651 
652         case BasicTestsQ7::TEST_ABS_Q7_56:
653           ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
654           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
655           input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
656           input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
657         break;
658 
659         case BasicTestsQ7::TEST_CLIP_Q7_57:
660           ref.reload(BasicTestsQ7::REF_CLIP1_Q7_ID,mgr);
661           input1.reload(BasicTestsQ7::INPUT_CLIP_Q7_ID,mgr,ref.nbSamples());
662 
663           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
664           // Must be coherent with Python script used to generate test patterns
665           this->min=0xC0;
666           this->max=0xF3;
667         break;
668 
669         case BasicTestsQ7::TEST_CLIP_Q7_58:
670           ref.reload(BasicTestsQ7::REF_CLIP2_Q7_ID,mgr);
671           input1.reload(BasicTestsQ7::INPUT_CLIP_Q7_ID,mgr,ref.nbSamples());
672 
673           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
674           // Must be coherent with Python script used to generate test patterns
675           this->min=0xC0;
676           this->max=0x40;
677         break;
678 
679         case BasicTestsQ7::TEST_CLIP_Q7_59:
680           ref.reload(BasicTestsQ7::REF_CLIP3_Q7_ID,mgr);
681           input1.reload(BasicTestsQ7::INPUT_CLIP_Q7_ID,mgr,ref.nbSamples());
682 
683           output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_ID,mgr);
684           // Must be coherent with Python script used to generate test patterns
685           this->min=0x0D;
686           this->max=0x40;
687         break;
688 
689 
690 
691        }
692 
693 
694 
695 
696     }
697 
tearDown(Testing::testID_t id,Client::PatternMgr * mgr)698     void BasicTestsQ7::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
699     {
700        switch(id)
701        {
702          case BasicTestsQ7::TEST_DOT_PROD_Q7_19:
703          case BasicTestsQ7::TEST_DOT_PROD_Q7_20:
704          case BasicTestsQ7::TEST_DOT_PROD_Q7_21:
705          case BasicTestsQ7::TEST_DOT_PROD_Q7_55:
706             dotOutput.dump(mgr);
707          break;
708 
709          case BasicTestsQ7::TEST_AND_U8_37:
710          case BasicTestsQ7::TEST_AND_U8_38:
711          case BasicTestsQ7::TEST_AND_U8_39:
712          case BasicTestsQ7::TEST_OR_U8_40:
713          case BasicTestsQ7::TEST_OR_U8_41:
714          case BasicTestsQ7::TEST_OR_U8_42:
715          case BasicTestsQ7::TEST_NOT_U8_43:
716          case BasicTestsQ7::TEST_NOT_U8_44:
717          case BasicTestsQ7::TEST_NOT_U8_45:
718          case BasicTestsQ7::TEST_XOR_U8_46:
719          case BasicTestsQ7::TEST_XOR_U8_47:
720          case BasicTestsQ7::TEST_XOR_U8_48:
721             outputLogical.dump(mgr);
722          break;
723 
724          default:
725             output.dump(mgr);
726        }
727 
728 
729     }
730