1 #include "StatsTestsQ15.h" 2 #include <stdio.h> 3 #include "Error.h" 4 #include "Test.h" 5 6 //#include <cstdio> 7 8 #define SNR_THRESHOLD 50 9 #define SNR_THRESHOLD_MSE 50 10 11 /* 12 13 Reference patterns are generated with 14 a double precision computation. 15 16 */ 17 #define ABS_ERROR_Q15 ((q15_t)100) 18 #define ABS_ERROR_Q15_MSE ((q15_t)100) 19 20 #define ABS_ERROR_Q63 (1<<17) 21 test_max_q15()22 void StatsTestsQ15::test_max_q15() 23 { 24 const q15_t *inp = inputA.ptr(); 25 26 q15_t result; 27 uint32_t indexval; 28 29 q15_t *refp = ref.ptr(); 30 int16_t *refind = maxIndexes.ptr(); 31 32 q15_t *outp = output.ptr(); 33 int16_t *ind = index.ptr(); 34 35 arm_max_q15(inp, 36 inputA.nbSamples(), 37 &result, 38 &indexval); 39 40 outp[0] = result; 41 ind[0] = indexval; 42 43 ASSERT_EQ(result,refp[this->refOffset]); 44 ASSERT_EQ((int16_t)indexval,refind[this->refOffset]); 45 46 } 47 test_max_no_idx_q15()48 void StatsTestsQ15::test_max_no_idx_q15() 49 { 50 const q15_t *inp = inputA.ptr(); 51 52 q15_t result; 53 54 q15_t *refp = ref.ptr(); 55 56 q15_t *outp = output.ptr(); 57 58 arm_max_no_idx_q15(inp, 59 inputA.nbSamples(), 60 &result); 61 62 outp[0] = result; 63 64 ASSERT_EQ(result,refp[this->refOffset]); 65 66 } 67 test_absmax_no_idx_q15()68 void StatsTestsQ15::test_absmax_no_idx_q15() 69 { 70 const q15_t *inp = inputA.ptr(); 71 72 q15_t result; 73 74 q15_t *refp = ref.ptr(); 75 76 q15_t *outp = output.ptr(); 77 78 arm_absmax_no_idx_q15(inp, 79 inputA.nbSamples(), 80 &result); 81 82 outp[0] = result; 83 84 ASSERT_EQ(result,refp[this->refOffset]); 85 86 } 87 test_absmax_q15()88 void StatsTestsQ15::test_absmax_q15() 89 { 90 const q15_t *inp = inputA.ptr(); 91 92 q15_t result; 93 uint32_t indexval; 94 95 q15_t *refp = ref.ptr(); 96 int16_t *refind = maxIndexes.ptr(); 97 98 q15_t *outp = output.ptr(); 99 int16_t *ind = index.ptr(); 100 101 arm_absmax_q15(inp, 102 inputA.nbSamples(), 103 &result, 104 &indexval); 105 106 outp[0] = result; 107 ind[0] = indexval; 108 109 ASSERT_EQ(result,refp[this->refOffset]); 110 ASSERT_EQ((int16_t)indexval,refind[this->refOffset]); 111 112 } 113 test_min_q15()114 void StatsTestsQ15::test_min_q15() 115 { 116 const q15_t *inp = inputA.ptr(); 117 118 q15_t result; 119 uint32_t indexval; 120 121 q15_t *refp = ref.ptr(); 122 int16_t *refind = minIndexes.ptr(); 123 124 q15_t *outp = output.ptr(); 125 int16_t *ind = index.ptr(); 126 127 arm_min_q15(inp, 128 inputA.nbSamples(), 129 &result, 130 &indexval); 131 132 outp[0] = result; 133 ind[0] = indexval; 134 135 ASSERT_EQ(result,refp[this->refOffset]); 136 ASSERT_EQ((int16_t)indexval,refind[this->refOffset]); 137 138 } 139 test_min_no_idx_q15()140 void StatsTestsQ15::test_min_no_idx_q15() 141 { 142 const q15_t *inp = inputA.ptr(); 143 144 q15_t result; 145 146 q15_t *refp = ref.ptr(); 147 148 q15_t *outp = output.ptr(); 149 150 arm_min_no_idx_q15(inp, 151 inputA.nbSamples(), 152 &result); 153 154 outp[0] = result; 155 156 ASSERT_EQ(result,refp[this->refOffset]); 157 158 } 159 test_absmin_no_idx_q15()160 void StatsTestsQ15::test_absmin_no_idx_q15() 161 { 162 const q15_t *inp = inputA.ptr(); 163 164 q15_t result; 165 166 q15_t *refp = ref.ptr(); 167 168 q15_t *outp = output.ptr(); 169 170 arm_absmin_no_idx_q15(inp, 171 inputA.nbSamples(), 172 &result); 173 174 outp[0] = result; 175 176 ASSERT_EQ(result,refp[this->refOffset]); 177 178 } 179 test_absmin_q15()180 void StatsTestsQ15::test_absmin_q15() 181 { 182 const q15_t *inp = inputA.ptr(); 183 184 q15_t result; 185 uint32_t indexval; 186 187 q15_t *refp = ref.ptr(); 188 int16_t *refind = minIndexes.ptr(); 189 190 q15_t *outp = output.ptr(); 191 int16_t *ind = index.ptr(); 192 193 arm_absmin_q15(inp, 194 inputA.nbSamples(), 195 &result, 196 &indexval); 197 198 outp[0] = result; 199 ind[0] = indexval; 200 201 ASSERT_EQ(result,refp[this->refOffset]); 202 ASSERT_EQ((int16_t)indexval,refind[this->refOffset]); 203 204 } 205 test_mean_q15()206 void StatsTestsQ15::test_mean_q15() 207 { 208 const q15_t *inp = inputA.ptr(); 209 210 q15_t result; 211 212 q15_t *refp = ref.ptr(); 213 214 q15_t *outp = output.ptr(); 215 216 arm_mean_q15(inp, 217 inputA.nbSamples(), 218 &result); 219 220 outp[0] = result; 221 222 ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD); 223 224 ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q15); 225 226 } 227 test_power_q15()228 void StatsTestsQ15::test_power_q15() 229 { 230 const q15_t *inp = inputA.ptr(); 231 232 q63_t result; 233 234 q63_t *refp = refPower.ptr(); 235 236 q63_t *outp = outputPower.ptr(); 237 238 arm_power_q15(inp, 239 inputA.nbSamples(), 240 &result); 241 242 outp[0] = result; 243 244 ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD); 245 246 ASSERT_NEAR_EQ(result,refp[this->refOffset],(q63_t)ABS_ERROR_Q63); 247 248 } 249 test_rms_q15()250 void StatsTestsQ15::test_rms_q15() 251 { 252 const q15_t *inp = inputA.ptr(); 253 254 q15_t result; 255 256 q15_t *refp = ref.ptr(); 257 258 q15_t *outp = output.ptr(); 259 260 arm_rms_q15(inp, 261 inputA.nbSamples(), 262 &result); 263 264 outp[0] = result; 265 266 ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD); 267 268 ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q15); 269 270 } 271 test_std_q15()272 void StatsTestsQ15::test_std_q15() 273 { 274 const q15_t *inp = inputA.ptr(); 275 276 q15_t result; 277 278 q15_t *refp = ref.ptr(); 279 280 q15_t *outp = output.ptr(); 281 282 arm_std_q15(inp, 283 inputA.nbSamples(), 284 &result); 285 286 outp[0] = result; 287 288 ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD); 289 290 ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q15); 291 292 } 293 test_var_q15()294 void StatsTestsQ15::test_var_q15() 295 { 296 const q15_t *inp = inputA.ptr(); 297 298 q15_t result; 299 300 q15_t *refp = ref.ptr(); 301 302 q15_t *outp = output.ptr(); 303 304 arm_var_q15(inp, 305 inputA.nbSamples(), 306 &result); 307 308 outp[0] = result; 309 310 ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD); 311 312 ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q15); 313 314 } 315 316 test_mse_q15()317 void StatsTestsQ15::test_mse_q15() 318 { 319 const q15_t *inpA = inputA.ptr(); 320 const q15_t *inpB = inputB.ptr(); 321 322 q15_t result; 323 324 q15_t *refp = ref.ptr(); 325 326 q15_t *outp = output.ptr(); 327 328 arm_mse_q15(inpA,inpB, 329 inputA.nbSamples(), 330 &result); 331 332 outp[0] = result; 333 334 ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD_MSE); 335 336 ASSERT_NEAR_EQ(result,refp[this->refOffset],(q15_t)ABS_ERROR_Q15_MSE); 337 338 } 339 340 setUp(Testing::testID_t id,std::vector<Testing::param_t> & paramsArgs,Client::PatternMgr * mgr)341 void StatsTestsQ15::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr) 342 { 343 (void)paramsArgs; 344 switch(id) 345 { 346 case StatsTestsQ15::TEST_MAX_Q15_1: 347 { 348 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7); 349 350 maxIndexes.reload(StatsTestsQ15::MAXINDEXES_S16_ID,mgr); 351 ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr); 352 353 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 354 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 355 356 refOffset = 0; 357 } 358 break; 359 360 case StatsTestsQ15::TEST_MAX_Q15_2: 361 { 362 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16); 363 364 maxIndexes.reload(StatsTestsQ15::MAXINDEXES_S16_ID,mgr); 365 ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr); 366 367 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 368 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 369 370 refOffset = 1; 371 } 372 break; 373 374 case StatsTestsQ15::TEST_MAX_Q15_3: 375 { 376 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23); 377 378 maxIndexes.reload(StatsTestsQ15::MAXINDEXES_S16_ID,mgr); 379 ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr); 380 381 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 382 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 383 384 refOffset = 2; 385 } 386 break; 387 388 case StatsTestsQ15::TEST_MEAN_Q15_4: 389 { 390 inputA.reload(StatsTestsQ15::INPUT2_Q15_ID,mgr,7); 391 392 ref.reload(StatsTestsQ15::MEANVALS_Q15_ID,mgr); 393 394 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 395 396 refOffset = 0; 397 } 398 break; 399 400 case StatsTestsQ15::TEST_MEAN_Q15_5: 401 { 402 inputA.reload(StatsTestsQ15::INPUT2_Q15_ID,mgr,16); 403 404 ref.reload(StatsTestsQ15::MEANVALS_Q15_ID,mgr); 405 406 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 407 408 refOffset = 1; 409 } 410 break; 411 412 case StatsTestsQ15::TEST_MEAN_Q15_6: 413 { 414 inputA.reload(StatsTestsQ15::INPUT2_Q15_ID,mgr,23); 415 416 ref.reload(StatsTestsQ15::MEANVALS_Q15_ID,mgr); 417 418 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 419 420 refOffset = 2; 421 } 422 break; 423 424 case StatsTestsQ15::TEST_MIN_Q15_7: 425 { 426 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7); 427 428 minIndexes.reload(StatsTestsQ15::MININDEXES_S16_ID,mgr); 429 ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr); 430 431 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 432 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 433 434 refOffset = 0; 435 } 436 break; 437 438 case StatsTestsQ15::TEST_MIN_Q15_8: 439 { 440 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16); 441 442 minIndexes.reload(StatsTestsQ15::MININDEXES_S16_ID,mgr); 443 ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr); 444 445 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 446 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 447 448 refOffset = 1; 449 } 450 break; 451 452 case StatsTestsQ15::TEST_MIN_Q15_9: 453 { 454 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23); 455 456 minIndexes.reload(StatsTestsQ15::MININDEXES_S16_ID,mgr); 457 ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr); 458 459 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 460 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 461 462 refOffset = 2; 463 } 464 break; 465 466 case StatsTestsQ15::TEST_POWER_Q15_10: 467 { 468 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7); 469 470 refPower.reload(StatsTestsQ15::POWERVALS_Q63_ID,mgr); 471 472 outputPower.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 473 474 refOffset = 0; 475 } 476 break; 477 478 case StatsTestsQ15::TEST_POWER_Q15_11: 479 { 480 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16); 481 482 refPower.reload(StatsTestsQ15::POWERVALS_Q63_ID,mgr); 483 484 outputPower.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 485 486 refOffset = 1; 487 } 488 break; 489 490 case StatsTestsQ15::TEST_POWER_Q15_12: 491 { 492 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23); 493 494 refPower.reload(StatsTestsQ15::POWERVALS_Q63_ID,mgr); 495 496 outputPower.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 497 498 refOffset = 2; 499 } 500 break; 501 502 case StatsTestsQ15::TEST_RMS_Q15_13: 503 { 504 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7); 505 506 ref.reload(StatsTestsQ15::RMSVALS_Q15_ID,mgr); 507 508 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 509 510 refOffset = 0; 511 } 512 break; 513 514 case StatsTestsQ15::TEST_RMS_Q15_14: 515 { 516 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16); 517 518 ref.reload(StatsTestsQ15::RMSVALS_Q15_ID,mgr); 519 520 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 521 522 refOffset = 1; 523 } 524 break; 525 526 case StatsTestsQ15::TEST_RMS_Q15_15: 527 { 528 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23); 529 530 ref.reload(StatsTestsQ15::RMSVALS_Q15_ID,mgr); 531 532 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 533 534 refOffset = 2; 535 } 536 break; 537 538 case StatsTestsQ15::TEST_STD_Q15_16: 539 { 540 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7); 541 542 ref.reload(StatsTestsQ15::STDVALS_Q15_ID,mgr); 543 544 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 545 546 refOffset = 0; 547 } 548 break; 549 550 case StatsTestsQ15::TEST_STD_Q15_17: 551 { 552 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16); 553 554 ref.reload(StatsTestsQ15::STDVALS_Q15_ID,mgr); 555 556 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 557 558 refOffset = 1; 559 } 560 break; 561 562 case StatsTestsQ15::TEST_STD_Q15_18: 563 { 564 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23); 565 566 ref.reload(StatsTestsQ15::STDVALS_Q15_ID,mgr); 567 568 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 569 570 refOffset = 2; 571 } 572 break; 573 574 case StatsTestsQ15::TEST_VAR_Q15_19: 575 { 576 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7); 577 578 ref.reload(StatsTestsQ15::VARVALS_Q15_ID,mgr); 579 580 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 581 582 refOffset = 0; 583 } 584 break; 585 586 case StatsTestsQ15::TEST_VAR_Q15_20: 587 { 588 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16); 589 590 ref.reload(StatsTestsQ15::VARVALS_Q15_ID,mgr); 591 592 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 593 594 refOffset = 1; 595 } 596 break; 597 598 case StatsTestsQ15::TEST_VAR_Q15_21: 599 { 600 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23); 601 602 ref.reload(StatsTestsQ15::VARVALS_Q15_ID,mgr); 603 604 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 605 606 refOffset = 2; 607 } 608 break; 609 610 case StatsTestsQ15::TEST_ABSMAX_Q15_22: 611 { 612 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,7); 613 614 maxIndexes.reload(StatsTestsQ15::ABSMAXINDEXES_S16_ID,mgr); 615 ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr); 616 617 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 618 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 619 620 refOffset = 0; 621 } 622 break; 623 624 case StatsTestsQ15::TEST_ABSMAX_Q15_23: 625 { 626 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,16); 627 628 maxIndexes.reload(StatsTestsQ15::ABSMAXINDEXES_S16_ID,mgr); 629 ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr); 630 631 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 632 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 633 634 refOffset = 1; 635 } 636 break; 637 638 case StatsTestsQ15::TEST_ABSMAX_Q15_24: 639 { 640 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,23); 641 642 maxIndexes.reload(StatsTestsQ15::ABSMAXINDEXES_S16_ID,mgr); 643 ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr); 644 645 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 646 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 647 648 refOffset = 2; 649 } 650 break; 651 652 case StatsTestsQ15::TEST_ABSMIN_Q15_25: 653 { 654 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,7); 655 656 minIndexes.reload(StatsTestsQ15::ABSMININDEXES_S16_ID,mgr); 657 ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr); 658 659 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 660 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 661 662 refOffset = 0; 663 } 664 break; 665 666 case StatsTestsQ15::TEST_ABSMIN_Q15_26: 667 { 668 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,16); 669 670 minIndexes.reload(StatsTestsQ15::ABSMININDEXES_S16_ID,mgr); 671 ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr); 672 673 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 674 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 675 676 refOffset = 1; 677 } 678 break; 679 680 case StatsTestsQ15::TEST_ABSMIN_Q15_27: 681 { 682 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,23); 683 684 minIndexes.reload(StatsTestsQ15::ABSMININDEXES_S16_ID,mgr); 685 ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr); 686 687 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 688 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 689 690 refOffset = 2; 691 } 692 break; 693 694 case StatsTestsQ15::TEST_MAX_NO_IDX_Q15_28: 695 { 696 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7); 697 698 ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr); 699 700 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 701 702 refOffset = 0; 703 } 704 break; 705 706 case StatsTestsQ15::TEST_MAX_NO_IDX_Q15_29: 707 { 708 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16); 709 710 ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr); 711 712 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 713 714 refOffset = 1; 715 } 716 break; 717 718 case StatsTestsQ15::TEST_MAX_NO_IDX_Q15_30: 719 { 720 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23); 721 722 ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr); 723 724 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 725 726 refOffset = 2; 727 } 728 break; 729 730 case StatsTestsQ15::TEST_MIN_NO_IDX_Q15_31: 731 { 732 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7); 733 734 ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr); 735 736 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 737 738 refOffset = 0; 739 } 740 break; 741 742 case StatsTestsQ15::TEST_MIN_NO_IDX_Q15_32: 743 { 744 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16); 745 746 ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr); 747 748 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 749 750 refOffset = 1; 751 } 752 break; 753 754 case StatsTestsQ15::TEST_MIN_NO_IDX_Q15_33: 755 { 756 inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23); 757 758 ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr); 759 760 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 761 762 refOffset = 2; 763 } 764 break; 765 766 case StatsTestsQ15::TEST_ABSMAX_NO_IDX_Q15_34: 767 { 768 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,7); 769 770 ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr); 771 772 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 773 774 refOffset = 0; 775 } 776 break; 777 778 case StatsTestsQ15::TEST_ABSMAX_NO_IDX_Q15_35: 779 { 780 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,16); 781 782 ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr); 783 784 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 785 786 refOffset = 1; 787 } 788 break; 789 790 case StatsTestsQ15::TEST_ABSMAX_NO_IDX_Q15_36: 791 { 792 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,23); 793 794 ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr); 795 796 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 797 798 refOffset = 2; 799 } 800 break; 801 802 case StatsTestsQ15::TEST_ABSMIN_NO_IDX_Q15_37: 803 { 804 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,7); 805 806 ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr); 807 808 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 809 810 refOffset = 0; 811 } 812 break; 813 814 case StatsTestsQ15::TEST_ABSMIN_NO_IDX_Q15_38: 815 { 816 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,16); 817 818 ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr); 819 820 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 821 822 refOffset = 1; 823 } 824 break; 825 826 case StatsTestsQ15::TEST_ABSMIN_NO_IDX_Q15_39: 827 { 828 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,23); 829 830 ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr); 831 832 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 833 834 refOffset = 2; 835 } 836 break; 837 838 case StatsTestsQ15::TEST_MSE_Q15_40: 839 { 840 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,7); 841 inputB.reload(StatsTestsQ15::INPUTNEW2_Q15_ID,mgr,7); 842 843 ref.reload(StatsTestsQ15::MSE_Q15_ID,mgr); 844 845 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 846 847 refOffset = 0; 848 } 849 break; 850 851 case StatsTestsQ15::TEST_MSE_Q15_41: 852 { 853 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,16); 854 inputB.reload(StatsTestsQ15::INPUTNEW2_Q15_ID,mgr,16); 855 856 ref.reload(StatsTestsQ15::MSE_Q15_ID,mgr); 857 858 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 859 860 refOffset = 1; 861 } 862 break; 863 864 case StatsTestsQ15::TEST_MSE_Q15_42: 865 { 866 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,23); 867 inputB.reload(StatsTestsQ15::INPUTNEW2_Q15_ID,mgr,23); 868 869 ref.reload(StatsTestsQ15::MSE_Q15_ID,mgr); 870 871 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 872 873 refOffset = 2; 874 } 875 break; 876 877 case StatsTestsQ15::TEST_MSE_Q15_43: 878 { 879 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,100); 880 inputB.reload(StatsTestsQ15::INPUTNEW2_Q15_ID,mgr,100); 881 882 ref.reload(StatsTestsQ15::MSE_Q15_ID,mgr); 883 884 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 885 886 refOffset = 3; 887 } 888 break; 889 890 case StatsTestsQ15::TEST_ABSMAX_NO_IDX_Q15_44: 891 { 892 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr); 893 894 ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr); 895 896 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 897 898 refOffset = 3; 899 } 900 break; 901 902 case StatsTestsQ15::TEST_ABSMAX_Q15_45: 903 { 904 inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr); 905 906 maxIndexes.reload(StatsTestsQ15::ABSMAXINDEXES_S16_ID,mgr); 907 ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr); 908 909 output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr); 910 index.create(1,StatsTestsQ15::OUT_S16_ID,mgr); 911 912 refOffset = 3; 913 } 914 break; 915 916 917 } 918 919 } 920 tearDown(Testing::testID_t id,Client::PatternMgr * mgr)921 void StatsTestsQ15::tearDown(Testing::testID_t id,Client::PatternMgr *mgr) 922 { 923 (void)id; 924 switch(id) 925 { 926 case StatsTestsQ15::TEST_MAX_Q15_1: 927 case StatsTestsQ15::TEST_MAX_Q15_2: 928 case StatsTestsQ15::TEST_MAX_Q15_3: 929 case StatsTestsQ15::TEST_MIN_Q15_7: 930 case StatsTestsQ15::TEST_MIN_Q15_8: 931 case StatsTestsQ15::TEST_MIN_Q15_9: 932 index.dump(mgr); 933 output.dump(mgr); 934 break; 935 936 case TEST_POWER_Q15_10: 937 case TEST_POWER_Q15_11: 938 case TEST_POWER_Q15_12: 939 outputPower.dump(mgr); 940 break; 941 942 default: 943 output.dump(mgr); 944 } 945 } 946