2 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
4 * This source code is subject to the terms of the BSD 2 Clause License and
5 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6 * was not distributed with this source code in the LICENSE file, you can
7 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8 * Media Patent License 1.0 was not distributed with this source code in the
9 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
15 #include "third_party/googletest/src/googletest/include/gtest/gtest.h"
17 #include "config/aom_config.h"
18 #include "config/aom_dsp_rtcd.h"
20 #include "test/acm_random.h"
21 #include "test/clear_system_state.h"
22 #include "test/register_state_check.h"
23 #include "aom/aom_codec.h"
24 #include "aom/aom_integer.h"
25 #include "aom_mem/aom_mem.h"
26 #include "aom_ports/aom_timer.h"
27 #include "aom_ports/mem.h"
31 typedef unsigned int (*VarianceMxNFunc
)(const uint8_t *a
, int a_stride
,
32 const uint8_t *b
, int b_stride
,
34 typedef unsigned int (*SubpixVarMxNFunc
)(const uint8_t *a
, int a_stride
,
35 int xoffset
, int yoffset
,
36 const uint8_t *b
, int b_stride
,
38 typedef unsigned int (*SubpixAvgVarMxNFunc
)(const uint8_t *a
, int a_stride
,
39 int xoffset
, int yoffset
,
40 const uint8_t *b
, int b_stride
,
42 const uint8_t *second_pred
);
43 typedef unsigned int (*Get4x4SseFunc
)(const uint8_t *a
, int a_stride
,
44 const uint8_t *b
, int b_stride
);
45 typedef unsigned int (*SumOfSquaresFunction
)(const int16_t *src
);
46 typedef unsigned int (*JntSubpixAvgVarMxNFunc
)(
47 const uint8_t *a
, int a_stride
, int xoffset
, int yoffset
, const uint8_t *b
,
48 int b_stride
, uint32_t *sse
, const uint8_t *second_pred
,
49 const JNT_COMP_PARAMS
*jcp_param
);
50 typedef uint32_t (*ObmcSubpelVarFunc
)(const uint8_t *pre
, int pre_stride
,
51 int xoffset
, int yoffset
,
52 const int32_t *wsrc
, const int32_t *mask
,
55 using libaom_test::ACMRandom
;
57 // Truncate high bit depth results by downshifting (with rounding) by:
58 // 2 * (bit_depth - 8) for sse
59 // (bit_depth - 8) for se
60 static void RoundHighBitDepth(int bit_depth
, int64_t *se
, uint64_t *sse
) {
63 *sse
= (*sse
+ 128) >> 8;
67 *sse
= (*sse
+ 8) >> 4;
75 static unsigned int mb_ss_ref(const int16_t *src
) {
77 for (int i
= 0; i
< 256; ++i
) {
78 res
+= src
[i
] * src
[i
];
84 * Our codebase calculates the "diff" value in the variance algorithm by
87 static uint32_t variance_ref(const uint8_t *src
, const uint8_t *ref
, int l2w
,
88 int l2h
, int src_stride
, int ref_stride
,
89 uint32_t *sse_ptr
, bool use_high_bit_depth_
,
90 aom_bit_depth_t bit_depth
) {
93 const int w
= 1 << l2w
;
94 const int h
= 1 << l2h
;
95 for (int y
= 0; y
< h
; y
++) {
96 for (int x
= 0; x
< w
; x
++) {
98 if (!use_high_bit_depth_
) {
99 diff
= src
[y
* src_stride
+ x
] - ref
[y
* ref_stride
+ x
];
103 diff
= CONVERT_TO_SHORTPTR(src
)[y
* src_stride
+ x
] -
104 CONVERT_TO_SHORTPTR(ref
)[y
* ref_stride
+ x
];
110 RoundHighBitDepth(bit_depth
, &se
, &sse
);
111 *sse_ptr
= static_cast<uint32_t>(sse
);
112 return static_cast<uint32_t>(sse
- ((se
* se
) >> (l2w
+ l2h
)));
115 /* The subpel reference functions differ from the codec version in one aspect:
116 * they calculate the bilinear factors directly instead of using a lookup table
117 * and therefore upshift xoff and yoff by 1. Only every other calculated value
118 * is used so the codec version shrinks the table to save space and maintain
119 * compatibility with vp8.
121 static uint32_t subpel_variance_ref(const uint8_t *ref
, const uint8_t *src
,
122 int l2w
, int l2h
, int xoff
, int yoff
,
123 uint32_t *sse_ptr
, bool use_high_bit_depth_
,
124 aom_bit_depth_t bit_depth
) {
127 const int w
= 1 << l2w
;
128 const int h
= 1 << l2h
;
133 for (int y
= 0; y
< h
; y
++) {
134 for (int x
= 0; x
< w
; x
++) {
135 // Bilinear interpolation at a 16th pel step.
136 if (!use_high_bit_depth_
) {
137 const int a1
= ref
[(w
+ 1) * (y
+ 0) + x
+ 0];
138 const int a2
= ref
[(w
+ 1) * (y
+ 0) + x
+ 1];
139 const int b1
= ref
[(w
+ 1) * (y
+ 1) + x
+ 0];
140 const int b2
= ref
[(w
+ 1) * (y
+ 1) + x
+ 1];
141 const int a
= a1
+ (((a2
- a1
) * xoff
+ 8) >> 4);
142 const int b
= b1
+ (((b2
- b1
) * xoff
+ 8) >> 4);
143 const int r
= a
+ (((b
- a
) * yoff
+ 8) >> 4);
144 const int diff
= r
- src
[w
* y
+ x
];
148 uint16_t *ref16
= CONVERT_TO_SHORTPTR(ref
);
149 uint16_t *src16
= CONVERT_TO_SHORTPTR(src
);
150 const int a1
= ref16
[(w
+ 1) * (y
+ 0) + x
+ 0];
151 const int a2
= ref16
[(w
+ 1) * (y
+ 0) + x
+ 1];
152 const int b1
= ref16
[(w
+ 1) * (y
+ 1) + x
+ 0];
153 const int b2
= ref16
[(w
+ 1) * (y
+ 1) + x
+ 1];
154 const int a
= a1
+ (((a2
- a1
) * xoff
+ 8) >> 4);
155 const int b
= b1
+ (((b2
- b1
) * xoff
+ 8) >> 4);
156 const int r
= a
+ (((b
- a
) * yoff
+ 8) >> 4);
157 const int diff
= r
- src16
[w
* y
+ x
];
163 RoundHighBitDepth(bit_depth
, &se
, &sse
);
164 *sse_ptr
= static_cast<uint32_t>(sse
);
165 return static_cast<uint32_t>(sse
- ((se
* se
) >> (l2w
+ l2h
)));
168 static uint32_t subpel_avg_variance_ref(const uint8_t *ref
, const uint8_t *src
,
169 const uint8_t *second_pred
, int l2w
,
170 int l2h
, int xoff
, int yoff
,
172 bool use_high_bit_depth
,
173 aom_bit_depth_t bit_depth
) {
176 const int w
= 1 << l2w
;
177 const int h
= 1 << l2h
;
182 for (int y
= 0; y
< h
; y
++) {
183 for (int x
= 0; x
< w
; x
++) {
184 // bilinear interpolation at a 16th pel step
185 if (!use_high_bit_depth
) {
186 const int a1
= ref
[(w
+ 1) * (y
+ 0) + x
+ 0];
187 const int a2
= ref
[(w
+ 1) * (y
+ 0) + x
+ 1];
188 const int b1
= ref
[(w
+ 1) * (y
+ 1) + x
+ 0];
189 const int b2
= ref
[(w
+ 1) * (y
+ 1) + x
+ 1];
190 const int a
= a1
+ (((a2
- a1
) * xoff
+ 8) >> 4);
191 const int b
= b1
+ (((b2
- b1
) * xoff
+ 8) >> 4);
192 const int r
= a
+ (((b
- a
) * yoff
+ 8) >> 4);
194 ((r
+ second_pred
[w
* y
+ x
] + 1) >> 1) - src
[w
* y
+ x
];
198 const uint16_t *ref16
= CONVERT_TO_SHORTPTR(ref
);
199 const uint16_t *src16
= CONVERT_TO_SHORTPTR(src
);
200 const uint16_t *sec16
= CONVERT_TO_SHORTPTR(second_pred
);
201 const int a1
= ref16
[(w
+ 1) * (y
+ 0) + x
+ 0];
202 const int a2
= ref16
[(w
+ 1) * (y
+ 0) + x
+ 1];
203 const int b1
= ref16
[(w
+ 1) * (y
+ 1) + x
+ 0];
204 const int b2
= ref16
[(w
+ 1) * (y
+ 1) + x
+ 1];
205 const int a
= a1
+ (((a2
- a1
) * xoff
+ 8) >> 4);
206 const int b
= b1
+ (((b2
- b1
) * xoff
+ 8) >> 4);
207 const int r
= a
+ (((b
- a
) * yoff
+ 8) >> 4);
208 const int diff
= ((r
+ sec16
[w
* y
+ x
] + 1) >> 1) - src16
[w
* y
+ x
];
214 RoundHighBitDepth(bit_depth
, &se
, &sse
);
215 *sse_ptr
= static_cast<uint32_t>(sse
);
216 return static_cast<uint32_t>(sse
- ((se
* se
) >> (l2w
+ l2h
)));
219 static uint32_t jnt_subpel_avg_variance_ref(
220 const uint8_t *ref
, const uint8_t *src
, const uint8_t *second_pred
, int l2w
,
221 int l2h
, int xoff
, int yoff
, uint32_t *sse_ptr
, bool use_high_bit_depth
,
222 aom_bit_depth_t bit_depth
, JNT_COMP_PARAMS
*jcp_param
) {
225 const int w
= 1 << l2w
;
226 const int h
= 1 << l2h
;
231 for (int y
= 0; y
< h
; y
++) {
232 for (int x
= 0; x
< w
; x
++) {
233 // bilinear interpolation at a 16th pel step
234 if (!use_high_bit_depth
) {
235 const int a1
= ref
[(w
+ 0) * (y
+ 0) + x
+ 0];
236 const int a2
= ref
[(w
+ 0) * (y
+ 0) + x
+ 1];
237 const int b1
= ref
[(w
+ 0) * (y
+ 1) + x
+ 0];
238 const int b2
= ref
[(w
+ 0) * (y
+ 1) + x
+ 1];
239 const int a
= a1
+ (((a2
- a1
) * xoff
+ 8) >> 4);
240 const int b
= b1
+ (((b2
- b1
) * xoff
+ 8) >> 4);
241 const int r
= a
+ (((b
- a
) * yoff
+ 8) >> 4);
242 const int avg
= ROUND_POWER_OF_TWO(
243 r
* jcp_param
->fwd_offset
+
244 second_pred
[w
* y
+ x
] * jcp_param
->bck_offset
,
245 DIST_PRECISION_BITS
);
246 const int diff
= avg
- src
[w
* y
+ x
];
251 const uint16_t *ref16
= CONVERT_TO_SHORTPTR(ref
);
252 const uint16_t *src16
= CONVERT_TO_SHORTPTR(src
);
253 const uint16_t *sec16
= CONVERT_TO_SHORTPTR(second_pred
);
254 const int a1
= ref16
[(w
+ 0) * (y
+ 0) + x
+ 0];
255 const int a2
= ref16
[(w
+ 0) * (y
+ 0) + x
+ 1];
256 const int b1
= ref16
[(w
+ 0) * (y
+ 1) + x
+ 0];
257 const int b2
= ref16
[(w
+ 0) * (y
+ 1) + x
+ 1];
258 const int a
= a1
+ (((a2
- a1
) * xoff
+ 8) >> 4);
259 const int b
= b1
+ (((b2
- b1
) * xoff
+ 8) >> 4);
260 const int r
= a
+ (((b
- a
) * yoff
+ 8) >> 4);
262 ROUND_POWER_OF_TWO(r
* jcp_param
->fwd_offset
+
263 sec16
[w
* y
+ x
] * jcp_param
->bck_offset
,
264 DIST_PRECISION_BITS
);
265 const int diff
= avg
- src16
[w
* y
+ x
];
272 RoundHighBitDepth(bit_depth
, &se
, &sse
);
273 *sse_ptr
= static_cast<uint32_t>(sse
);
274 return static_cast<uint32_t>(sse
- ((se
* se
) >> (l2w
+ l2h
)));
277 static uint32_t obmc_subpel_variance_ref(const uint8_t *pre
, int l2w
, int l2h
,
280 const int32_t *mask
, uint32_t *sse_ptr
,
281 bool use_high_bit_depth_
,
282 aom_bit_depth_t bit_depth
) {
285 const int w
= 1 << l2w
;
286 const int h
= 1 << l2h
;
291 for (int y
= 0; y
< h
; y
++) {
292 for (int x
= 0; x
< w
; x
++) {
293 // Bilinear interpolation at a 16th pel step.
294 if (!use_high_bit_depth_
) {
295 const int a1
= pre
[(w
+ 1) * (y
+ 0) + x
+ 0];
296 const int a2
= pre
[(w
+ 1) * (y
+ 0) + x
+ 1];
297 const int b1
= pre
[(w
+ 1) * (y
+ 1) + x
+ 0];
298 const int b2
= pre
[(w
+ 1) * (y
+ 1) + x
+ 1];
299 const int a
= a1
+ (((a2
- a1
) * xoff
+ 8) >> 4);
300 const int b
= b1
+ (((b2
- b1
) * xoff
+ 8) >> 4);
301 const int r
= a
+ (((b
- a
) * yoff
+ 8) >> 4);
302 const int diff
= ROUND_POWER_OF_TWO_SIGNED(
303 wsrc
[w
* y
+ x
] - r
* mask
[w
* y
+ x
], 12);
307 uint16_t *pre16
= CONVERT_TO_SHORTPTR(pre
);
308 const int a1
= pre16
[(w
+ 1) * (y
+ 0) + x
+ 0];
309 const int a2
= pre16
[(w
+ 1) * (y
+ 0) + x
+ 1];
310 const int b1
= pre16
[(w
+ 1) * (y
+ 1) + x
+ 0];
311 const int b2
= pre16
[(w
+ 1) * (y
+ 1) + x
+ 1];
312 const int a
= a1
+ (((a2
- a1
) * xoff
+ 8) >> 4);
313 const int b
= b1
+ (((b2
- b1
) * xoff
+ 8) >> 4);
314 const int r
= a
+ (((b
- a
) * yoff
+ 8) >> 4);
315 const int diff
= ROUND_POWER_OF_TWO_SIGNED(
316 wsrc
[w
* y
+ x
] - r
* mask
[w
* y
+ x
], 12);
322 RoundHighBitDepth(bit_depth
, &se
, &sse
);
323 *sse_ptr
= static_cast<uint32_t>(sse
);
324 return static_cast<uint32_t>(sse
- ((se
* se
) >> (l2w
+ l2h
)));
327 ////////////////////////////////////////////////////////////////////////////////
329 class SumOfSquaresTest
: public ::testing::TestWithParam
<SumOfSquaresFunction
> {
331 SumOfSquaresTest() : func_(GetParam()) {}
333 virtual ~SumOfSquaresTest() { libaom_test::ClearSystemState(); }
339 SumOfSquaresFunction func_
;
343 void SumOfSquaresTest::ConstTest() {
346 for (int v
= 0; v
< 256; ++v
) {
347 for (int i
= 0; i
< 256; ++i
) {
350 ASM_REGISTER_STATE_CHECK(res
= func_(mem
));
351 EXPECT_EQ(256u * (v
* v
), res
);
355 void SumOfSquaresTest::RefTest() {
357 for (int i
= 0; i
< 100; ++i
) {
358 for (int j
= 0; j
< 256; ++j
) {
359 mem
[j
] = rnd_
.Rand8() - rnd_
.Rand8();
362 const unsigned int expected
= mb_ss_ref(mem
);
364 ASM_REGISTER_STATE_CHECK(res
= func_(mem
));
365 EXPECT_EQ(expected
, res
);
369 ////////////////////////////////////////////////////////////////////////////////
370 // Encapsulating struct to store the function to test along with
371 // some testing context.
372 // Can be used for MSE, SSE, Variance, etc.
374 template <typename Func
>
376 TestParams(int log2w
= 0, int log2h
= 0, Func function
= NULL
,
377 int bit_depth_value
= 0)
378 : log2width(log2w
), log2height(log2h
), func(function
) {
379 use_high_bit_depth
= (bit_depth_value
> 0);
380 if (use_high_bit_depth
) {
381 bit_depth
= static_cast<aom_bit_depth_t
>(bit_depth_value
);
383 bit_depth
= AOM_BITS_8
;
385 width
= 1 << log2width
;
386 height
= 1 << log2height
;
387 block_size
= width
* height
;
388 mask
= (1u << bit_depth
) - 1;
391 int log2width
, log2height
;
395 aom_bit_depth_t bit_depth
;
396 bool use_high_bit_depth
;
400 template <typename Func
>
401 std::ostream
&operator<<(std::ostream
&os
, const TestParams
<Func
> &p
) {
402 return os
<< "width/height:" << p
.width
<< "/" << p
.height
403 << " function:" << reinterpret_cast<const void *>(p
.func
)
404 << " bit-depth:" << p
.bit_depth
;
407 // Main class for testing a function type
408 template <typename FunctionType
>
410 : public ::testing::TestWithParam
<TestParams
<FunctionType
> > {
412 virtual void SetUp() {
413 params_
= this->GetParam();
415 rnd_
.Reset(ACMRandom::DeterministicSeed());
417 use_high_bit_depth() ? sizeof(uint16_t) : sizeof(uint8_t);
418 src_
= reinterpret_cast<uint8_t *>(aom_memalign(16, block_size() * unit
));
419 ref_
= new uint8_t[block_size() * unit
];
420 ASSERT_TRUE(src_
!= NULL
);
421 ASSERT_TRUE(ref_
!= NULL
);
422 if (use_high_bit_depth()) {
423 // TODO(skal): remove!
424 src_
= CONVERT_TO_BYTEPTR(src_
);
425 ref_
= CONVERT_TO_BYTEPTR(ref_
);
429 virtual void TearDown() {
430 if (use_high_bit_depth()) {
431 // TODO(skal): remove!
432 src_
= reinterpret_cast<uint8_t *>(CONVERT_TO_SHORTPTR(src_
));
433 ref_
= reinterpret_cast<uint8_t *>(CONVERT_TO_SHORTPTR(ref_
));
440 libaom_test::ClearSystemState();
444 // We could sub-class MainTestClass into dedicated class for Variance
445 // and MSE/SSE, but it involves a lot of 'this->xxx' dereferencing
446 // to access top class fields xxx. That's cumbersome, so for now we'll just
447 // implement the testing methods here:
452 void RefStrideTest();
453 void OneQuarterTest();
466 TestParams
<FunctionType
> params_
;
468 // some relay helpers
469 bool use_high_bit_depth() const { return params_
.use_high_bit_depth
; }
470 int byte_shift() const { return params_
.bit_depth
- 8; }
471 int block_size() const { return params_
.block_size
; }
472 int width() const { return params_
.width
; }
473 int height() const { return params_
.height
; }
474 uint32_t mask() const { return params_
.mask
; }
477 ////////////////////////////////////////////////////////////////////////////////
478 // Tests related to variance.
480 template <typename VarianceFunctionType
>
481 void MainTestClass
<VarianceFunctionType
>::ZeroTest() {
482 for (int i
= 0; i
<= 255; ++i
) {
483 if (!use_high_bit_depth()) {
484 memset(src_
, i
, block_size());
486 uint16_t *const src16
= CONVERT_TO_SHORTPTR(src_
);
487 for (int k
= 0; k
< block_size(); ++k
) src16
[k
] = i
<< byte_shift();
489 for (int j
= 0; j
<= 255; ++j
) {
490 if (!use_high_bit_depth()) {
491 memset(ref_
, j
, block_size());
493 uint16_t *const ref16
= CONVERT_TO_SHORTPTR(ref_
);
494 for (int k
= 0; k
< block_size(); ++k
) ref16
[k
] = j
<< byte_shift();
496 unsigned int sse
, var
;
497 ASM_REGISTER_STATE_CHECK(
498 var
= params_
.func(src_
, width(), ref_
, width(), &sse
));
499 EXPECT_EQ(0u, var
) << "src values: " << i
<< " ref values: " << j
;
504 template <typename VarianceFunctionType
>
505 void MainTestClass
<VarianceFunctionType
>::RefTest() {
506 for (int i
= 0; i
< 10; ++i
) {
507 for (int j
= 0; j
< block_size(); j
++) {
508 if (!use_high_bit_depth()) {
509 src_
[j
] = rnd_
.Rand8();
510 ref_
[j
] = rnd_
.Rand8();
512 CONVERT_TO_SHORTPTR(src_
)[j
] = rnd_
.Rand16() & mask();
513 CONVERT_TO_SHORTPTR(ref_
)[j
] = rnd_
.Rand16() & mask();
516 unsigned int sse1
, sse2
, var1
, var2
;
517 const int stride
= width();
518 ASM_REGISTER_STATE_CHECK(
519 var1
= params_
.func(src_
, stride
, ref_
, stride
, &sse1
));
521 variance_ref(src_
, ref_
, params_
.log2width
, params_
.log2height
, stride
,
522 stride
, &sse2
, use_high_bit_depth(), params_
.bit_depth
);
523 EXPECT_EQ(sse1
, sse2
) << "Error at test index: " << i
;
524 EXPECT_EQ(var1
, var2
) << "Error at test index: " << i
;
528 template <typename VarianceFunctionType
>
529 void MainTestClass
<VarianceFunctionType
>::RefStrideTest() {
530 for (int i
= 0; i
< 10; ++i
) {
531 const int ref_stride
= (i
& 1) * width();
532 const int src_stride
= ((i
>> 1) & 1) * width();
533 for (int j
= 0; j
< block_size(); j
++) {
534 const int ref_ind
= (j
/ width()) * ref_stride
+ j
% width();
535 const int src_ind
= (j
/ width()) * src_stride
+ j
% width();
536 if (!use_high_bit_depth()) {
537 src_
[src_ind
] = rnd_
.Rand8();
538 ref_
[ref_ind
] = rnd_
.Rand8();
540 CONVERT_TO_SHORTPTR(src_
)[src_ind
] = rnd_
.Rand16() & mask();
541 CONVERT_TO_SHORTPTR(ref_
)[ref_ind
] = rnd_
.Rand16() & mask();
544 unsigned int sse1
, sse2
;
545 unsigned int var1
, var2
;
547 ASM_REGISTER_STATE_CHECK(
548 var1
= params_
.func(src_
, src_stride
, ref_
, ref_stride
, &sse1
));
549 var2
= variance_ref(src_
, ref_
, params_
.log2width
, params_
.log2height
,
550 src_stride
, ref_stride
, &sse2
, use_high_bit_depth(),
552 EXPECT_EQ(sse1
, sse2
) << "Error at test index: " << i
;
553 EXPECT_EQ(var1
, var2
) << "Error at test index: " << i
;
557 template <typename VarianceFunctionType
>
558 void MainTestClass
<VarianceFunctionType
>::OneQuarterTest() {
559 const int half
= block_size() / 2;
560 if (!use_high_bit_depth()) {
561 memset(src_
, 255, block_size());
562 memset(ref_
, 255, half
);
563 memset(ref_
+ half
, 0, half
);
565 aom_memset16(CONVERT_TO_SHORTPTR(src_
), 255 << byte_shift(), block_size());
566 aom_memset16(CONVERT_TO_SHORTPTR(ref_
), 255 << byte_shift(), half
);
567 aom_memset16(CONVERT_TO_SHORTPTR(ref_
) + half
, 0, half
);
569 unsigned int sse
, var
, expected
;
570 ASM_REGISTER_STATE_CHECK(
571 var
= params_
.func(src_
, width(), ref_
, width(), &sse
));
572 expected
= block_size() * 255 * 255 / 4;
573 EXPECT_EQ(expected
, var
);
576 template <typename VarianceFunctionType
>
577 void MainTestClass
<VarianceFunctionType
>::SpeedTest() {
578 for (int j
= 0; j
< block_size(); j
++) {
579 if (!use_high_bit_depth()) {
580 src_
[j
] = rnd_
.Rand8();
581 ref_
[j
] = rnd_
.Rand8();
583 CONVERT_TO_SHORTPTR(src_
)[j
] = rnd_
.Rand16() & mask();
584 CONVERT_TO_SHORTPTR(ref_
)[j
] = rnd_
.Rand16() & mask();
588 const int stride
= width();
589 int run_time
= 1000000000 / block_size();
590 aom_usec_timer timer
;
591 aom_usec_timer_start(&timer
);
592 for (int i
= 0; i
< run_time
; ++i
) {
593 params_
.func(src_
, stride
, ref_
, stride
, &sse
);
596 aom_usec_timer_mark(&timer
);
597 const double elapsed_time
=
598 static_cast<double>(aom_usec_timer_elapsed(&timer
));
599 printf("Variance %dx%d : %7.2fns\n", width(), height(), elapsed_time
);
602 ////////////////////////////////////////////////////////////////////////////////
603 // Tests related to MSE / SSE.
605 template <typename FunctionType
>
606 void MainTestClass
<FunctionType
>::RefTestMse() {
607 for (int i
= 0; i
< 10; ++i
) {
608 for (int j
= 0; j
< block_size(); ++j
) {
609 src_
[j
] = rnd_
.Rand8();
610 ref_
[j
] = rnd_
.Rand8();
612 unsigned int sse1
, sse2
;
613 const int stride
= width();
614 ASM_REGISTER_STATE_CHECK(params_
.func(src_
, stride
, ref_
, stride
, &sse1
));
615 variance_ref(src_
, ref_
, params_
.log2width
, params_
.log2height
, stride
,
616 stride
, &sse2
, false, AOM_BITS_8
);
617 EXPECT_EQ(sse1
, sse2
);
621 template <typename FunctionType
>
622 void MainTestClass
<FunctionType
>::RefTestSse() {
623 for (int i
= 0; i
< 10; ++i
) {
624 for (int j
= 0; j
< block_size(); ++j
) {
625 src_
[j
] = rnd_
.Rand8();
626 ref_
[j
] = rnd_
.Rand8();
630 const int stride
= width();
631 ASM_REGISTER_STATE_CHECK(var1
= params_
.func(src_
, stride
, ref_
, stride
));
632 variance_ref(src_
, ref_
, params_
.log2width
, params_
.log2height
, stride
,
633 stride
, &sse2
, false, AOM_BITS_8
);
634 EXPECT_EQ(var1
, sse2
);
638 template <typename FunctionType
>
639 void MainTestClass
<FunctionType
>::MaxTestMse() {
640 memset(src_
, 255, block_size());
641 memset(ref_
, 0, block_size());
643 ASM_REGISTER_STATE_CHECK(params_
.func(src_
, width(), ref_
, width(), &sse
));
644 const unsigned int expected
= block_size() * 255 * 255;
645 EXPECT_EQ(expected
, sse
);
648 template <typename FunctionType
>
649 void MainTestClass
<FunctionType
>::MaxTestSse() {
650 memset(src_
, 255, block_size());
651 memset(ref_
, 0, block_size());
653 ASM_REGISTER_STATE_CHECK(var
= params_
.func(src_
, width(), ref_
, width()));
654 const unsigned int expected
= block_size() * 255 * 255;
655 EXPECT_EQ(expected
, var
);
658 ////////////////////////////////////////////////////////////////////////////////
660 using ::testing::get
;
661 using ::testing::make_tuple
;
662 using ::testing::tuple
;
664 template <typename FunctionType
>
665 class SubpelVarianceTest
666 : public ::testing::TestWithParam
<TestParams
<FunctionType
> > {
668 virtual void SetUp() {
669 params_
= this->GetParam();
671 rnd_
.Reset(ACMRandom::DeterministicSeed());
672 if (!use_high_bit_depth()) {
673 src_
= reinterpret_cast<uint8_t *>(aom_memalign(32, block_size()));
674 sec_
= reinterpret_cast<uint8_t *>(aom_memalign(32, block_size()));
675 ref_
= reinterpret_cast<uint8_t *>(
676 aom_memalign(32, block_size() + width() + height() + 1));
678 src_
= CONVERT_TO_BYTEPTR(reinterpret_cast<uint16_t *>(
679 aom_memalign(32, block_size() * sizeof(uint16_t))));
680 sec_
= CONVERT_TO_BYTEPTR(reinterpret_cast<uint16_t *>(
681 aom_memalign(32, block_size() * sizeof(uint16_t))));
682 ref_
= CONVERT_TO_BYTEPTR(aom_memalign(
683 32, (block_size() + width() + height() + 1) * sizeof(uint16_t)));
685 ASSERT_TRUE(src_
!= NULL
);
686 ASSERT_TRUE(sec_
!= NULL
);
687 ASSERT_TRUE(ref_
!= NULL
);
690 virtual void TearDown() {
691 if (!use_high_bit_depth()) {
696 aom_free(CONVERT_TO_SHORTPTR(src_
));
697 aom_free(CONVERT_TO_SHORTPTR(ref_
));
698 aom_free(CONVERT_TO_SHORTPTR(sec_
));
700 libaom_test::ClearSystemState();
705 void ExtremeRefTest();
711 TestParams
<FunctionType
> params_
;
712 JNT_COMP_PARAMS jcp_param_
;
714 // some relay helpers
715 bool use_high_bit_depth() const { return params_
.use_high_bit_depth
; }
716 int byte_shift() const { return params_
.bit_depth
- 8; }
717 int block_size() const { return params_
.block_size
; }
718 int width() const { return params_
.width
; }
719 int height() const { return params_
.height
; }
720 uint32_t mask() const { return params_
.mask
; }
723 template <typename SubpelVarianceFunctionType
>
724 void SubpelVarianceTest
<SubpelVarianceFunctionType
>::RefTest() {
725 for (int x
= 0; x
< 8; ++x
) {
726 for (int y
= 0; y
< 8; ++y
) {
727 if (!use_high_bit_depth()) {
728 for (int j
= 0; j
< block_size(); j
++) {
729 src_
[j
] = rnd_
.Rand8();
731 for (int j
= 0; j
< block_size() + width() + height() + 1; j
++) {
732 ref_
[j
] = rnd_
.Rand8();
735 for (int j
= 0; j
< block_size(); j
++) {
736 CONVERT_TO_SHORTPTR(src_
)[j
] = rnd_
.Rand16() & mask();
738 for (int j
= 0; j
< block_size() + width() + height() + 1; j
++) {
739 CONVERT_TO_SHORTPTR(ref_
)[j
] = rnd_
.Rand16() & mask();
742 unsigned int sse1
, sse2
;
744 ASM_REGISTER_STATE_CHECK(
745 var1
= params_
.func(ref_
, width() + 1, x
, y
, src_
, width(), &sse1
));
746 const unsigned int var2
= subpel_variance_ref(
747 ref_
, src_
, params_
.log2width
, params_
.log2height
, x
, y
, &sse2
,
748 use_high_bit_depth(), params_
.bit_depth
);
749 EXPECT_EQ(sse1
, sse2
) << "at position " << x
<< ", " << y
;
750 EXPECT_EQ(var1
, var2
) << "at position " << x
<< ", " << y
;
755 template <typename SubpelVarianceFunctionType
>
756 void SubpelVarianceTest
<SubpelVarianceFunctionType
>::ExtremeRefTest() {
757 // Compare against reference.
758 // Src: Set the first half of values to 0, the second half to the maximum.
759 // Ref: Set the first half of values to the maximum, the second half to 0.
760 for (int x
= 0; x
< 8; ++x
) {
761 for (int y
= 0; y
< 8; ++y
) {
762 const int half
= block_size() / 2;
763 if (!use_high_bit_depth()) {
764 memset(src_
, 0, half
);
765 memset(src_
+ half
, 255, half
);
766 memset(ref_
, 255, half
);
767 memset(ref_
+ half
, 0, half
+ width() + height() + 1);
769 aom_memset16(CONVERT_TO_SHORTPTR(src_
), mask(), half
);
770 aom_memset16(CONVERT_TO_SHORTPTR(src_
) + half
, 0, half
);
771 aom_memset16(CONVERT_TO_SHORTPTR(ref_
), 0, half
);
772 aom_memset16(CONVERT_TO_SHORTPTR(ref_
) + half
, mask(),
773 half
+ width() + height() + 1);
775 unsigned int sse1
, sse2
;
777 ASM_REGISTER_STATE_CHECK(
778 var1
= params_
.func(ref_
, width() + 1, x
, y
, src_
, width(), &sse1
));
779 const unsigned int var2
= subpel_variance_ref(
780 ref_
, src_
, params_
.log2width
, params_
.log2height
, x
, y
, &sse2
,
781 use_high_bit_depth(), params_
.bit_depth
);
782 EXPECT_EQ(sse1
, sse2
) << "for xoffset " << x
<< " and yoffset " << y
;
783 EXPECT_EQ(var1
, var2
) << "for xoffset " << x
<< " and yoffset " << y
;
789 void SubpelVarianceTest
<SubpixAvgVarMxNFunc
>::RefTest() {
790 for (int x
= 0; x
< 8; ++x
) {
791 for (int y
= 0; y
< 8; ++y
) {
792 if (!use_high_bit_depth()) {
793 for (int j
= 0; j
< block_size(); j
++) {
794 src_
[j
] = rnd_
.Rand8();
795 sec_
[j
] = rnd_
.Rand8();
797 for (int j
= 0; j
< block_size() + width() + height() + 1; j
++) {
798 ref_
[j
] = rnd_
.Rand8();
801 for (int j
= 0; j
< block_size(); j
++) {
802 CONVERT_TO_SHORTPTR(src_
)[j
] = rnd_
.Rand16() & mask();
803 CONVERT_TO_SHORTPTR(sec_
)[j
] = rnd_
.Rand16() & mask();
805 for (int j
= 0; j
< block_size() + width() + height() + 1; j
++) {
806 CONVERT_TO_SHORTPTR(ref_
)[j
] = rnd_
.Rand16() & mask();
811 ASM_REGISTER_STATE_CHECK(var1
= params_
.func(ref_
, width() + 1, x
, y
,
812 src_
, width(), &sse1
, sec_
));
813 var2
= subpel_avg_variance_ref(ref_
, src_
, sec_
, params_
.log2width
,
814 params_
.log2height
, x
, y
, &sse2
,
815 use_high_bit_depth(), params_
.bit_depth
);
816 EXPECT_EQ(sse1
, sse2
) << "at position " << x
<< ", " << y
;
817 EXPECT_EQ(var1
, var2
) << "at position " << x
<< ", " << y
;
823 void SubpelVarianceTest
<JntSubpixAvgVarMxNFunc
>::RefTest() {
824 for (int x
= 0; x
< 8; ++x
) {
825 for (int y
= 0; y
< 8; ++y
) {
826 if (!use_high_bit_depth()) {
827 for (int j
= 0; j
< block_size(); j
++) {
828 src_
[j
] = rnd_
.Rand8();
829 sec_
[j
] = rnd_
.Rand8();
831 for (int j
= 0; j
< block_size() + width() + height() + 1; j
++) {
832 ref_
[j
] = rnd_
.Rand8();
835 for (int j
= 0; j
< block_size(); j
++) {
836 CONVERT_TO_SHORTPTR(src_
)[j
] = rnd_
.Rand16() & mask();
837 CONVERT_TO_SHORTPTR(sec_
)[j
] = rnd_
.Rand16() & mask();
839 for (int j
= 0; j
< block_size() + width() + height() + 1; j
++) {
840 CONVERT_TO_SHORTPTR(ref_
)[j
] = rnd_
.Rand16() & mask();
843 for (int x0
= 0; x0
< 2; ++x0
) {
844 for (int y0
= 0; y0
< 4; ++y0
) {
847 jcp_param_
.fwd_offset
= quant_dist_lookup_table
[x0
][y0
][0];
848 jcp_param_
.bck_offset
= quant_dist_lookup_table
[x0
][y0
][1];
849 ASM_REGISTER_STATE_CHECK(var1
= params_
.func(ref_
, width() + 0, x
, y
,
850 src_
, width(), &sse1
,
852 var2
= jnt_subpel_avg_variance_ref(
853 ref_
, src_
, sec_
, params_
.log2width
, params_
.log2height
, x
, y
,
854 &sse2
, use_high_bit_depth(), params_
.bit_depth
, &jcp_param_
);
855 EXPECT_EQ(sse1
, sse2
) << "at position " << x
<< ", " << y
;
856 EXPECT_EQ(var1
, var2
) << "at position " << x
<< ", " << y
;
863 ////////////////////////////////////////////////////////////////////////////////
865 static const int kMaskMax
= 64;
867 typedef TestParams
<ObmcSubpelVarFunc
> ObmcSubpelVarianceParams
;
869 template <typename FunctionType
>
870 class ObmcVarianceTest
871 : public ::testing::TestWithParam
<TestParams
<FunctionType
> > {
873 virtual void SetUp() {
874 params_
= this->GetParam();
876 rnd_
.Reset(ACMRandom::DeterministicSeed());
877 if (!use_high_bit_depth()) {
878 pre_
= reinterpret_cast<uint8_t *>(
879 aom_memalign(32, block_size() + width() + height() + 1));
881 pre_
= CONVERT_TO_BYTEPTR(reinterpret_cast<uint16_t *>(aom_memalign(
882 32, block_size() + width() + height() + 1 * sizeof(uint16_t))));
884 wsrc_
= reinterpret_cast<int32_t *>(
885 aom_memalign(32, block_size() * sizeof(uint32_t)));
886 mask_
= reinterpret_cast<int32_t *>(
887 aom_memalign(32, block_size() * sizeof(uint32_t)));
888 ASSERT_TRUE(pre_
!= NULL
);
889 ASSERT_TRUE(wsrc_
!= NULL
);
890 ASSERT_TRUE(mask_
!= NULL
);
893 virtual void TearDown() {
894 if (!use_high_bit_depth()) {
897 aom_free(CONVERT_TO_SHORTPTR(pre_
));
901 libaom_test::ClearSystemState();
906 void ExtremeRefTest();
913 TestParams
<FunctionType
> params_
;
915 // some relay helpers
916 bool use_high_bit_depth() const { return params_
.use_high_bit_depth
; }
917 int byte_shift() const { return params_
.bit_depth
- 8; }
918 int block_size() const { return params_
.block_size
; }
919 int width() const { return params_
.width
; }
920 int height() const { return params_
.height
; }
921 uint32_t bd_mask() const { return params_
.mask
; }
925 void ObmcVarianceTest
<ObmcSubpelVarFunc
>::RefTest() {
926 for (int x
= 0; x
< 8; ++x
) {
927 for (int y
= 0; y
< 8; ++y
) {
928 if (!use_high_bit_depth())
929 for (int j
= 0; j
< block_size() + width() + height() + 1; j
++)
930 pre_
[j
] = rnd_
.Rand8();
932 for (int j
= 0; j
< block_size() + width() + height() + 1; j
++)
933 CONVERT_TO_SHORTPTR(pre_
)[j
] = rnd_
.Rand16() & bd_mask();
934 for (int j
= 0; j
< block_size(); j
++) {
935 wsrc_
[j
] = (rnd_
.Rand16() & bd_mask()) * rnd_(kMaskMax
* kMaskMax
+ 1);
936 mask_
[j
] = rnd_(kMaskMax
* kMaskMax
+ 1);
941 ASM_REGISTER_STATE_CHECK(
942 var1
= params_
.func(pre_
, width() + 1, x
, y
, wsrc_
, mask_
, &sse1
));
943 var2
= obmc_subpel_variance_ref(
944 pre_
, params_
.log2width
, params_
.log2height
, x
, y
, wsrc_
, mask_
,
945 &sse2
, use_high_bit_depth(), params_
.bit_depth
);
946 EXPECT_EQ(sse1
, sse2
) << "for xoffset " << x
<< " and yoffset " << y
;
947 EXPECT_EQ(var1
, var2
) << "for xoffset " << x
<< " and yoffset " << y
;
953 void ObmcVarianceTest
<ObmcSubpelVarFunc
>::ExtremeRefTest() {
954 // Pre: Set the first half of values to the maximum, the second half to 0.
955 // Mask: same as above
956 // WSrc: Set the first half of values to 0, the second half to the maximum.
957 for (int x
= 0; x
< 8; ++x
) {
958 for (int y
= 0; y
< 8; ++y
) {
959 const int half
= block_size() / 2;
960 if (!use_high_bit_depth()) {
961 memset(pre_
, 255, half
);
962 memset(pre_
+ half
, 0, half
+ width() + height() + 1);
964 aom_memset16(CONVERT_TO_SHORTPTR(pre_
), bd_mask(), half
);
965 aom_memset16(CONVERT_TO_SHORTPTR(pre_
) + half
, 0, half
);
967 for (int j
= 0; j
< half
; j
++) {
968 wsrc_
[j
] = bd_mask() * kMaskMax
* kMaskMax
;
971 for (int j
= half
; j
< block_size(); j
++) {
973 mask_
[j
] = kMaskMax
* kMaskMax
;
978 ASM_REGISTER_STATE_CHECK(
979 var1
= params_
.func(pre_
, width() + 1, x
, y
, wsrc_
, mask_
, &sse1
));
980 var2
= obmc_subpel_variance_ref(
981 pre_
, params_
.log2width
, params_
.log2height
, x
, y
, wsrc_
, mask_
,
982 &sse2
, use_high_bit_depth(), params_
.bit_depth
);
983 EXPECT_EQ(sse1
, sse2
) << "for xoffset " << x
<< " and yoffset " << y
;
984 EXPECT_EQ(var1
, var2
) << "for xoffset " << x
<< " and yoffset " << y
;
990 void ObmcVarianceTest
<ObmcSubpelVarFunc
>::SpeedTest() {
991 if (!use_high_bit_depth())
992 for (int j
= 0; j
< block_size() + width() + height() + 1; j
++)
993 pre_
[j
] = rnd_
.Rand8();
995 for (int j
= 0; j
< block_size() + width() + height() + 1; j
++)
996 CONVERT_TO_SHORTPTR(pre_
)[j
] = rnd_
.Rand16() & bd_mask();
997 for (int j
= 0; j
< block_size(); j
++) {
998 wsrc_
[j
] = (rnd_
.Rand16() & bd_mask()) * rnd_(kMaskMax
* kMaskMax
+ 1);
999 mask_
[j
] = rnd_(kMaskMax
* kMaskMax
+ 1);
1002 const int stride
= width() + 1;
1003 int run_time
= 1000000000 / block_size();
1004 aom_usec_timer timer
;
1006 aom_usec_timer_start(&timer
);
1007 for (int i
= 0; i
< run_time
; ++i
) {
1010 ASM_REGISTER_STATE_CHECK(
1011 params_
.func(pre_
, stride
, x
, y
, wsrc_
, mask_
, &sse1
));
1013 aom_usec_timer_mark(&timer
);
1015 const int elapsed_time
= static_cast<int>(aom_usec_timer_elapsed(&timer
));
1016 printf("obmc_sub_pixel_variance_%dx%d_%d: %d us\n", width(), height(),
1017 params_
.bit_depth
, elapsed_time
);
1020 typedef MainTestClass
<Get4x4SseFunc
> AvxSseTest
;
1021 typedef MainTestClass
<VarianceMxNFunc
> AvxMseTest
;
1022 typedef MainTestClass
<VarianceMxNFunc
> AvxVarianceTest
;
1023 typedef SubpelVarianceTest
<SubpixVarMxNFunc
> AvxSubpelVarianceTest
;
1024 typedef SubpelVarianceTest
<SubpixAvgVarMxNFunc
> AvxSubpelAvgVarianceTest
;
1025 typedef SubpelVarianceTest
<JntSubpixAvgVarMxNFunc
> AvxJntSubpelAvgVarianceTest
;
1026 typedef ObmcVarianceTest
<ObmcSubpelVarFunc
> AvxObmcSubpelVarianceTest
;
1028 TEST_P(AvxSseTest
, RefSse
) { RefTestSse(); }
1029 TEST_P(AvxSseTest
, MaxSse
) { MaxTestSse(); }
1030 TEST_P(AvxMseTest
, RefMse
) { RefTestMse(); }
1031 TEST_P(AvxMseTest
, MaxMse
) { MaxTestMse(); }
1032 TEST_P(AvxVarianceTest
, Zero
) { ZeroTest(); }
1033 TEST_P(AvxVarianceTest
, Ref
) { RefTest(); }
1034 TEST_P(AvxVarianceTest
, RefStride
) { RefStrideTest(); }
1035 TEST_P(AvxVarianceTest
, OneQuarter
) { OneQuarterTest(); }
1036 TEST_P(AvxVarianceTest
, DISABLED_Speed
) { SpeedTest(); }
1037 TEST_P(SumOfSquaresTest
, Const
) { ConstTest(); }
1038 TEST_P(SumOfSquaresTest
, Ref
) { RefTest(); }
1039 TEST_P(AvxSubpelVarianceTest
, Ref
) { RefTest(); }
1040 TEST_P(AvxSubpelVarianceTest
, ExtremeRef
) { ExtremeRefTest(); }
1041 TEST_P(AvxSubpelAvgVarianceTest
, Ref
) { RefTest(); }
1042 TEST_P(AvxJntSubpelAvgVarianceTest
, Ref
) { RefTest(); }
1043 TEST_P(AvxObmcSubpelVarianceTest
, Ref
) { RefTest(); }
1044 TEST_P(AvxObmcSubpelVarianceTest
, ExtremeRef
) { ExtremeRefTest(); }
1045 TEST_P(AvxObmcSubpelVarianceTest
, DISABLED_Speed
) { SpeedTest(); }
1047 INSTANTIATE_TEST_CASE_P(C
, SumOfSquaresTest
,
1048 ::testing::Values(aom_get_mb_ss_c
));
1050 typedef TestParams
<Get4x4SseFunc
> SseParams
;
1051 INSTANTIATE_TEST_CASE_P(C
, AvxSseTest
,
1052 ::testing::Values(SseParams(2, 2,
1053 &aom_get4x4sse_cs_c
)));
1055 typedef TestParams
<VarianceMxNFunc
> MseParams
;
1056 INSTANTIATE_TEST_CASE_P(C
, AvxMseTest
,
1057 ::testing::Values(MseParams(4, 4, &aom_mse16x16_c
),
1058 MseParams(4, 3, &aom_mse16x8_c
),
1059 MseParams(3, 4, &aom_mse8x16_c
),
1060 MseParams(3, 3, &aom_mse8x8_c
)));
1062 typedef TestParams
<VarianceMxNFunc
> VarianceParams
;
1063 INSTANTIATE_TEST_CASE_P(
1065 ::testing::Values(VarianceParams(7, 7, &aom_variance128x128_c
),
1066 VarianceParams(7, 6, &aom_variance128x64_c
),
1067 VarianceParams(6, 7, &aom_variance64x128_c
),
1068 VarianceParams(6, 6, &aom_variance64x64_c
),
1069 VarianceParams(6, 5, &aom_variance64x32_c
),
1070 VarianceParams(5, 6, &aom_variance32x64_c
),
1071 VarianceParams(5, 5, &aom_variance32x32_c
),
1072 VarianceParams(5, 4, &aom_variance32x16_c
),
1073 VarianceParams(4, 5, &aom_variance16x32_c
),
1074 VarianceParams(4, 4, &aom_variance16x16_c
),
1075 VarianceParams(4, 3, &aom_variance16x8_c
),
1076 VarianceParams(3, 4, &aom_variance8x16_c
),
1077 VarianceParams(3, 3, &aom_variance8x8_c
),
1078 VarianceParams(3, 2, &aom_variance8x4_c
),
1079 VarianceParams(2, 3, &aom_variance4x8_c
),
1080 VarianceParams(2, 2, &aom_variance4x4_c
)));
1082 typedef TestParams
<SubpixVarMxNFunc
> SubpelVarianceParams
;
1083 INSTANTIATE_TEST_CASE_P(
1084 C
, AvxSubpelVarianceTest
,
1086 SubpelVarianceParams(7, 7, &aom_sub_pixel_variance128x128_c
, 0),
1087 SubpelVarianceParams(7, 6, &aom_sub_pixel_variance128x64_c
, 0),
1088 SubpelVarianceParams(6, 7, &aom_sub_pixel_variance64x128_c
, 0),
1089 SubpelVarianceParams(6, 6, &aom_sub_pixel_variance64x64_c
, 0),
1090 SubpelVarianceParams(6, 5, &aom_sub_pixel_variance64x32_c
, 0),
1091 SubpelVarianceParams(5, 6, &aom_sub_pixel_variance32x64_c
, 0),
1092 SubpelVarianceParams(5, 5, &aom_sub_pixel_variance32x32_c
, 0),
1093 SubpelVarianceParams(5, 4, &aom_sub_pixel_variance32x16_c
, 0),
1094 SubpelVarianceParams(4, 5, &aom_sub_pixel_variance16x32_c
, 0),
1095 SubpelVarianceParams(4, 4, &aom_sub_pixel_variance16x16_c
, 0),
1096 SubpelVarianceParams(4, 3, &aom_sub_pixel_variance16x8_c
, 0),
1097 SubpelVarianceParams(3, 4, &aom_sub_pixel_variance8x16_c
, 0),
1098 SubpelVarianceParams(3, 3, &aom_sub_pixel_variance8x8_c
, 0),
1099 SubpelVarianceParams(3, 2, &aom_sub_pixel_variance8x4_c
, 0),
1100 SubpelVarianceParams(2, 3, &aom_sub_pixel_variance4x8_c
, 0),
1101 SubpelVarianceParams(2, 2, &aom_sub_pixel_variance4x4_c
, 0)));
1103 typedef TestParams
<SubpixAvgVarMxNFunc
> SubpelAvgVarianceParams
;
1104 INSTANTIATE_TEST_CASE_P(
1105 C
, AvxSubpelAvgVarianceTest
,
1107 SubpelAvgVarianceParams(7, 7, &aom_sub_pixel_avg_variance128x128_c
, 0),
1108 SubpelAvgVarianceParams(7, 6, &aom_sub_pixel_avg_variance128x64_c
, 0),
1109 SubpelAvgVarianceParams(6, 7, &aom_sub_pixel_avg_variance64x128_c
, 0),
1110 SubpelAvgVarianceParams(6, 6, &aom_sub_pixel_avg_variance64x64_c
, 0),
1111 SubpelAvgVarianceParams(6, 5, &aom_sub_pixel_avg_variance64x32_c
, 0),
1112 SubpelAvgVarianceParams(5, 6, &aom_sub_pixel_avg_variance32x64_c
, 0),
1113 SubpelAvgVarianceParams(5, 5, &aom_sub_pixel_avg_variance32x32_c
, 0),
1114 SubpelAvgVarianceParams(5, 4, &aom_sub_pixel_avg_variance32x16_c
, 0),
1115 SubpelAvgVarianceParams(4, 5, &aom_sub_pixel_avg_variance16x32_c
, 0),
1116 SubpelAvgVarianceParams(4, 4, &aom_sub_pixel_avg_variance16x16_c
, 0),
1117 SubpelAvgVarianceParams(4, 3, &aom_sub_pixel_avg_variance16x8_c
, 0),
1118 SubpelAvgVarianceParams(3, 4, &aom_sub_pixel_avg_variance8x16_c
, 0),
1119 SubpelAvgVarianceParams(3, 3, &aom_sub_pixel_avg_variance8x8_c
, 0),
1120 SubpelAvgVarianceParams(3, 2, &aom_sub_pixel_avg_variance8x4_c
, 0),
1121 SubpelAvgVarianceParams(2, 3, &aom_sub_pixel_avg_variance4x8_c
, 0),
1122 SubpelAvgVarianceParams(2, 2, &aom_sub_pixel_avg_variance4x4_c
, 0)));
1124 typedef TestParams
<JntSubpixAvgVarMxNFunc
> JntSubpelAvgVarianceParams
;
1125 INSTANTIATE_TEST_CASE_P(
1126 C
, AvxJntSubpelAvgVarianceTest
,
1128 JntSubpelAvgVarianceParams(6, 6, &aom_jnt_sub_pixel_avg_variance64x64_c
,
1130 JntSubpelAvgVarianceParams(6, 5, &aom_jnt_sub_pixel_avg_variance64x32_c
,
1132 JntSubpelAvgVarianceParams(5, 6, &aom_jnt_sub_pixel_avg_variance32x64_c
,
1134 JntSubpelAvgVarianceParams(5, 5, &aom_jnt_sub_pixel_avg_variance32x32_c
,
1136 JntSubpelAvgVarianceParams(5, 4, &aom_jnt_sub_pixel_avg_variance32x16_c
,
1138 JntSubpelAvgVarianceParams(4, 5, &aom_jnt_sub_pixel_avg_variance16x32_c
,
1140 JntSubpelAvgVarianceParams(4, 4, &aom_jnt_sub_pixel_avg_variance16x16_c
,
1142 JntSubpelAvgVarianceParams(4, 3, &aom_jnt_sub_pixel_avg_variance16x8_c
,
1144 JntSubpelAvgVarianceParams(3, 4, &aom_jnt_sub_pixel_avg_variance8x16_c
,
1146 JntSubpelAvgVarianceParams(3, 3, &aom_jnt_sub_pixel_avg_variance8x8_c
,
1148 JntSubpelAvgVarianceParams(3, 2, &aom_jnt_sub_pixel_avg_variance8x4_c
,
1150 JntSubpelAvgVarianceParams(2, 3, &aom_jnt_sub_pixel_avg_variance4x8_c
,
1152 JntSubpelAvgVarianceParams(2, 2, &aom_jnt_sub_pixel_avg_variance4x4_c
,
1155 INSTANTIATE_TEST_CASE_P(
1156 C
, AvxObmcSubpelVarianceTest
,
1158 ObmcSubpelVarianceParams(7, 7, &aom_obmc_sub_pixel_variance128x128_c
,
1160 ObmcSubpelVarianceParams(7, 6, &aom_obmc_sub_pixel_variance128x64_c
, 0),
1161 ObmcSubpelVarianceParams(6, 7, &aom_obmc_sub_pixel_variance64x128_c
, 0),
1162 ObmcSubpelVarianceParams(6, 6, &aom_obmc_sub_pixel_variance64x64_c
, 0),
1163 ObmcSubpelVarianceParams(6, 5, &aom_obmc_sub_pixel_variance64x32_c
, 0),
1164 ObmcSubpelVarianceParams(5, 6, &aom_obmc_sub_pixel_variance32x64_c
, 0),
1165 ObmcSubpelVarianceParams(5, 5, &aom_obmc_sub_pixel_variance32x32_c
, 0),
1166 ObmcSubpelVarianceParams(5, 4, &aom_obmc_sub_pixel_variance32x16_c
, 0),
1167 ObmcSubpelVarianceParams(4, 5, &aom_obmc_sub_pixel_variance16x32_c
, 0),
1168 ObmcSubpelVarianceParams(4, 4, &aom_obmc_sub_pixel_variance16x16_c
, 0),
1169 ObmcSubpelVarianceParams(4, 3, &aom_obmc_sub_pixel_variance16x8_c
, 0),
1170 ObmcSubpelVarianceParams(3, 4, &aom_obmc_sub_pixel_variance8x16_c
, 0),
1171 ObmcSubpelVarianceParams(3, 3, &aom_obmc_sub_pixel_variance8x8_c
, 0),
1172 ObmcSubpelVarianceParams(3, 2, &aom_obmc_sub_pixel_variance8x4_c
, 0),
1173 ObmcSubpelVarianceParams(2, 3, &aom_obmc_sub_pixel_variance4x8_c
, 0),
1174 ObmcSubpelVarianceParams(2, 2, &aom_obmc_sub_pixel_variance4x4_c
, 0)));
1176 typedef MainTestClass
<VarianceMxNFunc
> AvxHBDMseTest
;
1177 typedef MainTestClass
<VarianceMxNFunc
> AvxHBDVarianceTest
;
1178 typedef SubpelVarianceTest
<SubpixVarMxNFunc
> AvxHBDSubpelVarianceTest
;
1179 typedef SubpelVarianceTest
<SubpixAvgVarMxNFunc
> AvxHBDSubpelAvgVarianceTest
;
1180 typedef ObmcVarianceTest
<ObmcSubpelVarFunc
> AvxHBDObmcSubpelVarianceTest
;
1182 TEST_P(AvxHBDMseTest
, RefMse
) { RefTestMse(); }
1183 TEST_P(AvxHBDMseTest
, MaxMse
) { MaxTestMse(); }
1184 TEST_P(AvxHBDVarianceTest
, Zero
) { ZeroTest(); }
1185 TEST_P(AvxHBDVarianceTest
, Ref
) { RefTest(); }
1186 TEST_P(AvxHBDVarianceTest
, RefStride
) { RefStrideTest(); }
1187 TEST_P(AvxHBDVarianceTest
, OneQuarter
) { OneQuarterTest(); }
1188 TEST_P(AvxHBDVarianceTest
, DISABLED_Speed
) { SpeedTest(); }
1189 TEST_P(AvxHBDSubpelVarianceTest
, Ref
) { RefTest(); }
1190 TEST_P(AvxHBDSubpelVarianceTest
, ExtremeRef
) { ExtremeRefTest(); }
1191 TEST_P(AvxHBDSubpelAvgVarianceTest
, Ref
) { RefTest(); }
1193 /* TODO(debargha): This test does not support the highbd version
1194 INSTANTIATE_TEST_CASE_P(
1196 ::testing::Values(make_tuple(4, 4, &aom_highbd_12_mse16x16_c),
1197 make_tuple(4, 4, &aom_highbd_12_mse16x8_c),
1198 make_tuple(4, 4, &aom_highbd_12_mse8x16_c),
1199 make_tuple(4, 4, &aom_highbd_12_mse8x8_c),
1200 make_tuple(4, 4, &aom_highbd_10_mse16x16_c),
1201 make_tuple(4, 4, &aom_highbd_10_mse16x8_c),
1202 make_tuple(4, 4, &aom_highbd_10_mse8x16_c),
1203 make_tuple(4, 4, &aom_highbd_10_mse8x8_c),
1204 make_tuple(4, 4, &aom_highbd_8_mse16x16_c),
1205 make_tuple(4, 4, &aom_highbd_8_mse16x8_c),
1206 make_tuple(4, 4, &aom_highbd_8_mse8x16_c),
1207 make_tuple(4, 4, &aom_highbd_8_mse8x8_c)));
1210 const VarianceParams kArrayHBDVariance_c
[] = {
1211 VarianceParams(7, 7, &aom_highbd_12_variance128x128_c
, 12),
1212 VarianceParams(7, 6, &aom_highbd_12_variance128x64_c
, 12),
1213 VarianceParams(6, 7, &aom_highbd_12_variance64x128_c
, 12),
1214 VarianceParams(6, 6, &aom_highbd_12_variance64x64_c
, 12),
1215 VarianceParams(6, 5, &aom_highbd_12_variance64x32_c
, 12),
1216 VarianceParams(5, 6, &aom_highbd_12_variance32x64_c
, 12),
1217 VarianceParams(5, 5, &aom_highbd_12_variance32x32_c
, 12),
1218 VarianceParams(5, 4, &aom_highbd_12_variance32x16_c
, 12),
1219 VarianceParams(4, 5, &aom_highbd_12_variance16x32_c
, 12),
1220 VarianceParams(4, 4, &aom_highbd_12_variance16x16_c
, 12),
1221 VarianceParams(4, 3, &aom_highbd_12_variance16x8_c
, 12),
1222 VarianceParams(3, 4, &aom_highbd_12_variance8x16_c
, 12),
1223 VarianceParams(3, 3, &aom_highbd_12_variance8x8_c
, 12),
1224 VarianceParams(3, 2, &aom_highbd_12_variance8x4_c
, 12),
1225 VarianceParams(2, 3, &aom_highbd_12_variance4x8_c
, 12),
1226 VarianceParams(2, 2, &aom_highbd_12_variance4x4_c
, 12),
1227 VarianceParams(7, 7, &aom_highbd_10_variance128x128_c
, 10),
1228 VarianceParams(7, 6, &aom_highbd_10_variance128x64_c
, 10),
1229 VarianceParams(6, 7, &aom_highbd_10_variance64x128_c
, 10),
1230 VarianceParams(6, 6, &aom_highbd_10_variance64x64_c
, 10),
1231 VarianceParams(6, 5, &aom_highbd_10_variance64x32_c
, 10),
1232 VarianceParams(5, 6, &aom_highbd_10_variance32x64_c
, 10),
1233 VarianceParams(5, 5, &aom_highbd_10_variance32x32_c
, 10),
1234 VarianceParams(5, 4, &aom_highbd_10_variance32x16_c
, 10),
1235 VarianceParams(4, 5, &aom_highbd_10_variance16x32_c
, 10),
1236 VarianceParams(4, 4, &aom_highbd_10_variance16x16_c
, 10),
1237 VarianceParams(4, 3, &aom_highbd_10_variance16x8_c
, 10),
1238 VarianceParams(3, 4, &aom_highbd_10_variance8x16_c
, 10),
1239 VarianceParams(3, 3, &aom_highbd_10_variance8x8_c
, 10),
1240 VarianceParams(3, 2, &aom_highbd_10_variance8x4_c
, 10),
1241 VarianceParams(2, 3, &aom_highbd_10_variance4x8_c
, 10),
1242 VarianceParams(2, 2, &aom_highbd_10_variance4x4_c
, 10),
1243 VarianceParams(7, 7, &aom_highbd_8_variance128x128_c
, 8),
1244 VarianceParams(7, 6, &aom_highbd_8_variance128x64_c
, 8),
1245 VarianceParams(6, 7, &aom_highbd_8_variance64x128_c
, 8),
1246 VarianceParams(6, 6, &aom_highbd_8_variance64x64_c
, 8),
1247 VarianceParams(6, 5, &aom_highbd_8_variance64x32_c
, 8),
1248 VarianceParams(5, 6, &aom_highbd_8_variance32x64_c
, 8),
1249 VarianceParams(5, 5, &aom_highbd_8_variance32x32_c
, 8),
1250 VarianceParams(5, 4, &aom_highbd_8_variance32x16_c
, 8),
1251 VarianceParams(4, 5, &aom_highbd_8_variance16x32_c
, 8),
1252 VarianceParams(4, 4, &aom_highbd_8_variance16x16_c
, 8),
1253 VarianceParams(4, 3, &aom_highbd_8_variance16x8_c
, 8),
1254 VarianceParams(3, 4, &aom_highbd_8_variance8x16_c
, 8),
1255 VarianceParams(3, 3, &aom_highbd_8_variance8x8_c
, 8),
1256 VarianceParams(3, 2, &aom_highbd_8_variance8x4_c
, 8),
1257 VarianceParams(2, 3, &aom_highbd_8_variance4x8_c
, 8),
1258 VarianceParams(2, 2, &aom_highbd_8_variance4x4_c
, 8)
1260 INSTANTIATE_TEST_CASE_P(C
, AvxHBDVarianceTest
,
1261 ::testing::ValuesIn(kArrayHBDVariance_c
));
1264 INSTANTIATE_TEST_CASE_P(
1265 SSE4_1
, AvxHBDVarianceTest
,
1267 VarianceParams(2, 2, &aom_highbd_8_variance4x4_sse4_1
, 8),
1268 VarianceParams(2, 2, &aom_highbd_10_variance4x4_sse4_1
, 10),
1269 VarianceParams(2, 2, &aom_highbd_12_variance4x4_sse4_1
, 12)));
1270 #endif // HAVE_SSE4_1
1272 const SubpelVarianceParams kArrayHBDSubpelVariance_c
[] = {
1273 SubpelVarianceParams(7, 7, &aom_highbd_8_sub_pixel_variance128x128_c
, 8),
1274 SubpelVarianceParams(7, 6, &aom_highbd_8_sub_pixel_variance128x64_c
, 8),
1275 SubpelVarianceParams(6, 7, &aom_highbd_8_sub_pixel_variance64x128_c
, 8),
1276 SubpelVarianceParams(6, 6, &aom_highbd_8_sub_pixel_variance64x64_c
, 8),
1277 SubpelVarianceParams(6, 5, &aom_highbd_8_sub_pixel_variance64x32_c
, 8),
1278 SubpelVarianceParams(5, 6, &aom_highbd_8_sub_pixel_variance32x64_c
, 8),
1279 SubpelVarianceParams(5, 5, &aom_highbd_8_sub_pixel_variance32x32_c
, 8),
1280 SubpelVarianceParams(5, 4, &aom_highbd_8_sub_pixel_variance32x16_c
, 8),
1281 SubpelVarianceParams(4, 5, &aom_highbd_8_sub_pixel_variance16x32_c
, 8),
1282 SubpelVarianceParams(4, 4, &aom_highbd_8_sub_pixel_variance16x16_c
, 8),
1283 SubpelVarianceParams(4, 3, &aom_highbd_8_sub_pixel_variance16x8_c
, 8),
1284 SubpelVarianceParams(3, 4, &aom_highbd_8_sub_pixel_variance8x16_c
, 8),
1285 SubpelVarianceParams(3, 3, &aom_highbd_8_sub_pixel_variance8x8_c
, 8),
1286 SubpelVarianceParams(3, 2, &aom_highbd_8_sub_pixel_variance8x4_c
, 8),
1287 SubpelVarianceParams(2, 3, &aom_highbd_8_sub_pixel_variance4x8_c
, 8),
1288 SubpelVarianceParams(2, 2, &aom_highbd_8_sub_pixel_variance4x4_c
, 8),
1289 SubpelVarianceParams(7, 7, &aom_highbd_10_sub_pixel_variance128x128_c
, 10),
1290 SubpelVarianceParams(7, 6, &aom_highbd_10_sub_pixel_variance128x64_c
, 10),
1291 SubpelVarianceParams(6, 7, &aom_highbd_10_sub_pixel_variance64x128_c
, 10),
1292 SubpelVarianceParams(6, 6, &aom_highbd_10_sub_pixel_variance64x64_c
, 10),
1293 SubpelVarianceParams(6, 5, &aom_highbd_10_sub_pixel_variance64x32_c
, 10),
1294 SubpelVarianceParams(5, 6, &aom_highbd_10_sub_pixel_variance32x64_c
, 10),
1295 SubpelVarianceParams(5, 5, &aom_highbd_10_sub_pixel_variance32x32_c
, 10),
1296 SubpelVarianceParams(5, 4, &aom_highbd_10_sub_pixel_variance32x16_c
, 10),
1297 SubpelVarianceParams(4, 5, &aom_highbd_10_sub_pixel_variance16x32_c
, 10),
1298 SubpelVarianceParams(4, 4, &aom_highbd_10_sub_pixel_variance16x16_c
, 10),
1299 SubpelVarianceParams(4, 3, &aom_highbd_10_sub_pixel_variance16x8_c
, 10),
1300 SubpelVarianceParams(3, 4, &aom_highbd_10_sub_pixel_variance8x16_c
, 10),
1301 SubpelVarianceParams(3, 3, &aom_highbd_10_sub_pixel_variance8x8_c
, 10),
1302 SubpelVarianceParams(3, 2, &aom_highbd_10_sub_pixel_variance8x4_c
, 10),
1303 SubpelVarianceParams(2, 3, &aom_highbd_10_sub_pixel_variance4x8_c
, 10),
1304 SubpelVarianceParams(2, 2, &aom_highbd_10_sub_pixel_variance4x4_c
, 10),
1305 SubpelVarianceParams(7, 7, &aom_highbd_12_sub_pixel_variance128x128_c
, 12),
1306 SubpelVarianceParams(7, 6, &aom_highbd_12_sub_pixel_variance128x64_c
, 12),
1307 SubpelVarianceParams(6, 7, &aom_highbd_12_sub_pixel_variance64x128_c
, 12),
1308 SubpelVarianceParams(6, 6, &aom_highbd_12_sub_pixel_variance64x64_c
, 12),
1309 SubpelVarianceParams(6, 5, &aom_highbd_12_sub_pixel_variance64x32_c
, 12),
1310 SubpelVarianceParams(5, 6, &aom_highbd_12_sub_pixel_variance32x64_c
, 12),
1311 SubpelVarianceParams(5, 5, &aom_highbd_12_sub_pixel_variance32x32_c
, 12),
1312 SubpelVarianceParams(5, 4, &aom_highbd_12_sub_pixel_variance32x16_c
, 12),
1313 SubpelVarianceParams(4, 5, &aom_highbd_12_sub_pixel_variance16x32_c
, 12),
1314 SubpelVarianceParams(4, 4, &aom_highbd_12_sub_pixel_variance16x16_c
, 12),
1315 SubpelVarianceParams(4, 3, &aom_highbd_12_sub_pixel_variance16x8_c
, 12),
1316 SubpelVarianceParams(3, 4, &aom_highbd_12_sub_pixel_variance8x16_c
, 12),
1317 SubpelVarianceParams(3, 3, &aom_highbd_12_sub_pixel_variance8x8_c
, 12),
1318 SubpelVarianceParams(3, 2, &aom_highbd_12_sub_pixel_variance8x4_c
, 12),
1319 SubpelVarianceParams(2, 3, &aom_highbd_12_sub_pixel_variance4x8_c
, 12),
1320 SubpelVarianceParams(2, 2, &aom_highbd_12_sub_pixel_variance4x4_c
, 12),
1322 INSTANTIATE_TEST_CASE_P(C
, AvxHBDSubpelVarianceTest
,
1323 ::testing::ValuesIn(kArrayHBDSubpelVariance_c
));
1325 const SubpelAvgVarianceParams kArrayHBDSubpelAvgVariance_c
[] = {
1326 SubpelAvgVarianceParams(7, 7, &aom_highbd_8_sub_pixel_avg_variance128x128_c
,
1328 SubpelAvgVarianceParams(7, 6, &aom_highbd_8_sub_pixel_avg_variance128x64_c
,
1330 SubpelAvgVarianceParams(6, 7, &aom_highbd_8_sub_pixel_avg_variance64x128_c
,
1332 SubpelAvgVarianceParams(6, 6, &aom_highbd_8_sub_pixel_avg_variance64x64_c
, 8),
1333 SubpelAvgVarianceParams(6, 5, &aom_highbd_8_sub_pixel_avg_variance64x32_c
, 8),
1334 SubpelAvgVarianceParams(5, 6, &aom_highbd_8_sub_pixel_avg_variance32x64_c
, 8),
1335 SubpelAvgVarianceParams(5, 5, &aom_highbd_8_sub_pixel_avg_variance32x32_c
, 8),
1336 SubpelAvgVarianceParams(5, 4, &aom_highbd_8_sub_pixel_avg_variance32x16_c
, 8),
1337 SubpelAvgVarianceParams(4, 5, &aom_highbd_8_sub_pixel_avg_variance16x32_c
, 8),
1338 SubpelAvgVarianceParams(4, 4, &aom_highbd_8_sub_pixel_avg_variance16x16_c
, 8),
1339 SubpelAvgVarianceParams(4, 3, &aom_highbd_8_sub_pixel_avg_variance16x8_c
, 8),
1340 SubpelAvgVarianceParams(3, 4, &aom_highbd_8_sub_pixel_avg_variance8x16_c
, 8),
1341 SubpelAvgVarianceParams(3, 3, &aom_highbd_8_sub_pixel_avg_variance8x8_c
, 8),
1342 SubpelAvgVarianceParams(3, 2, &aom_highbd_8_sub_pixel_avg_variance8x4_c
, 8),
1343 SubpelAvgVarianceParams(2, 3, &aom_highbd_8_sub_pixel_avg_variance4x8_c
, 8),
1344 SubpelAvgVarianceParams(2, 2, &aom_highbd_8_sub_pixel_avg_variance4x4_c
, 8),
1345 SubpelAvgVarianceParams(7, 7, &aom_highbd_10_sub_pixel_avg_variance128x128_c
,
1347 SubpelAvgVarianceParams(7, 6, &aom_highbd_10_sub_pixel_avg_variance128x64_c
,
1349 SubpelAvgVarianceParams(6, 7, &aom_highbd_10_sub_pixel_avg_variance64x128_c
,
1351 SubpelAvgVarianceParams(6, 6, &aom_highbd_10_sub_pixel_avg_variance64x64_c
,
1353 SubpelAvgVarianceParams(6, 5, &aom_highbd_10_sub_pixel_avg_variance64x32_c
,
1355 SubpelAvgVarianceParams(5, 6, &aom_highbd_10_sub_pixel_avg_variance32x64_c
,
1357 SubpelAvgVarianceParams(5, 5, &aom_highbd_10_sub_pixel_avg_variance32x32_c
,
1359 SubpelAvgVarianceParams(5, 4, &aom_highbd_10_sub_pixel_avg_variance32x16_c
,
1361 SubpelAvgVarianceParams(4, 5, &aom_highbd_10_sub_pixel_avg_variance16x32_c
,
1363 SubpelAvgVarianceParams(4, 4, &aom_highbd_10_sub_pixel_avg_variance16x16_c
,
1365 SubpelAvgVarianceParams(4, 3, &aom_highbd_10_sub_pixel_avg_variance16x8_c
,
1367 SubpelAvgVarianceParams(3, 4, &aom_highbd_10_sub_pixel_avg_variance8x16_c
,
1369 SubpelAvgVarianceParams(3, 3, &aom_highbd_10_sub_pixel_avg_variance8x8_c
, 10),
1370 SubpelAvgVarianceParams(3, 2, &aom_highbd_10_sub_pixel_avg_variance8x4_c
, 10),
1371 SubpelAvgVarianceParams(2, 3, &aom_highbd_10_sub_pixel_avg_variance4x8_c
, 10),
1372 SubpelAvgVarianceParams(2, 2, &aom_highbd_10_sub_pixel_avg_variance4x4_c
, 10),
1373 SubpelAvgVarianceParams(7, 7, &aom_highbd_12_sub_pixel_avg_variance128x128_c
,
1375 SubpelAvgVarianceParams(7, 6, &aom_highbd_12_sub_pixel_avg_variance128x64_c
,
1377 SubpelAvgVarianceParams(6, 7, &aom_highbd_12_sub_pixel_avg_variance64x128_c
,
1379 SubpelAvgVarianceParams(6, 6, &aom_highbd_12_sub_pixel_avg_variance64x64_c
,
1381 SubpelAvgVarianceParams(6, 5, &aom_highbd_12_sub_pixel_avg_variance64x32_c
,
1383 SubpelAvgVarianceParams(5, 6, &aom_highbd_12_sub_pixel_avg_variance32x64_c
,
1385 SubpelAvgVarianceParams(5, 5, &aom_highbd_12_sub_pixel_avg_variance32x32_c
,
1387 SubpelAvgVarianceParams(5, 4, &aom_highbd_12_sub_pixel_avg_variance32x16_c
,
1389 SubpelAvgVarianceParams(4, 5, &aom_highbd_12_sub_pixel_avg_variance16x32_c
,
1391 SubpelAvgVarianceParams(4, 4, &aom_highbd_12_sub_pixel_avg_variance16x16_c
,
1393 SubpelAvgVarianceParams(4, 3, &aom_highbd_12_sub_pixel_avg_variance16x8_c
,
1395 SubpelAvgVarianceParams(3, 4, &aom_highbd_12_sub_pixel_avg_variance8x16_c
,
1397 SubpelAvgVarianceParams(3, 3, &aom_highbd_12_sub_pixel_avg_variance8x8_c
, 12),
1398 SubpelAvgVarianceParams(3, 2, &aom_highbd_12_sub_pixel_avg_variance8x4_c
, 12),
1399 SubpelAvgVarianceParams(2, 3, &aom_highbd_12_sub_pixel_avg_variance4x8_c
, 12),
1400 SubpelAvgVarianceParams(2, 2, &aom_highbd_12_sub_pixel_avg_variance4x4_c
, 12)
1402 INSTANTIATE_TEST_CASE_P(C
, AvxHBDSubpelAvgVarianceTest
,
1403 ::testing::ValuesIn(kArrayHBDSubpelAvgVariance_c
));
1405 const ObmcSubpelVarianceParams kArrayHBDObmcSubpelVariance_c
[] = {
1406 ObmcSubpelVarianceParams(7, 7, &aom_highbd_obmc_sub_pixel_variance128x128_c
,
1408 ObmcSubpelVarianceParams(7, 6, &aom_highbd_obmc_sub_pixel_variance128x64_c
,
1410 ObmcSubpelVarianceParams(6, 7, &aom_highbd_obmc_sub_pixel_variance64x128_c
,
1412 ObmcSubpelVarianceParams(6, 6, &aom_highbd_obmc_sub_pixel_variance64x64_c
, 8),
1413 ObmcSubpelVarianceParams(6, 5, &aom_highbd_obmc_sub_pixel_variance64x32_c
, 8),
1414 ObmcSubpelVarianceParams(5, 6, &aom_highbd_obmc_sub_pixel_variance32x64_c
, 8),
1415 ObmcSubpelVarianceParams(5, 5, &aom_highbd_obmc_sub_pixel_variance32x32_c
, 8),
1416 ObmcSubpelVarianceParams(5, 4, &aom_highbd_obmc_sub_pixel_variance32x16_c
, 8),
1417 ObmcSubpelVarianceParams(4, 5, &aom_highbd_obmc_sub_pixel_variance16x32_c
, 8),
1418 ObmcSubpelVarianceParams(4, 4, &aom_highbd_obmc_sub_pixel_variance16x16_c
, 8),
1419 ObmcSubpelVarianceParams(4, 3, &aom_highbd_obmc_sub_pixel_variance16x8_c
, 8),
1420 ObmcSubpelVarianceParams(3, 4, &aom_highbd_obmc_sub_pixel_variance8x16_c
, 8),
1421 ObmcSubpelVarianceParams(3, 3, &aom_highbd_obmc_sub_pixel_variance8x8_c
, 8),
1422 ObmcSubpelVarianceParams(3, 2, &aom_highbd_obmc_sub_pixel_variance8x4_c
, 8),
1423 ObmcSubpelVarianceParams(2, 3, &aom_highbd_obmc_sub_pixel_variance4x8_c
, 8),
1424 ObmcSubpelVarianceParams(2, 2, &aom_highbd_obmc_sub_pixel_variance4x4_c
, 8),
1425 ObmcSubpelVarianceParams(7, 7,
1426 &aom_highbd_10_obmc_sub_pixel_variance128x128_c
, 10),
1427 ObmcSubpelVarianceParams(7, 6, &aom_highbd_10_obmc_sub_pixel_variance128x64_c
,
1429 ObmcSubpelVarianceParams(6, 7, &aom_highbd_10_obmc_sub_pixel_variance64x128_c
,
1431 ObmcSubpelVarianceParams(6, 6, &aom_highbd_10_obmc_sub_pixel_variance64x64_c
,
1433 ObmcSubpelVarianceParams(6, 5, &aom_highbd_10_obmc_sub_pixel_variance64x32_c
,
1435 ObmcSubpelVarianceParams(5, 6, &aom_highbd_10_obmc_sub_pixel_variance32x64_c
,
1437 ObmcSubpelVarianceParams(5, 5, &aom_highbd_10_obmc_sub_pixel_variance32x32_c
,
1439 ObmcSubpelVarianceParams(5, 4, &aom_highbd_10_obmc_sub_pixel_variance32x16_c
,
1441 ObmcSubpelVarianceParams(4, 5, &aom_highbd_10_obmc_sub_pixel_variance16x32_c
,
1443 ObmcSubpelVarianceParams(4, 4, &aom_highbd_10_obmc_sub_pixel_variance16x16_c
,
1445 ObmcSubpelVarianceParams(4, 3, &aom_highbd_10_obmc_sub_pixel_variance16x8_c
,
1447 ObmcSubpelVarianceParams(3, 4, &aom_highbd_10_obmc_sub_pixel_variance8x16_c
,
1449 ObmcSubpelVarianceParams(3, 3, &aom_highbd_10_obmc_sub_pixel_variance8x8_c
,
1451 ObmcSubpelVarianceParams(3, 2, &aom_highbd_10_obmc_sub_pixel_variance8x4_c
,
1453 ObmcSubpelVarianceParams(2, 3, &aom_highbd_10_obmc_sub_pixel_variance4x8_c
,
1455 ObmcSubpelVarianceParams(2, 2, &aom_highbd_10_obmc_sub_pixel_variance4x4_c
,
1457 ObmcSubpelVarianceParams(7, 7,
1458 &aom_highbd_12_obmc_sub_pixel_variance128x128_c
, 12),
1459 ObmcSubpelVarianceParams(7, 6, &aom_highbd_12_obmc_sub_pixel_variance128x64_c
,
1461 ObmcSubpelVarianceParams(6, 7, &aom_highbd_12_obmc_sub_pixel_variance64x128_c
,
1463 ObmcSubpelVarianceParams(6, 6, &aom_highbd_12_obmc_sub_pixel_variance64x64_c
,
1465 ObmcSubpelVarianceParams(6, 5, &aom_highbd_12_obmc_sub_pixel_variance64x32_c
,
1467 ObmcSubpelVarianceParams(5, 6, &aom_highbd_12_obmc_sub_pixel_variance32x64_c
,
1469 ObmcSubpelVarianceParams(5, 5, &aom_highbd_12_obmc_sub_pixel_variance32x32_c
,
1471 ObmcSubpelVarianceParams(5, 4, &aom_highbd_12_obmc_sub_pixel_variance32x16_c
,
1473 ObmcSubpelVarianceParams(4, 5, &aom_highbd_12_obmc_sub_pixel_variance16x32_c
,
1475 ObmcSubpelVarianceParams(4, 4, &aom_highbd_12_obmc_sub_pixel_variance16x16_c
,
1477 ObmcSubpelVarianceParams(4, 3, &aom_highbd_12_obmc_sub_pixel_variance16x8_c
,
1479 ObmcSubpelVarianceParams(3, 4, &aom_highbd_12_obmc_sub_pixel_variance8x16_c
,
1481 ObmcSubpelVarianceParams(3, 3, &aom_highbd_12_obmc_sub_pixel_variance8x8_c
,
1483 ObmcSubpelVarianceParams(3, 2, &aom_highbd_12_obmc_sub_pixel_variance8x4_c
,
1485 ObmcSubpelVarianceParams(2, 3, &aom_highbd_12_obmc_sub_pixel_variance4x8_c
,
1487 ObmcSubpelVarianceParams(2, 2, &aom_highbd_12_obmc_sub_pixel_variance4x4_c
,
1490 INSTANTIATE_TEST_CASE_P(C
, AvxHBDObmcSubpelVarianceTest
,
1491 ::testing::ValuesIn(kArrayHBDObmcSubpelVariance_c
));
1494 INSTANTIATE_TEST_CASE_P(SSE2
, SumOfSquaresTest
,
1495 ::testing::Values(aom_get_mb_ss_sse2
));
1497 INSTANTIATE_TEST_CASE_P(SSE2
, AvxMseTest
,
1498 ::testing::Values(MseParams(4, 4, &aom_mse16x16_sse2
),
1499 MseParams(4, 3, &aom_mse16x8_sse2
),
1500 MseParams(3, 4, &aom_mse8x16_sse2
),
1501 MseParams(3, 3, &aom_mse8x8_sse2
)));
1503 INSTANTIATE_TEST_CASE_P(
1504 SSE2
, AvxVarianceTest
,
1505 ::testing::Values(VarianceParams(7, 7, &aom_variance128x128_sse2
),
1506 VarianceParams(7, 6, &aom_variance128x64_sse2
),
1507 VarianceParams(6, 7, &aom_variance64x128_sse2
),
1508 VarianceParams(6, 6, &aom_variance64x64_sse2
),
1509 VarianceParams(6, 5, &aom_variance64x32_sse2
),
1510 VarianceParams(6, 4, &aom_variance64x16_sse2
),
1511 VarianceParams(5, 6, &aom_variance32x64_sse2
),
1512 VarianceParams(5, 5, &aom_variance32x32_sse2
),
1513 VarianceParams(5, 4, &aom_variance32x16_sse2
),
1514 VarianceParams(5, 3, &aom_variance32x8_sse2
),
1515 VarianceParams(4, 6, &aom_variance16x64_sse2
),
1516 VarianceParams(4, 5, &aom_variance16x32_sse2
),
1517 VarianceParams(4, 4, &aom_variance16x16_sse2
),
1518 VarianceParams(4, 3, &aom_variance16x8_sse2
),
1519 VarianceParams(4, 2, &aom_variance16x4_sse2
),
1520 VarianceParams(3, 5, &aom_variance8x32_sse2
),
1521 VarianceParams(3, 4, &aom_variance8x16_sse2
),
1522 VarianceParams(3, 3, &aom_variance8x8_sse2
),
1523 VarianceParams(3, 2, &aom_variance8x4_sse2
),
1524 VarianceParams(2, 4, &aom_variance4x16_sse2
),
1525 VarianceParams(2, 3, &aom_variance4x8_sse2
),
1526 VarianceParams(2, 2, &aom_variance4x4_sse2
)));
1528 INSTANTIATE_TEST_CASE_P(
1529 SSE2
, AvxSubpelVarianceTest
,
1531 SubpelVarianceParams(7, 7, &aom_sub_pixel_variance128x128_sse2
, 0),
1532 SubpelVarianceParams(7, 6, &aom_sub_pixel_variance128x64_sse2
, 0),
1533 SubpelVarianceParams(6, 7, &aom_sub_pixel_variance64x128_sse2
, 0),
1534 SubpelVarianceParams(6, 6, &aom_sub_pixel_variance64x64_sse2
, 0),
1535 SubpelVarianceParams(6, 5, &aom_sub_pixel_variance64x32_sse2
, 0),
1536 SubpelVarianceParams(5, 6, &aom_sub_pixel_variance32x64_sse2
, 0),
1537 SubpelVarianceParams(5, 5, &aom_sub_pixel_variance32x32_sse2
, 0),
1538 SubpelVarianceParams(5, 4, &aom_sub_pixel_variance32x16_sse2
, 0),
1539 SubpelVarianceParams(4, 5, &aom_sub_pixel_variance16x32_sse2
, 0),
1540 SubpelVarianceParams(4, 4, &aom_sub_pixel_variance16x16_sse2
, 0),
1541 SubpelVarianceParams(4, 3, &aom_sub_pixel_variance16x8_sse2
, 0),
1542 SubpelVarianceParams(3, 4, &aom_sub_pixel_variance8x16_sse2
, 0),
1543 SubpelVarianceParams(3, 3, &aom_sub_pixel_variance8x8_sse2
, 0),
1544 SubpelVarianceParams(3, 2, &aom_sub_pixel_variance8x4_sse2
, 0),
1545 SubpelVarianceParams(2, 3, &aom_sub_pixel_variance4x8_sse2
, 0),
1546 SubpelVarianceParams(2, 2, &aom_sub_pixel_variance4x4_sse2
, 0)));
1548 INSTANTIATE_TEST_CASE_P(
1549 SSE2
, AvxSubpelAvgVarianceTest
,
1551 SubpelAvgVarianceParams(7, 7, &aom_sub_pixel_avg_variance128x128_sse2
,
1553 SubpelAvgVarianceParams(7, 6, &aom_sub_pixel_avg_variance128x64_sse2
,
1555 SubpelAvgVarianceParams(6, 7, &aom_sub_pixel_avg_variance64x128_sse2
,
1557 SubpelAvgVarianceParams(6, 6, &aom_sub_pixel_avg_variance64x64_sse2
, 0),
1558 SubpelAvgVarianceParams(6, 5, &aom_sub_pixel_avg_variance64x32_sse2
, 0),
1559 SubpelAvgVarianceParams(5, 6, &aom_sub_pixel_avg_variance32x64_sse2
, 0),
1560 SubpelAvgVarianceParams(5, 5, &aom_sub_pixel_avg_variance32x32_sse2
, 0),
1561 SubpelAvgVarianceParams(5, 4, &aom_sub_pixel_avg_variance32x16_sse2
, 0),
1562 SubpelAvgVarianceParams(4, 5, &aom_sub_pixel_avg_variance16x32_sse2
, 0),
1563 SubpelAvgVarianceParams(4, 4, &aom_sub_pixel_avg_variance16x16_sse2
, 0),
1564 SubpelAvgVarianceParams(4, 3, &aom_sub_pixel_avg_variance16x8_sse2
, 0),
1565 SubpelAvgVarianceParams(3, 4, &aom_sub_pixel_avg_variance8x16_sse2
, 0),
1566 SubpelAvgVarianceParams(3, 3, &aom_sub_pixel_avg_variance8x8_sse2
, 0),
1567 SubpelAvgVarianceParams(3, 2, &aom_sub_pixel_avg_variance8x4_sse2
, 0),
1568 SubpelAvgVarianceParams(2, 3, &aom_sub_pixel_avg_variance4x8_sse2
, 0),
1569 SubpelAvgVarianceParams(2, 2, &aom_sub_pixel_avg_variance4x4_sse2
, 0)));
1572 INSTANTIATE_TEST_CASE_P(
1573 SSE4_1
, AvxSubpelVarianceTest
,
1575 SubpelVarianceParams(2, 2, &aom_highbd_8_sub_pixel_variance4x4_sse4_1
,
1577 SubpelVarianceParams(2, 2, &aom_highbd_10_sub_pixel_variance4x4_sse4_1
,
1579 SubpelVarianceParams(2, 2, &aom_highbd_12_sub_pixel_variance4x4_sse4_1
,
1582 INSTANTIATE_TEST_CASE_P(
1583 SSE4_1
, AvxSubpelAvgVarianceTest
,
1585 SubpelAvgVarianceParams(2, 2,
1586 &aom_highbd_8_sub_pixel_avg_variance4x4_sse4_1
,
1588 SubpelAvgVarianceParams(2, 2,
1589 &aom_highbd_10_sub_pixel_avg_variance4x4_sse4_1
,
1591 SubpelAvgVarianceParams(2, 2,
1592 &aom_highbd_12_sub_pixel_avg_variance4x4_sse4_1
,
1594 #endif // HAVE_SSE4_1
1596 /* TODO(debargha): This test does not support the highbd version
1597 INSTANTIATE_TEST_CASE_P(
1598 SSE2, AvxHBDMseTest,
1599 ::testing::Values(MseParams(4, 4, &aom_highbd_12_mse16x16_sse2),
1600 MseParams(4, 3, &aom_highbd_12_mse16x8_sse2),
1601 MseParams(3, 4, &aom_highbd_12_mse8x16_sse2),
1602 MseParams(3, 3, &aom_highbd_12_mse8x8_sse2),
1603 MseParams(4, 4, &aom_highbd_10_mse16x16_sse2),
1604 MseParams(4, 3, &aom_highbd_10_mse16x8_sse2),
1605 MseParams(3, 4, &aom_highbd_10_mse8x16_sse2),
1606 MseParams(3, 3, &aom_highbd_10_mse8x8_sse2),
1607 MseParams(4, 4, &aom_highbd_8_mse16x16_sse2),
1608 MseParams(4, 3, &aom_highbd_8_mse16x8_sse2),
1609 MseParams(3, 4, &aom_highbd_8_mse8x16_sse2),
1610 MseParams(3, 3, &aom_highbd_8_mse8x8_sse2)));
1613 const VarianceParams kArrayHBDVariance_sse2
[] = {
1614 VarianceParams(7, 7, &aom_highbd_12_variance128x128_sse2
, 12),
1615 VarianceParams(7, 6, &aom_highbd_12_variance128x64_sse2
, 12),
1616 VarianceParams(6, 7, &aom_highbd_12_variance64x128_sse2
, 12),
1617 VarianceParams(6, 6, &aom_highbd_12_variance64x64_sse2
, 12),
1618 VarianceParams(6, 5, &aom_highbd_12_variance64x32_sse2
, 12),
1619 VarianceParams(5, 6, &aom_highbd_12_variance32x64_sse2
, 12),
1620 VarianceParams(5, 5, &aom_highbd_12_variance32x32_sse2
, 12),
1621 VarianceParams(5, 4, &aom_highbd_12_variance32x16_sse2
, 12),
1622 VarianceParams(4, 5, &aom_highbd_12_variance16x32_sse2
, 12),
1623 VarianceParams(4, 4, &aom_highbd_12_variance16x16_sse2
, 12),
1624 VarianceParams(4, 3, &aom_highbd_12_variance16x8_sse2
, 12),
1625 VarianceParams(3, 4, &aom_highbd_12_variance8x16_sse2
, 12),
1626 VarianceParams(3, 3, &aom_highbd_12_variance8x8_sse2
, 12),
1627 VarianceParams(7, 7, &aom_highbd_10_variance128x128_sse2
, 10),
1628 VarianceParams(7, 6, &aom_highbd_10_variance128x64_sse2
, 10),
1629 VarianceParams(6, 7, &aom_highbd_10_variance64x128_sse2
, 10),
1630 VarianceParams(6, 6, &aom_highbd_10_variance64x64_sse2
, 10),
1631 VarianceParams(6, 5, &aom_highbd_10_variance64x32_sse2
, 10),
1632 VarianceParams(5, 6, &aom_highbd_10_variance32x64_sse2
, 10),
1633 VarianceParams(5, 5, &aom_highbd_10_variance32x32_sse2
, 10),
1634 VarianceParams(5, 4, &aom_highbd_10_variance32x16_sse2
, 10),
1635 VarianceParams(4, 5, &aom_highbd_10_variance16x32_sse2
, 10),
1636 VarianceParams(4, 4, &aom_highbd_10_variance16x16_sse2
, 10),
1637 VarianceParams(4, 3, &aom_highbd_10_variance16x8_sse2
, 10),
1638 VarianceParams(3, 4, &aom_highbd_10_variance8x16_sse2
, 10),
1639 VarianceParams(3, 3, &aom_highbd_10_variance8x8_sse2
, 10),
1640 VarianceParams(7, 7, &aom_highbd_8_variance128x128_sse2
, 8),
1641 VarianceParams(7, 6, &aom_highbd_8_variance128x64_sse2
, 8),
1642 VarianceParams(6, 7, &aom_highbd_8_variance64x128_sse2
, 8),
1643 VarianceParams(6, 6, &aom_highbd_8_variance64x64_sse2
, 8),
1644 VarianceParams(6, 5, &aom_highbd_8_variance64x32_sse2
, 8),
1645 VarianceParams(5, 6, &aom_highbd_8_variance32x64_sse2
, 8),
1646 VarianceParams(5, 5, &aom_highbd_8_variance32x32_sse2
, 8),
1647 VarianceParams(5, 4, &aom_highbd_8_variance32x16_sse2
, 8),
1648 VarianceParams(4, 5, &aom_highbd_8_variance16x32_sse2
, 8),
1649 VarianceParams(4, 4, &aom_highbd_8_variance16x16_sse2
, 8),
1650 VarianceParams(4, 3, &aom_highbd_8_variance16x8_sse2
, 8),
1651 VarianceParams(3, 4, &aom_highbd_8_variance8x16_sse2
, 8),
1652 VarianceParams(3, 3, &aom_highbd_8_variance8x8_sse2
, 8)
1654 INSTANTIATE_TEST_CASE_P(SSE2
, AvxHBDVarianceTest
,
1655 ::testing::ValuesIn(kArrayHBDVariance_sse2
));
1659 const VarianceParams kArrayHBDVariance_avx2
[] = {
1660 VarianceParams(7, 7, &aom_highbd_10_variance128x128_avx2
, 10),
1661 VarianceParams(7, 6, &aom_highbd_10_variance128x64_avx2
, 10),
1662 VarianceParams(6, 7, &aom_highbd_10_variance64x128_avx2
, 10),
1663 VarianceParams(6, 6, &aom_highbd_10_variance64x64_avx2
, 10),
1664 VarianceParams(6, 5, &aom_highbd_10_variance64x32_avx2
, 10),
1665 VarianceParams(5, 6, &aom_highbd_10_variance32x64_avx2
, 10),
1666 VarianceParams(5, 5, &aom_highbd_10_variance32x32_avx2
, 10),
1667 VarianceParams(5, 4, &aom_highbd_10_variance32x16_avx2
, 10),
1668 VarianceParams(4, 5, &aom_highbd_10_variance16x32_avx2
, 10),
1669 VarianceParams(4, 4, &aom_highbd_10_variance16x16_avx2
, 10),
1670 VarianceParams(4, 3, &aom_highbd_10_variance16x8_avx2
, 10),
1671 VarianceParams(3, 4, &aom_highbd_10_variance8x16_avx2
, 10),
1672 VarianceParams(3, 3, &aom_highbd_10_variance8x8_avx2
, 10)
1675 INSTANTIATE_TEST_CASE_P(AVX2
, AvxHBDVarianceTest
,
1676 ::testing::ValuesIn(kArrayHBDVariance_avx2
));
1679 const SubpelVarianceParams kArrayHBDSubpelVariance_sse2
[] = {
1680 SubpelVarianceParams(6, 6, &aom_highbd_12_sub_pixel_variance64x64_sse2
, 12),
1681 SubpelVarianceParams(6, 5, &aom_highbd_12_sub_pixel_variance64x32_sse2
, 12),
1682 SubpelVarianceParams(5, 6, &aom_highbd_12_sub_pixel_variance32x64_sse2
, 12),
1683 SubpelVarianceParams(5, 5, &aom_highbd_12_sub_pixel_variance32x32_sse2
, 12),
1684 SubpelVarianceParams(5, 4, &aom_highbd_12_sub_pixel_variance32x16_sse2
, 12),
1685 SubpelVarianceParams(4, 5, &aom_highbd_12_sub_pixel_variance16x32_sse2
, 12),
1686 SubpelVarianceParams(4, 4, &aom_highbd_12_sub_pixel_variance16x16_sse2
, 12),
1687 SubpelVarianceParams(4, 3, &aom_highbd_12_sub_pixel_variance16x8_sse2
, 12),
1688 SubpelVarianceParams(3, 4, &aom_highbd_12_sub_pixel_variance8x16_sse2
, 12),
1689 SubpelVarianceParams(3, 3, &aom_highbd_12_sub_pixel_variance8x8_sse2
, 12),
1690 SubpelVarianceParams(3, 2, &aom_highbd_12_sub_pixel_variance8x4_sse2
, 12),
1691 SubpelVarianceParams(6, 6, &aom_highbd_10_sub_pixel_variance64x64_sse2
, 10),
1692 SubpelVarianceParams(6, 5, &aom_highbd_10_sub_pixel_variance64x32_sse2
, 10),
1693 SubpelVarianceParams(5, 6, &aom_highbd_10_sub_pixel_variance32x64_sse2
, 10),
1694 SubpelVarianceParams(5, 5, &aom_highbd_10_sub_pixel_variance32x32_sse2
, 10),
1695 SubpelVarianceParams(5, 4, &aom_highbd_10_sub_pixel_variance32x16_sse2
, 10),
1696 SubpelVarianceParams(4, 5, &aom_highbd_10_sub_pixel_variance16x32_sse2
, 10),
1697 SubpelVarianceParams(4, 4, &aom_highbd_10_sub_pixel_variance16x16_sse2
, 10),
1698 SubpelVarianceParams(4, 3, &aom_highbd_10_sub_pixel_variance16x8_sse2
, 10),
1699 SubpelVarianceParams(3, 4, &aom_highbd_10_sub_pixel_variance8x16_sse2
, 10),
1700 SubpelVarianceParams(3, 3, &aom_highbd_10_sub_pixel_variance8x8_sse2
, 10),
1701 SubpelVarianceParams(3, 2, &aom_highbd_10_sub_pixel_variance8x4_sse2
, 10),
1702 SubpelVarianceParams(6, 6, &aom_highbd_8_sub_pixel_variance64x64_sse2
, 8),
1703 SubpelVarianceParams(6, 5, &aom_highbd_8_sub_pixel_variance64x32_sse2
, 8),
1704 SubpelVarianceParams(5, 6, &aom_highbd_8_sub_pixel_variance32x64_sse2
, 8),
1705 SubpelVarianceParams(5, 5, &aom_highbd_8_sub_pixel_variance32x32_sse2
, 8),
1706 SubpelVarianceParams(5, 4, &aom_highbd_8_sub_pixel_variance32x16_sse2
, 8),
1707 SubpelVarianceParams(4, 5, &aom_highbd_8_sub_pixel_variance16x32_sse2
, 8),
1708 SubpelVarianceParams(4, 4, &aom_highbd_8_sub_pixel_variance16x16_sse2
, 8),
1709 SubpelVarianceParams(4, 3, &aom_highbd_8_sub_pixel_variance16x8_sse2
, 8),
1710 SubpelVarianceParams(3, 4, &aom_highbd_8_sub_pixel_variance8x16_sse2
, 8),
1711 SubpelVarianceParams(3, 3, &aom_highbd_8_sub_pixel_variance8x8_sse2
, 8),
1712 SubpelVarianceParams(3, 2, &aom_highbd_8_sub_pixel_variance8x4_sse2
, 8)
1715 INSTANTIATE_TEST_CASE_P(SSE2
, AvxHBDSubpelVarianceTest
,
1716 ::testing::ValuesIn(kArrayHBDSubpelVariance_sse2
));
1718 const SubpelAvgVarianceParams kArrayHBDSubpelAvgVariance_sse2
[] = {
1719 SubpelAvgVarianceParams(6, 6, &aom_highbd_12_sub_pixel_avg_variance64x64_sse2
,
1721 SubpelAvgVarianceParams(6, 5, &aom_highbd_12_sub_pixel_avg_variance64x32_sse2
,
1723 SubpelAvgVarianceParams(5, 6, &aom_highbd_12_sub_pixel_avg_variance32x64_sse2
,
1725 SubpelAvgVarianceParams(5, 5, &aom_highbd_12_sub_pixel_avg_variance32x32_sse2
,
1727 SubpelAvgVarianceParams(5, 4, &aom_highbd_12_sub_pixel_avg_variance32x16_sse2
,
1729 SubpelAvgVarianceParams(4, 5, &aom_highbd_12_sub_pixel_avg_variance16x32_sse2
,
1731 SubpelAvgVarianceParams(4, 4, &aom_highbd_12_sub_pixel_avg_variance16x16_sse2
,
1733 SubpelAvgVarianceParams(4, 3, &aom_highbd_12_sub_pixel_avg_variance16x8_sse2
,
1735 SubpelAvgVarianceParams(3, 4, &aom_highbd_12_sub_pixel_avg_variance8x16_sse2
,
1737 SubpelAvgVarianceParams(3, 3, &aom_highbd_12_sub_pixel_avg_variance8x8_sse2
,
1739 SubpelAvgVarianceParams(3, 2, &aom_highbd_12_sub_pixel_avg_variance8x4_sse2
,
1741 SubpelAvgVarianceParams(6, 6, &aom_highbd_10_sub_pixel_avg_variance64x64_sse2
,
1743 SubpelAvgVarianceParams(6, 5, &aom_highbd_10_sub_pixel_avg_variance64x32_sse2
,
1745 SubpelAvgVarianceParams(5, 6, &aom_highbd_10_sub_pixel_avg_variance32x64_sse2
,
1747 SubpelAvgVarianceParams(5, 5, &aom_highbd_10_sub_pixel_avg_variance32x32_sse2
,
1749 SubpelAvgVarianceParams(5, 4, &aom_highbd_10_sub_pixel_avg_variance32x16_sse2
,
1751 SubpelAvgVarianceParams(4, 5, &aom_highbd_10_sub_pixel_avg_variance16x32_sse2
,
1753 SubpelAvgVarianceParams(4, 4, &aom_highbd_10_sub_pixel_avg_variance16x16_sse2
,
1755 SubpelAvgVarianceParams(4, 3, &aom_highbd_10_sub_pixel_avg_variance16x8_sse2
,
1757 SubpelAvgVarianceParams(3, 4, &aom_highbd_10_sub_pixel_avg_variance8x16_sse2
,
1759 SubpelAvgVarianceParams(3, 3, &aom_highbd_10_sub_pixel_avg_variance8x8_sse2
,
1761 SubpelAvgVarianceParams(3, 2, &aom_highbd_10_sub_pixel_avg_variance8x4_sse2
,
1763 SubpelAvgVarianceParams(6, 6, &aom_highbd_8_sub_pixel_avg_variance64x64_sse2
,
1765 SubpelAvgVarianceParams(6, 5, &aom_highbd_8_sub_pixel_avg_variance64x32_sse2
,
1767 SubpelAvgVarianceParams(5, 6, &aom_highbd_8_sub_pixel_avg_variance32x64_sse2
,
1769 SubpelAvgVarianceParams(5, 5, &aom_highbd_8_sub_pixel_avg_variance32x32_sse2
,
1771 SubpelAvgVarianceParams(5, 4, &aom_highbd_8_sub_pixel_avg_variance32x16_sse2
,
1773 SubpelAvgVarianceParams(4, 5, &aom_highbd_8_sub_pixel_avg_variance16x32_sse2
,
1775 SubpelAvgVarianceParams(4, 4, &aom_highbd_8_sub_pixel_avg_variance16x16_sse2
,
1777 SubpelAvgVarianceParams(4, 3, &aom_highbd_8_sub_pixel_avg_variance16x8_sse2
,
1779 SubpelAvgVarianceParams(3, 4, &aom_highbd_8_sub_pixel_avg_variance8x16_sse2
,
1781 SubpelAvgVarianceParams(3, 3, &aom_highbd_8_sub_pixel_avg_variance8x8_sse2
,
1783 SubpelAvgVarianceParams(3, 2, &aom_highbd_8_sub_pixel_avg_variance8x4_sse2
, 8)
1786 INSTANTIATE_TEST_CASE_P(SSE2
, AvxHBDSubpelAvgVarianceTest
,
1787 ::testing::ValuesIn(kArrayHBDSubpelAvgVariance_sse2
));
1791 INSTANTIATE_TEST_CASE_P(
1792 SSSE3
, AvxSubpelVarianceTest
,
1794 SubpelVarianceParams(7, 7, &aom_sub_pixel_variance128x128_ssse3
, 0),
1795 SubpelVarianceParams(7, 6, &aom_sub_pixel_variance128x64_ssse3
, 0),
1796 SubpelVarianceParams(6, 7, &aom_sub_pixel_variance64x128_ssse3
, 0),
1797 SubpelVarianceParams(6, 6, &aom_sub_pixel_variance64x64_ssse3
, 0),
1798 SubpelVarianceParams(6, 5, &aom_sub_pixel_variance64x32_ssse3
, 0),
1799 SubpelVarianceParams(5, 6, &aom_sub_pixel_variance32x64_ssse3
, 0),
1800 SubpelVarianceParams(5, 5, &aom_sub_pixel_variance32x32_ssse3
, 0),
1801 SubpelVarianceParams(5, 4, &aom_sub_pixel_variance32x16_ssse3
, 0),
1802 SubpelVarianceParams(4, 5, &aom_sub_pixel_variance16x32_ssse3
, 0),
1803 SubpelVarianceParams(4, 4, &aom_sub_pixel_variance16x16_ssse3
, 0),
1804 SubpelVarianceParams(4, 3, &aom_sub_pixel_variance16x8_ssse3
, 0),
1805 SubpelVarianceParams(3, 4, &aom_sub_pixel_variance8x16_ssse3
, 0),
1806 SubpelVarianceParams(3, 3, &aom_sub_pixel_variance8x8_ssse3
, 0),
1807 SubpelVarianceParams(3, 2, &aom_sub_pixel_variance8x4_ssse3
, 0),
1808 SubpelVarianceParams(2, 3, &aom_sub_pixel_variance4x8_ssse3
, 0),
1809 SubpelVarianceParams(2, 2, &aom_sub_pixel_variance4x4_ssse3
, 0)));
1811 INSTANTIATE_TEST_CASE_P(
1812 SSSE3
, AvxSubpelAvgVarianceTest
,
1814 SubpelAvgVarianceParams(7, 7, &aom_sub_pixel_avg_variance128x128_ssse3
,
1816 SubpelAvgVarianceParams(7, 6, &aom_sub_pixel_avg_variance128x64_ssse3
,
1818 SubpelAvgVarianceParams(6, 7, &aom_sub_pixel_avg_variance64x128_ssse3
,
1820 SubpelAvgVarianceParams(6, 6, &aom_sub_pixel_avg_variance64x64_ssse3
,
1822 SubpelAvgVarianceParams(6, 5, &aom_sub_pixel_avg_variance64x32_ssse3
,
1824 SubpelAvgVarianceParams(5, 6, &aom_sub_pixel_avg_variance32x64_ssse3
,
1826 SubpelAvgVarianceParams(5, 5, &aom_sub_pixel_avg_variance32x32_ssse3
,
1828 SubpelAvgVarianceParams(5, 4, &aom_sub_pixel_avg_variance32x16_ssse3
,
1830 SubpelAvgVarianceParams(4, 5, &aom_sub_pixel_avg_variance16x32_ssse3
,
1832 SubpelAvgVarianceParams(4, 4, &aom_sub_pixel_avg_variance16x16_ssse3
,
1834 SubpelAvgVarianceParams(4, 3, &aom_sub_pixel_avg_variance16x8_ssse3
, 0),
1835 SubpelAvgVarianceParams(3, 4, &aom_sub_pixel_avg_variance8x16_ssse3
, 0),
1836 SubpelAvgVarianceParams(3, 3, &aom_sub_pixel_avg_variance8x8_ssse3
, 0),
1837 SubpelAvgVarianceParams(3, 2, &aom_sub_pixel_avg_variance8x4_ssse3
, 0),
1838 SubpelAvgVarianceParams(2, 3, &aom_sub_pixel_avg_variance4x8_ssse3
, 0),
1839 SubpelAvgVarianceParams(2, 2, &aom_sub_pixel_avg_variance4x4_ssse3
,
1842 INSTANTIATE_TEST_CASE_P(
1843 SSSE3
, AvxJntSubpelAvgVarianceTest
,
1845 JntSubpelAvgVarianceParams(6, 6,
1846 &aom_jnt_sub_pixel_avg_variance64x64_ssse3
,
1848 JntSubpelAvgVarianceParams(6, 5,
1849 &aom_jnt_sub_pixel_avg_variance64x32_ssse3
,
1851 JntSubpelAvgVarianceParams(5, 6,
1852 &aom_jnt_sub_pixel_avg_variance32x64_ssse3
,
1854 JntSubpelAvgVarianceParams(5, 5,
1855 &aom_jnt_sub_pixel_avg_variance32x32_ssse3
,
1857 JntSubpelAvgVarianceParams(5, 4,
1858 &aom_jnt_sub_pixel_avg_variance32x16_ssse3
,
1860 JntSubpelAvgVarianceParams(4, 5,
1861 &aom_jnt_sub_pixel_avg_variance16x32_ssse3
,
1863 JntSubpelAvgVarianceParams(4, 4,
1864 &aom_jnt_sub_pixel_avg_variance16x16_ssse3
,
1866 JntSubpelAvgVarianceParams(4, 3,
1867 &aom_jnt_sub_pixel_avg_variance16x8_ssse3
,
1869 JntSubpelAvgVarianceParams(3, 4,
1870 &aom_jnt_sub_pixel_avg_variance8x16_ssse3
,
1872 JntSubpelAvgVarianceParams(3, 3,
1873 &aom_jnt_sub_pixel_avg_variance8x8_ssse3
, 0),
1874 JntSubpelAvgVarianceParams(3, 2,
1875 &aom_jnt_sub_pixel_avg_variance8x4_ssse3
, 0),
1876 JntSubpelAvgVarianceParams(2, 3,
1877 &aom_jnt_sub_pixel_avg_variance4x8_ssse3
, 0),
1878 JntSubpelAvgVarianceParams(2, 2,
1879 &aom_jnt_sub_pixel_avg_variance4x4_ssse3
,
1881 #endif // HAVE_SSSE3
1884 INSTANTIATE_TEST_CASE_P(
1885 SSE4_1
, AvxObmcSubpelVarianceTest
,
1887 ObmcSubpelVarianceParams(7, 7,
1888 &aom_obmc_sub_pixel_variance128x128_sse4_1
, 0),
1889 ObmcSubpelVarianceParams(7, 6,
1890 &aom_obmc_sub_pixel_variance128x64_sse4_1
, 0),
1891 ObmcSubpelVarianceParams(6, 7,
1892 &aom_obmc_sub_pixel_variance64x128_sse4_1
, 0),
1893 ObmcSubpelVarianceParams(6, 6, &aom_obmc_sub_pixel_variance64x64_sse4_1
,
1895 ObmcSubpelVarianceParams(6, 5, &aom_obmc_sub_pixel_variance64x32_sse4_1
,
1897 ObmcSubpelVarianceParams(5, 6, &aom_obmc_sub_pixel_variance32x64_sse4_1
,
1899 ObmcSubpelVarianceParams(5, 5, &aom_obmc_sub_pixel_variance32x32_sse4_1
,
1901 ObmcSubpelVarianceParams(5, 4, &aom_obmc_sub_pixel_variance32x16_sse4_1
,
1903 ObmcSubpelVarianceParams(4, 5, &aom_obmc_sub_pixel_variance16x32_sse4_1
,
1905 ObmcSubpelVarianceParams(4, 4, &aom_obmc_sub_pixel_variance16x16_sse4_1
,
1907 ObmcSubpelVarianceParams(4, 3, &aom_obmc_sub_pixel_variance16x8_sse4_1
,
1909 ObmcSubpelVarianceParams(3, 4, &aom_obmc_sub_pixel_variance8x16_sse4_1
,
1911 ObmcSubpelVarianceParams(3, 3, &aom_obmc_sub_pixel_variance8x8_sse4_1
,
1913 ObmcSubpelVarianceParams(3, 2, &aom_obmc_sub_pixel_variance8x4_sse4_1
,
1915 ObmcSubpelVarianceParams(2, 3, &aom_obmc_sub_pixel_variance4x8_sse4_1
,
1917 ObmcSubpelVarianceParams(2, 2, &aom_obmc_sub_pixel_variance4x4_sse4_1
,
1919 #endif // HAVE_SSE4_1
1922 INSTANTIATE_TEST_CASE_P(AVX2
, AvxMseTest
,
1923 ::testing::Values(MseParams(4, 4, &aom_mse16x16_avx2
)));
1925 INSTANTIATE_TEST_CASE_P(
1926 AVX2
, AvxVarianceTest
,
1927 ::testing::Values(VarianceParams(7, 7, &aom_variance128x128_avx2
),
1928 VarianceParams(7, 6, &aom_variance128x64_avx2
),
1929 VarianceParams(6, 7, &aom_variance64x128_avx2
),
1930 VarianceParams(6, 6, &aom_variance64x64_avx2
),
1931 VarianceParams(6, 5, &aom_variance64x32_avx2
),
1932 VarianceParams(6, 4, &aom_variance64x16_avx2
),
1933 VarianceParams(5, 6, &aom_variance32x64_avx2
),
1934 VarianceParams(5, 5, &aom_variance32x32_avx2
),
1935 VarianceParams(5, 4, &aom_variance32x16_avx2
),
1936 VarianceParams(5, 3, &aom_variance32x8_avx2
),
1937 VarianceParams(4, 6, &aom_variance16x64_avx2
),
1938 VarianceParams(4, 5, &aom_variance16x32_avx2
),
1939 VarianceParams(4, 4, &aom_variance16x16_avx2
),
1940 VarianceParams(4, 3, &aom_variance16x8_avx2
),
1941 VarianceParams(4, 2, &aom_variance16x4_avx2
)));
1943 INSTANTIATE_TEST_CASE_P(
1944 AVX2
, AvxSubpelVarianceTest
,
1946 SubpelVarianceParams(7, 7, &aom_sub_pixel_variance128x128_avx2
, 0),
1947 SubpelVarianceParams(7, 6, &aom_sub_pixel_variance128x64_avx2
, 0),
1948 SubpelVarianceParams(6, 7, &aom_sub_pixel_variance64x128_avx2
, 0),
1949 SubpelVarianceParams(6, 6, &aom_sub_pixel_variance64x64_avx2
, 0),
1950 SubpelVarianceParams(6, 5, &aom_sub_pixel_variance64x32_avx2
, 0),
1951 SubpelVarianceParams(5, 6, &aom_sub_pixel_variance32x64_avx2
, 0),
1952 SubpelVarianceParams(5, 5, &aom_sub_pixel_variance32x32_avx2
, 0),
1953 SubpelVarianceParams(5, 4, &aom_sub_pixel_variance32x16_avx2
, 0)));
1955 INSTANTIATE_TEST_CASE_P(
1956 AVX2
, AvxSubpelAvgVarianceTest
,
1958 SubpelAvgVarianceParams(7, 7, &aom_sub_pixel_avg_variance128x128_avx2
,
1960 SubpelAvgVarianceParams(7, 6, &aom_sub_pixel_avg_variance128x64_avx2
,
1962 SubpelAvgVarianceParams(6, 7, &aom_sub_pixel_avg_variance64x128_avx2
,
1964 SubpelAvgVarianceParams(6, 6, &aom_sub_pixel_avg_variance64x64_avx2
, 0),
1965 SubpelAvgVarianceParams(6, 5, &aom_sub_pixel_avg_variance64x32_avx2
, 0),
1966 SubpelAvgVarianceParams(5, 6, &aom_sub_pixel_avg_variance32x64_avx2
, 0),
1967 SubpelAvgVarianceParams(5, 5, &aom_sub_pixel_avg_variance32x32_avx2
, 0),
1968 SubpelAvgVarianceParams(5, 4, &aom_sub_pixel_avg_variance32x16_avx2
,
1973 INSTANTIATE_TEST_CASE_P(NEON
, AvxSseTest
,
1974 ::testing::Values(SseParams(2, 2,
1975 &aom_get4x4sse_cs_neon
)));
1977 INSTANTIATE_TEST_CASE_P(NEON
, AvxMseTest
,
1978 ::testing::Values(MseParams(4, 4, &aom_mse16x16_neon
)));
1980 INSTANTIATE_TEST_CASE_P(
1981 NEON
, AvxVarianceTest
,
1982 ::testing::Values(VarianceParams(6, 6, &aom_variance64x64_neon
),
1983 VarianceParams(6, 5, &aom_variance64x32_neon
),
1984 VarianceParams(5, 6, &aom_variance32x64_neon
),
1985 VarianceParams(5, 5, &aom_variance32x32_neon
),
1986 VarianceParams(4, 4, &aom_variance16x16_neon
),
1987 VarianceParams(4, 3, &aom_variance16x8_neon
),
1988 VarianceParams(3, 4, &aom_variance8x16_neon
),
1989 VarianceParams(3, 3, &aom_variance8x8_neon
)));
1991 INSTANTIATE_TEST_CASE_P(
1992 NEON
, AvxSubpelVarianceTest
,
1994 SubpelVarianceParams(6, 6, &aom_sub_pixel_variance64x64_neon
, 0),
1995 SubpelVarianceParams(5, 5, &aom_sub_pixel_variance32x32_neon
, 0),
1996 SubpelVarianceParams(4, 4, &aom_sub_pixel_variance16x16_neon
, 0),
1997 SubpelVarianceParams(3, 3, &aom_sub_pixel_variance8x8_neon
, 0)));
2001 INSTANTIATE_TEST_CASE_P(MSA
, SumOfSquaresTest
,
2002 ::testing::Values(aom_get_mb_ss_msa
));
2004 INSTANTIATE_TEST_CASE_P(MSA
, AvxSseTest
,
2005 ::testing::Values(SseParams(2, 2,
2006 &aom_get4x4sse_cs_msa
)));
2008 INSTANTIATE_TEST_CASE_P(MSA
, AvxMseTest
,
2009 ::testing::Values(MseParams(4, 4, &aom_mse16x16_msa
),
2010 MseParams(4, 3, &aom_mse16x8_msa
),
2011 MseParams(3, 4, &aom_mse8x16_msa
),
2012 MseParams(3, 3, &aom_mse8x8_msa
)));
2014 INSTANTIATE_TEST_CASE_P(
2015 MSA
, AvxVarianceTest
,
2016 ::testing::Values(VarianceParams(6, 6, &aom_variance64x64_msa
),
2017 VarianceParams(6, 5, &aom_variance64x32_msa
),
2018 VarianceParams(5, 6, &aom_variance32x64_msa
),
2019 VarianceParams(5, 5, &aom_variance32x32_msa
),
2020 VarianceParams(5, 4, &aom_variance32x16_msa
),
2021 VarianceParams(4, 5, &aom_variance16x32_msa
),
2022 VarianceParams(4, 4, &aom_variance16x16_msa
),
2023 VarianceParams(4, 3, &aom_variance16x8_msa
),
2024 VarianceParams(3, 4, &aom_variance8x16_msa
),
2025 VarianceParams(3, 3, &aom_variance8x8_msa
),
2026 VarianceParams(3, 2, &aom_variance8x4_msa
),
2027 VarianceParams(2, 3, &aom_variance4x8_msa
),
2028 VarianceParams(2, 2, &aom_variance4x4_msa
)));
2030 INSTANTIATE_TEST_CASE_P(
2031 MSA
, AvxSubpelVarianceTest
,
2033 SubpelVarianceParams(2, 2, &aom_sub_pixel_variance4x4_msa
, 0),
2034 SubpelVarianceParams(2, 3, &aom_sub_pixel_variance4x8_msa
, 0),
2035 SubpelVarianceParams(3, 2, &aom_sub_pixel_variance8x4_msa
, 0),
2036 SubpelVarianceParams(3, 3, &aom_sub_pixel_variance8x8_msa
, 0),
2037 SubpelVarianceParams(3, 4, &aom_sub_pixel_variance8x16_msa
, 0),
2038 SubpelVarianceParams(4, 3, &aom_sub_pixel_variance16x8_msa
, 0),
2039 SubpelVarianceParams(4, 4, &aom_sub_pixel_variance16x16_msa
, 0),
2040 SubpelVarianceParams(4, 5, &aom_sub_pixel_variance16x32_msa
, 0),
2041 SubpelVarianceParams(5, 4, &aom_sub_pixel_variance32x16_msa
, 0),
2042 SubpelVarianceParams(5, 5, &aom_sub_pixel_variance32x32_msa
, 0),
2043 SubpelVarianceParams(5, 6, &aom_sub_pixel_variance32x64_msa
, 0),
2044 SubpelVarianceParams(6, 5, &aom_sub_pixel_variance64x32_msa
, 0),
2045 SubpelVarianceParams(6, 6, &aom_sub_pixel_variance64x64_msa
, 0)));
2047 INSTANTIATE_TEST_CASE_P(
2048 MSA
, AvxSubpelAvgVarianceTest
,
2050 SubpelAvgVarianceParams(6, 6, &aom_sub_pixel_avg_variance64x64_msa
, 0),
2051 SubpelAvgVarianceParams(6, 5, &aom_sub_pixel_avg_variance64x32_msa
, 0),
2052 SubpelAvgVarianceParams(5, 6, &aom_sub_pixel_avg_variance32x64_msa
, 0),
2053 SubpelAvgVarianceParams(5, 5, &aom_sub_pixel_avg_variance32x32_msa
, 0),
2054 SubpelAvgVarianceParams(5, 4, &aom_sub_pixel_avg_variance32x16_msa
, 0),
2055 SubpelAvgVarianceParams(4, 5, &aom_sub_pixel_avg_variance16x32_msa
, 0),
2056 SubpelAvgVarianceParams(4, 4, &aom_sub_pixel_avg_variance16x16_msa
, 0),
2057 SubpelAvgVarianceParams(4, 3, &aom_sub_pixel_avg_variance16x8_msa
, 0),
2058 SubpelAvgVarianceParams(3, 4, &aom_sub_pixel_avg_variance8x16_msa
, 0),
2059 SubpelAvgVarianceParams(3, 3, &aom_sub_pixel_avg_variance8x8_msa
, 0),
2060 SubpelAvgVarianceParams(3, 2, &aom_sub_pixel_avg_variance8x4_msa
, 0),
2061 SubpelAvgVarianceParams(2, 3, &aom_sub_pixel_avg_variance4x8_msa
, 0),
2062 SubpelAvgVarianceParams(2, 2, &aom_sub_pixel_avg_variance4x4_msa
, 0)));