| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2014 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2014 The WebM project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #include <cmath> | 11 #include <cmath> |
| 12 #include <cstdlib> | 12 #include <cstdlib> |
| 13 #include <string> | 13 #include <string> |
| 14 | 14 |
| 15 #include "third_party/googletest/src/include/gtest/gtest.h" | 15 #include "third_party/googletest/src/include/gtest/gtest.h" |
| 16 #include "test/acm_random.h" | 16 #include "test/acm_random.h" |
| 17 #include "test/clear_system_state.h" | 17 #include "test/clear_system_state.h" |
| 18 #include "test/register_state_check.h" | 18 #include "test/register_state_check.h" |
| 19 #include "test/util.h" | 19 #include "test/util.h" |
| 20 | 20 |
| 21 #include "./vpx_config.h" | 21 #include "./vpx_config.h" |
| 22 #include "./vp9_rtcd.h" | 22 #include "./vp9_rtcd.h" |
| 23 #include "vp9/common/vp9_entropy.h" | 23 #include "vp9/common/vp9_entropy.h" |
| 24 #include "vp9/common/vp9_loopfilter.h" |
| 24 #include "vpx/vpx_integer.h" | 25 #include "vpx/vpx_integer.h" |
| 25 | 26 |
| 26 using libvpx_test::ACMRandom; | 27 using libvpx_test::ACMRandom; |
| 27 | 28 |
| 28 namespace { | 29 namespace { |
| 29 // Horizontally and Vertically need 32x32: 8 Coeffs preceeding filtered section | 30 // Horizontally and Vertically need 32x32: 8 Coeffs preceeding filtered section |
| 30 // 16 Coefs within filtered section | 31 // 16 Coefs within filtered section |
| 31 // 8 Coeffs following filtered section | 32 // 8 Coeffs following filtered section |
| 32 const int kNumCoeffs = 1024; | 33 const int kNumCoeffs = 1024; |
| 33 | 34 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 } | 100 } |
| 100 | 101 |
| 101 void wrapper_vertical_16_dual_c(uint8_t *s, int p, const uint8_t *blimit, | 102 void wrapper_vertical_16_dual_c(uint8_t *s, int p, const uint8_t *blimit, |
| 102 const uint8_t *limit, const uint8_t *thresh, | 103 const uint8_t *limit, const uint8_t *thresh, |
| 103 int count) { | 104 int count) { |
| 104 vp9_lpf_vertical_16_dual_c(s, p, blimit, limit, thresh); | 105 vp9_lpf_vertical_16_dual_c(s, p, blimit, limit, thresh); |
| 105 } | 106 } |
| 106 #endif // CONFIG_VP9_HIGHBITDEPTH | 107 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 107 #endif // HAVE_SSE2 | 108 #endif // HAVE_SSE2 |
| 108 | 109 |
| 110 #if HAVE_NEON_ASM |
| 111 #if CONFIG_VP9_HIGHBITDEPTH |
| 112 // No neon high bitdepth functions. |
| 113 #else |
| 114 void wrapper_vertical_16_neon(uint8_t *s, int p, const uint8_t *blimit, |
| 115 const uint8_t *limit, const uint8_t *thresh, |
| 116 int count) { |
| 117 vp9_lpf_vertical_16_neon(s, p, blimit, limit, thresh); |
| 118 } |
| 119 |
| 120 void wrapper_vertical_16_c(uint8_t *s, int p, const uint8_t *blimit, |
| 121 const uint8_t *limit, const uint8_t *thresh, |
| 122 int count) { |
| 123 vp9_lpf_vertical_16_c(s, p, blimit, limit, thresh); |
| 124 } |
| 125 |
| 126 void wrapper_vertical_16_dual_neon(uint8_t *s, int p, const uint8_t *blimit, |
| 127 const uint8_t *limit, const uint8_t *thresh, |
| 128 int count) { |
| 129 vp9_lpf_vertical_16_dual_neon(s, p, blimit, limit, thresh); |
| 130 } |
| 131 |
| 132 void wrapper_vertical_16_dual_c(uint8_t *s, int p, const uint8_t *blimit, |
| 133 const uint8_t *limit, const uint8_t *thresh, |
| 134 int count) { |
| 135 vp9_lpf_vertical_16_dual_c(s, p, blimit, limit, thresh); |
| 136 } |
| 137 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 138 #endif // HAVE_NEON_ASM |
| 139 |
| 109 class Loop8Test6Param : public ::testing::TestWithParam<loop8_param_t> { | 140 class Loop8Test6Param : public ::testing::TestWithParam<loop8_param_t> { |
| 110 public: | 141 public: |
| 111 virtual ~Loop8Test6Param() {} | 142 virtual ~Loop8Test6Param() {} |
| 112 virtual void SetUp() { | 143 virtual void SetUp() { |
| 113 loopfilter_op_ = GET_PARAM(0); | 144 loopfilter_op_ = GET_PARAM(0); |
| 114 ref_loopfilter_op_ = GET_PARAM(1); | 145 ref_loopfilter_op_ = GET_PARAM(1); |
| 115 bit_depth_ = GET_PARAM(2); | 146 bit_depth_ = GET_PARAM(2); |
| 116 mask_ = (1 << bit_depth_) - 1; | 147 mask_ = (1 << bit_depth_) - 1; |
| 117 } | 148 } |
| 118 | 149 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs); | 183 DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs); |
| 153 DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs); | 184 DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs); |
| 154 #else | 185 #else |
| 155 DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs); | 186 DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs); |
| 156 DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs); | 187 DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs); |
| 157 #endif // CONFIG_VP9_HIGHBITDEPTH | 188 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 158 int err_count_total = 0; | 189 int err_count_total = 0; |
| 159 int first_failure = -1; | 190 int first_failure = -1; |
| 160 for (int i = 0; i < count_test_block; ++i) { | 191 for (int i = 0; i < count_test_block; ++i) { |
| 161 int err_count = 0; | 192 int err_count = 0; |
| 162 uint8_t tmp = rnd.Rand8(); | 193 uint8_t tmp = static_cast<uint8_t>(rnd(3 * MAX_LOOP_FILTER + 4)); |
| 163 DECLARE_ALIGNED(16, const uint8_t, blimit[16]) = { | 194 DECLARE_ALIGNED(16, const uint8_t, blimit[16]) = { |
| 164 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 195 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 165 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 196 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 166 }; | 197 }; |
| 167 tmp = rnd.Rand8(); | 198 tmp = static_cast<uint8_t>(rnd(MAX_LOOP_FILTER)); |
| 168 DECLARE_ALIGNED(16, const uint8_t, limit[16]) = { | 199 DECLARE_ALIGNED(16, const uint8_t, limit[16]) = { |
| 169 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 200 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 170 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 201 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 171 }; | 202 }; |
| 172 tmp = rnd.Rand8(); | 203 tmp = rnd.Rand8(); |
| 173 DECLARE_ALIGNED(16, const uint8_t, thresh[16]) = { | 204 DECLARE_ALIGNED(16, const uint8_t, thresh[16]) = { |
| 174 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 205 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 175 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 206 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 176 }; | 207 }; |
| 177 int32_t p = kNumCoeffs/32; | 208 int32_t p = kNumCoeffs/32; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 #if CONFIG_VP9_HIGHBITDEPTH | 267 #if CONFIG_VP9_HIGHBITDEPTH |
| 237 const int32_t bd = bit_depth_; | 268 const int32_t bd = bit_depth_; |
| 238 DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs); | 269 DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs); |
| 239 DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs); | 270 DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs); |
| 240 #else | 271 #else |
| 241 DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs); | 272 DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs); |
| 242 DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs); | 273 DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs); |
| 243 #endif // CONFIG_VP9_HIGHBITDEPTH | 274 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 244 int err_count_total = 0; | 275 int err_count_total = 0; |
| 245 int first_failure = -1; | 276 int first_failure = -1; |
| 277 |
| 278 // NOTE: The code in vp9_loopfilter.c:update_sharpness computes mblim as a |
| 279 // function of sharpness_lvl and the loopfilter lvl as: |
| 280 // block_inside_limit = lvl >> ((sharpness_lvl > 0) + (sharpness_lvl > 4)); |
| 281 // ... |
| 282 // vpx_memset(lfi->lfthr[lvl].mblim, (2 * (lvl + 2) + block_inside_limit), |
| 283 // SIMD_WIDTH); |
| 284 // This means that the largest value for mblim will occur when sharpness_lvl |
| 285 // is equal to 0, and lvl is equal to its greatest value (MAX_LOOP_FILTER). |
| 286 // In this case block_inside_limit will be equal to MAX_LOOP_FILTER and |
| 287 // therefore mblim will be equal to (2 * (lvl + 2) + block_inside_limit) = |
| 288 // 2 * (MAX_LOOP_FILTER + 2) + MAX_LOOP_FILTER = 3 * MAX_LOOP_FILTER + 4 |
| 289 |
| 246 for (int i = 0; i < count_test_block; ++i) { | 290 for (int i = 0; i < count_test_block; ++i) { |
| 247 int err_count = 0; | 291 int err_count = 0; |
| 248 uint8_t tmp = rnd.Rand8(); | 292 uint8_t tmp = static_cast<uint8_t>(rnd(3 * MAX_LOOP_FILTER + 4)); |
| 249 DECLARE_ALIGNED(16, const uint8_t, blimit[16]) = { | 293 DECLARE_ALIGNED(16, const uint8_t, blimit[16]) = { |
| 250 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 294 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 251 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 295 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 252 }; | 296 }; |
| 253 tmp = rnd.Rand8(); | 297 tmp = static_cast<uint8_t>(rnd(MAX_LOOP_FILTER)); |
| 254 DECLARE_ALIGNED(16, const uint8_t, limit[16]) = { | 298 DECLARE_ALIGNED(16, const uint8_t, limit[16]) = { |
| 255 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 299 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 256 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 300 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 257 }; | 301 }; |
| 258 tmp = rnd.Rand8(); | 302 tmp = rnd.Rand8(); |
| 259 DECLARE_ALIGNED(16, const uint8_t, thresh[16]) = { | 303 DECLARE_ALIGNED(16, const uint8_t, thresh[16]) = { |
| 260 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 304 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 261 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 305 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 262 }; | 306 }; |
| 263 int32_t p = kNumCoeffs / 32; | 307 int32_t p = kNumCoeffs / 32; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs); | 341 DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs); |
| 298 DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs); | 342 DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs); |
| 299 #else | 343 #else |
| 300 DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs); | 344 DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs); |
| 301 DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs); | 345 DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs); |
| 302 #endif // CONFIG_VP9_HIGHBITDEPTH | 346 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 303 int err_count_total = 0; | 347 int err_count_total = 0; |
| 304 int first_failure = -1; | 348 int first_failure = -1; |
| 305 for (int i = 0; i < count_test_block; ++i) { | 349 for (int i = 0; i < count_test_block; ++i) { |
| 306 int err_count = 0; | 350 int err_count = 0; |
| 307 uint8_t tmp = rnd.Rand8(); | 351 uint8_t tmp = static_cast<uint8_t>(rnd(3 * MAX_LOOP_FILTER + 4)); |
| 308 DECLARE_ALIGNED(16, const uint8_t, blimit0[16]) = { | 352 DECLARE_ALIGNED(16, const uint8_t, blimit0[16]) = { |
| 309 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 353 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 310 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 354 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 311 }; | 355 }; |
| 312 tmp = rnd.Rand8(); | 356 tmp = static_cast<uint8_t>(rnd(MAX_LOOP_FILTER)); |
| 313 DECLARE_ALIGNED(16, const uint8_t, limit0[16]) = { | 357 DECLARE_ALIGNED(16, const uint8_t, limit0[16]) = { |
| 314 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 358 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 315 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 359 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 316 }; | 360 }; |
| 317 tmp = rnd.Rand8(); | 361 tmp = rnd.Rand8(); |
| 318 DECLARE_ALIGNED(16, const uint8_t, thresh0[16]) = { | 362 DECLARE_ALIGNED(16, const uint8_t, thresh0[16]) = { |
| 319 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 363 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 320 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 364 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 321 }; | 365 }; |
| 322 tmp = rnd.Rand8(); | 366 tmp = static_cast<uint8_t>(rnd(3 * MAX_LOOP_FILTER + 4)); |
| 323 DECLARE_ALIGNED(16, const uint8_t, blimit1[16]) = { | 367 DECLARE_ALIGNED(16, const uint8_t, blimit1[16]) = { |
| 324 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 368 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 325 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 369 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 326 }; | 370 }; |
| 327 tmp = rnd.Rand8(); | 371 tmp = static_cast<uint8_t>(rnd(MAX_LOOP_FILTER)); |
| 328 DECLARE_ALIGNED(16, const uint8_t, limit1[16]) = { | 372 DECLARE_ALIGNED(16, const uint8_t, limit1[16]) = { |
| 329 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 373 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 330 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 374 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 331 }; | 375 }; |
| 332 tmp = rnd.Rand8(); | 376 tmp = rnd.Rand8(); |
| 333 DECLARE_ALIGNED(16, const uint8_t, thresh1[16]) = { | 377 DECLARE_ALIGNED(16, const uint8_t, thresh1[16]) = { |
| 334 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 378 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 335 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 379 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 336 }; | 380 }; |
| 337 int32_t p = kNumCoeffs / 32; | 381 int32_t p = kNumCoeffs / 32; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs); | 443 DECLARE_ALIGNED_ARRAY(16, uint16_t, s, kNumCoeffs); |
| 400 DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs); | 444 DECLARE_ALIGNED_ARRAY(16, uint16_t, ref_s, kNumCoeffs); |
| 401 #else | 445 #else |
| 402 DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs); | 446 DECLARE_ALIGNED_ARRAY(8, uint8_t, s, kNumCoeffs); |
| 403 DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs); | 447 DECLARE_ALIGNED_ARRAY(8, uint8_t, ref_s, kNumCoeffs); |
| 404 #endif // CONFIG_VP9_HIGHBITDEPTH | 448 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 405 int err_count_total = 0; | 449 int err_count_total = 0; |
| 406 int first_failure = -1; | 450 int first_failure = -1; |
| 407 for (int i = 0; i < count_test_block; ++i) { | 451 for (int i = 0; i < count_test_block; ++i) { |
| 408 int err_count = 0; | 452 int err_count = 0; |
| 409 uint8_t tmp = rnd.Rand8(); | 453 uint8_t tmp = static_cast<uint8_t>(rnd(3 * MAX_LOOP_FILTER + 4)); |
| 410 DECLARE_ALIGNED(16, const uint8_t, blimit0[16]) = { | 454 DECLARE_ALIGNED(16, const uint8_t, blimit0[16]) = { |
| 411 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 455 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 412 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 456 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 413 }; | 457 }; |
| 414 tmp = rnd.Rand8(); | 458 tmp = static_cast<uint8_t>(rnd(MAX_LOOP_FILTER)); |
| 415 DECLARE_ALIGNED(16, const uint8_t, limit0[16]) = { | 459 DECLARE_ALIGNED(16, const uint8_t, limit0[16]) = { |
| 416 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 460 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 417 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 461 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 418 }; | 462 }; |
| 419 tmp = rnd.Rand8(); | 463 tmp = rnd.Rand8(); |
| 420 DECLARE_ALIGNED(16, const uint8_t, thresh0[16]) = { | 464 DECLARE_ALIGNED(16, const uint8_t, thresh0[16]) = { |
| 421 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 465 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 422 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 466 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 423 }; | 467 }; |
| 424 tmp = rnd.Rand8(); | 468 tmp = static_cast<uint8_t>(rnd(3 * MAX_LOOP_FILTER + 4)); |
| 425 DECLARE_ALIGNED(16, const uint8_t, blimit1[16]) = { | 469 DECLARE_ALIGNED(16, const uint8_t, blimit1[16]) = { |
| 426 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 470 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 427 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 471 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 428 }; | 472 }; |
| 429 tmp = rnd.Rand8(); | 473 tmp = static_cast<uint8_t>(rnd(MAX_LOOP_FILTER)); |
| 430 DECLARE_ALIGNED(16, const uint8_t, limit1[16]) = { | 474 DECLARE_ALIGNED(16, const uint8_t, limit1[16]) = { |
| 431 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 475 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 432 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 476 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 433 }; | 477 }; |
| 434 tmp = rnd.Rand8(); | 478 tmp = rnd.Rand8(); |
| 435 DECLARE_ALIGNED(16, const uint8_t, thresh1[16]) = { | 479 DECLARE_ALIGNED(16, const uint8_t, thresh1[16]) = { |
| 436 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, | 480 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp, |
| 437 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp | 481 tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp |
| 438 }; | 482 }; |
| 439 int32_t p = kNumCoeffs / 32; // TODO(pdlf) can we have non-square here? | 483 int32_t p = kNumCoeffs / 32; // TODO(pdlf) can we have non-square here? |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 &vp9_highbd_lpf_vertical_8_c, 12), | 556 &vp9_highbd_lpf_vertical_8_c, 12), |
| 513 make_tuple(&wrapper_vertical_16_sse2, | 557 make_tuple(&wrapper_vertical_16_sse2, |
| 514 &wrapper_vertical_16_c, 12), | 558 &wrapper_vertical_16_c, 12), |
| 515 make_tuple(&wrapper_vertical_16_dual_sse2, | 559 make_tuple(&wrapper_vertical_16_dual_sse2, |
| 516 &wrapper_vertical_16_dual_c, 8), | 560 &wrapper_vertical_16_dual_c, 8), |
| 517 make_tuple(&wrapper_vertical_16_dual_sse2, | 561 make_tuple(&wrapper_vertical_16_dual_sse2, |
| 518 &wrapper_vertical_16_dual_c, 10), | 562 &wrapper_vertical_16_dual_c, 10), |
| 519 make_tuple(&wrapper_vertical_16_dual_sse2, | 563 make_tuple(&wrapper_vertical_16_dual_sse2, |
| 520 &wrapper_vertical_16_dual_c, 12))); | 564 &wrapper_vertical_16_dual_c, 12))); |
| 521 #else | 565 #else |
| 522 // TODO(peter.derivaz): re-enable after these handle the expanded range [0, 255] | |
| 523 // returned from Rand8(). | |
| 524 INSTANTIATE_TEST_CASE_P( | 566 INSTANTIATE_TEST_CASE_P( |
| 525 DISABLED_SSE2, Loop8Test6Param, | 567 SSE2, Loop8Test6Param, |
| 526 ::testing::Values( | 568 ::testing::Values( |
| 527 make_tuple(&vp9_lpf_horizontal_8_sse2, &vp9_lpf_horizontal_8_c, 8), | 569 make_tuple(&vp9_lpf_horizontal_8_sse2, &vp9_lpf_horizontal_8_c, 8), |
| 528 make_tuple(&vp9_lpf_horizontal_16_sse2, &vp9_lpf_horizontal_16_c, 8), | 570 make_tuple(&vp9_lpf_horizontal_16_sse2, &vp9_lpf_horizontal_16_c, 8), |
| 529 make_tuple(&vp9_lpf_vertical_8_sse2, &vp9_lpf_vertical_8_c, 8), | 571 make_tuple(&vp9_lpf_vertical_8_sse2, &vp9_lpf_vertical_8_c, 8), |
| 530 make_tuple(&wrapper_vertical_16_sse2, &wrapper_vertical_16_c, 8))); | 572 make_tuple(&wrapper_vertical_16_sse2, &wrapper_vertical_16_c, 8))); |
| 531 #endif // CONFIG_VP9_HIGHBITDEPTH | 573 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 532 #endif | 574 #endif |
| 533 | 575 |
| 534 #if HAVE_AVX2 && (!CONFIG_VP9_HIGHBITDEPTH) | 576 #if HAVE_AVX2 && (!CONFIG_VP9_HIGHBITDEPTH) |
| 535 // TODO(peter.derivaz): re-enable after these handle the expanded range [0, 255] | |
| 536 // returned from Rand8(). | |
| 537 INSTANTIATE_TEST_CASE_P( | 577 INSTANTIATE_TEST_CASE_P( |
| 538 DISABLED_AVX2, Loop8Test6Param, | 578 AVX2, Loop8Test6Param, |
| 539 ::testing::Values( | 579 ::testing::Values( |
| 540 make_tuple(&vp9_lpf_horizontal_16_avx2, &vp9_lpf_horizontal_16_c, 8))); | 580 make_tuple(&vp9_lpf_horizontal_16_avx2, &vp9_lpf_horizontal_16_c, 8))); |
| 541 #endif | 581 #endif |
| 542 | 582 |
| 543 #if HAVE_SSE2 | 583 #if HAVE_SSE2 |
| 544 #if CONFIG_VP9_HIGHBITDEPTH | 584 #if CONFIG_VP9_HIGHBITDEPTH |
| 545 INSTANTIATE_TEST_CASE_P( | 585 INSTANTIATE_TEST_CASE_P( |
| 546 SSE2, Loop8Test9Param, | 586 SSE2, Loop8Test9Param, |
| 547 ::testing::Values( | 587 ::testing::Values( |
| 548 make_tuple(&vp9_highbd_lpf_horizontal_4_dual_sse2, | 588 make_tuple(&vp9_highbd_lpf_horizontal_4_dual_sse2, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 563 &vp9_highbd_lpf_vertical_8_dual_c, 10), | 603 &vp9_highbd_lpf_vertical_8_dual_c, 10), |
| 564 make_tuple(&vp9_highbd_lpf_horizontal_4_dual_sse2, | 604 make_tuple(&vp9_highbd_lpf_horizontal_4_dual_sse2, |
| 565 &vp9_highbd_lpf_horizontal_4_dual_c, 12), | 605 &vp9_highbd_lpf_horizontal_4_dual_c, 12), |
| 566 make_tuple(&vp9_highbd_lpf_horizontal_8_dual_sse2, | 606 make_tuple(&vp9_highbd_lpf_horizontal_8_dual_sse2, |
| 567 &vp9_highbd_lpf_horizontal_8_dual_c, 12), | 607 &vp9_highbd_lpf_horizontal_8_dual_c, 12), |
| 568 make_tuple(&vp9_highbd_lpf_vertical_4_dual_sse2, | 608 make_tuple(&vp9_highbd_lpf_vertical_4_dual_sse2, |
| 569 &vp9_highbd_lpf_vertical_4_dual_c, 12), | 609 &vp9_highbd_lpf_vertical_4_dual_c, 12), |
| 570 make_tuple(&vp9_highbd_lpf_vertical_8_dual_sse2, | 610 make_tuple(&vp9_highbd_lpf_vertical_8_dual_sse2, |
| 571 &vp9_highbd_lpf_vertical_8_dual_c, 12))); | 611 &vp9_highbd_lpf_vertical_8_dual_c, 12))); |
| 572 #else | 612 #else |
| 573 // TODO(peter.derivaz): re-enable after these handle the expanded range [0, 255] | |
| 574 // returned from Rand8(). | |
| 575 INSTANTIATE_TEST_CASE_P( | 613 INSTANTIATE_TEST_CASE_P( |
| 576 DISABLED_SSE2, Loop8Test9Param, | 614 SSE2, Loop8Test9Param, |
| 577 ::testing::Values( | 615 ::testing::Values( |
| 578 make_tuple(&vp9_lpf_horizontal_4_dual_sse2, | 616 make_tuple(&vp9_lpf_horizontal_4_dual_sse2, |
| 579 &vp9_lpf_horizontal_4_dual_c, 8), | 617 &vp9_lpf_horizontal_4_dual_c, 8), |
| 580 make_tuple(&vp9_lpf_horizontal_8_dual_sse2, | 618 make_tuple(&vp9_lpf_horizontal_8_dual_sse2, |
| 581 &vp9_lpf_horizontal_8_dual_c, 8), | 619 &vp9_lpf_horizontal_8_dual_c, 8), |
| 582 make_tuple(&vp9_lpf_vertical_4_dual_sse2, | 620 make_tuple(&vp9_lpf_vertical_4_dual_sse2, |
| 583 &vp9_lpf_vertical_4_dual_c, 8), | 621 &vp9_lpf_vertical_4_dual_c, 8), |
| 584 make_tuple(&vp9_lpf_vertical_8_dual_sse2, | 622 make_tuple(&vp9_lpf_vertical_8_dual_sse2, |
| 585 &vp9_lpf_vertical_8_dual_c, 8))); | 623 &vp9_lpf_vertical_8_dual_c, 8))); |
| 586 #endif // CONFIG_VP9_HIGHBITDEPTH | 624 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 587 #endif | 625 #endif |
| 588 | 626 |
| 627 #if HAVE_NEON |
| 628 #if CONFIG_VP9_HIGHBITDEPTH |
| 629 // No neon high bitdepth functions. |
| 630 #else |
| 631 INSTANTIATE_TEST_CASE_P( |
| 632 NEON, Loop8Test6Param, |
| 633 ::testing::Values( |
| 634 #if HAVE_NEON_ASM |
| 635 // Using #if inside the macro is unsupported on MSVS but the tests are not |
| 636 // currently built for MSVS with ARM and NEON. |
| 637 make_tuple(&vp9_lpf_horizontal_16_neon, |
| 638 &vp9_lpf_horizontal_16_c, 8), |
| 639 make_tuple(&wrapper_vertical_16_neon, |
| 640 &wrapper_vertical_16_c, 8), |
| 641 make_tuple(&wrapper_vertical_16_dual_neon, |
| 642 &wrapper_vertical_16_dual_c, 8), |
| 643 make_tuple(&vp9_lpf_horizontal_8_neon, |
| 644 &vp9_lpf_horizontal_8_c, 8), |
| 645 make_tuple(&vp9_lpf_vertical_8_neon, |
| 646 &vp9_lpf_vertical_8_c, 8), |
| 647 #endif // HAVE_NEON_ASM |
| 648 make_tuple(&vp9_lpf_horizontal_4_neon, |
| 649 &vp9_lpf_horizontal_4_c, 8), |
| 650 make_tuple(&vp9_lpf_vertical_4_neon, |
| 651 &vp9_lpf_vertical_4_c, 8))); |
| 652 INSTANTIATE_TEST_CASE_P( |
| 653 NEON, Loop8Test9Param, |
| 654 ::testing::Values( |
| 655 #if HAVE_NEON_ASM |
| 656 make_tuple(&vp9_lpf_horizontal_8_dual_neon, |
| 657 &vp9_lpf_horizontal_8_dual_c, 8), |
| 658 make_tuple(&vp9_lpf_vertical_8_dual_neon, |
| 659 &vp9_lpf_vertical_8_dual_c, 8), |
| 660 #endif // HAVE_NEON_ASM |
| 661 make_tuple(&vp9_lpf_horizontal_4_dual_neon, |
| 662 &vp9_lpf_horizontal_4_dual_c, 8), |
| 663 make_tuple(&vp9_lpf_vertical_4_dual_neon, |
| 664 &vp9_lpf_vertical_4_dual_c, 8))); |
| 665 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 666 #endif // HAVE_NEON |
| 667 |
| 589 } // namespace | 668 } // namespace |
| OLD | NEW |