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