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