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.
12 // Test and time AOM intra-predictor functions
17 #include "third_party/googletest/src/googletest/include/gtest/gtest.h"
19 #include "./aom_dsp_rtcd.h"
20 #include "test/acm_random.h"
21 #include "test/clear_system_state.h"
22 #include "test/md5_helper.h"
23 #include "aom/aom_integer.h"
24 #include "aom_ports/mem.h"
25 #include "aom_ports/aom_timer.h"
26 #include "av1/common/common_data.h"
28 // -----------------------------------------------------------------------------
35 // 0: Generate MD5 array as required
36 #define APPLY_UNIT_TESTS 1
38 typedef void (*AvxPredFunc
)(uint8_t *dst
, ptrdiff_t y_stride
,
39 const uint8_t *above
, const uint8_t *left
);
42 const int kTotalPixels
= kBPS
* kBPS
;
43 // 4 DC variants, V, H, PAETH, SMOOTH, SMOOTH_V, SMOOTH_H
44 const int kNumAv1IntraFuncs
= 10;
47 const char *kAv1IntraPredNames
[kNumAv1IntraFuncs
] = {
48 "DC_PRED", "DC_LEFT_PRED", "DC_TOP_PRED", "DC_128_PRED", "V_PRED",
49 "H_PRED", "PAETH_PRED", "SMOOTH_PRED", "SMOOTH_V_PRED", "SMOOTH_H_PRED",
51 #endif // APPLY_UNIT_TESTS
53 template <typename Pixel
>
54 struct IntraPredTestMem
{
55 void Init(int block_width
, int block_height
, int bd
) {
56 ASSERT_LE(block_width
, kBPS
);
57 ASSERT_LE(block_height
, kBPS
);
58 // Note: for blocks having width <= 32 and height <= 32, we generate 32x32
59 // random pixels as before to avoid having to recalculate all hashes again.
60 const int block_size_upto_32
= (block_width
<= 32) && (block_height
<= 32);
61 stride
= block_size_upto_32
? 32 : kBPS
;
62 num_pixels
= stride
* stride
;
63 libaom_test::ACMRandom
rnd(libaom_test::ACMRandom::DeterministicSeed());
64 above
= above_mem
+ 16;
65 const int mask
= (1 << bd
) - 1;
66 for (int i
= 0; i
< num_pixels
; ++i
) ref_src
[i
] = rnd
.Rand16() & mask
;
67 for (int i
= 0; i
< stride
; ++i
) left
[i
] = rnd
.Rand16() & mask
;
68 for (int i
= -1; i
< stride
; ++i
) above
[i
] = rnd
.Rand16() & mask
;
70 for (int i
= stride
; i
< 2 * stride
; ++i
) {
71 left
[i
] = rnd
.Rand16() & mask
;
72 above
[i
] = rnd
.Rand16() & mask
;
76 DECLARE_ALIGNED(16, Pixel
, src
[kTotalPixels
]);
77 DECLARE_ALIGNED(16, Pixel
, ref_src
[kTotalPixels
]);
78 DECLARE_ALIGNED(16, Pixel
, left
[2 * kBPS
]);
84 DECLARE_ALIGNED(16, Pixel
, above_mem
[2 * kBPS
+ 16]);
87 // -----------------------------------------------------------------------------
90 typedef IntraPredTestMem
<uint8_t> Av1IntraPredTestMem
;
92 static const char *const kTxSizeStrings
[TX_SIZES_ALL
] = {
93 "4X4", "8X8", "16X16", "32X32", "64X64", "4X8", "8X4",
94 "8X16", "16X8", "16X32", "32X16", "32X64", "64X32", "4X16",
95 "16X4", "8X32", "32X8", "16X64", "64X16",
98 void CheckMd5Signature(TX_SIZE tx_size
, bool is_hbd
,
99 const char *const signatures
[], const void *data
,
100 size_t data_size
, int elapsed_time
, int idx
) {
101 const std::string hbd_str
= is_hbd
? "Hbd " : "";
102 const std::string name_str
= hbd_str
+ "Intra" + kTxSizeStrings
[tx_size
];
103 libaom_test::MD5 md5
;
104 md5
.Add(reinterpret_cast<const uint8_t *>(data
), data_size
);
106 printf("Mode %s[%13s]: %5d ms MD5: %s\n", name_str
.c_str(),
107 kAv1IntraPredNames
[idx
], elapsed_time
, md5
.Get());
108 EXPECT_STREQ(signatures
[idx
], md5
.Get());
113 printf("\"%s\",\n", md5
.Get());
117 void TestIntraPred(TX_SIZE tx_size
, AvxPredFunc
const *pred_funcs
,
118 const char *const signatures
[]) {
119 const int block_width
= tx_size_wide
[tx_size
];
120 const int block_height
= tx_size_high
[tx_size
];
121 const int num_pixels_per_test
=
122 block_width
* block_height
* kNumAv1IntraFuncs
;
123 const int kNumTests
= static_cast<int>(2.e10
/ num_pixels_per_test
);
124 Av1IntraPredTestMem intra_pred_test_mem
;
125 intra_pred_test_mem
.Init(block_width
, block_height
, 8);
127 for (int k
= 0; k
< kNumAv1IntraFuncs
; ++k
) {
128 if (pred_funcs
[k
] == NULL
) continue;
129 memcpy(intra_pred_test_mem
.src
, intra_pred_test_mem
.ref_src
,
130 sizeof(intra_pred_test_mem
.src
));
131 aom_usec_timer timer
;
132 aom_usec_timer_start(&timer
);
133 for (int num_tests
= 0; num_tests
< kNumTests
; ++num_tests
) {
134 pred_funcs
[k
](intra_pred_test_mem
.src
, intra_pred_test_mem
.stride
,
135 intra_pred_test_mem
.above
, intra_pred_test_mem
.left
);
137 libaom_test::ClearSystemState();
138 aom_usec_timer_mark(&timer
);
139 const int elapsed_time
=
140 static_cast<int>(aom_usec_timer_elapsed(&timer
) / 1000);
142 tx_size
, false, signatures
, intra_pred_test_mem
.src
,
143 intra_pred_test_mem
.num_pixels
* sizeof(*intra_pred_test_mem
.src
),
148 static const char *const kSignatures
[TX_SIZES_ALL
][kNumAv1IntraFuncs
] = {
151 "e7ed7353c3383fff942e500e9bfe82fe",
152 "2a4a26fcc6ce005eadc08354d196c8a9",
153 "269d92eff86f315d9c38fe7640d85b15",
154 "ae2960eea9f71ee3dabe08b282ec1773",
155 "6c1abcc44e90148998b51acd11144e9c",
156 "f7bb3186e1ef8a2b326037ff898cad8e",
157 "59fc0e923a08cfac0a493fb38988e2bb",
158 "9ff8bb37d9c830e6ab8ecb0c435d3c91",
159 "de6937fca02354f2874dbc5dbec5d5b3",
160 "723cf948137f7d8c7860d814e55ae67d",
164 "d8bbae5d6547cfc17e4f5f44c8730e88",
165 "373bab6d931868d41a601d9d88ce9ac3",
166 "6fdd5ff4ff79656c14747598ca9e3706",
167 "d9661c2811d6a73674f40ffb2b841847",
168 "7c722d10b19ccff0b8c171868e747385",
169 "f81dd986eb2b50f750d3a7da716b7e27",
170 "064404361748dd111a890a1470d7f0ea",
171 "dc29b7e1f78cc8e7525d5ea4c0ab9b78",
172 "97111eb1bc26bade6272015df829f1ae",
173 "d19a8a73cc46b807f2c5e817576cc1e1",
177 "50971c07ce26977d30298538fffec619",
178 "527a6b9e0dc5b21b98cf276305432bef",
179 "7eff2868f80ebc2c43a4f367281d80f7",
180 "67cd60512b54964ef6aff1bd4816d922",
181 "48371c87dc95c08a33b2048f89cf6468",
182 "b0acf2872ee411d7530af6d2625a7084",
183 "93d6b5352b571805ab16a55e1bbed86a",
184 "03764e4c0aebbc180e4e2c68fb06df2b",
185 "bb6c74c9076c9f266ab11fb57060d8e6",
186 "0c5162bc28489756ddb847b5678e6f07",
190 "a0a618c900e65ae521ccc8af789729f2",
191 "985aaa7c72b4a6c2fb431d32100cf13a",
192 "10662d09febc3ca13ee4e700120daeb5",
193 "b3b01379ba08916ef6b1b35f7d9ad51c",
194 "9f4261755795af97e34679c333ec7004",
195 "bc2c9da91ad97ef0d1610fb0a9041657",
196 "ef1653982b69e1f64bee3759f3e1ec45",
197 "1a51a675deba2c83282142eb48d3dc3d",
198 "866c224746dc260cda861a7b1b383fb3",
199 "cea23799fc3526e1b6a6ff02b42b82af",
203 "6e1094fa7b50bc813aa2ba29f5df8755",
204 "afe020786b83b793c2bbd9468097ff6e",
205 "be91585259bc37bf4dc1651936e90b3e",
206 "a1650dbcd56e10288c3e269eca37967d",
207 "9e5c34f3797e0cdd3cd9d4c05b0d8950",
208 "bc87be7ac899cc6a28f399d7516c49fe",
209 "9811fd0d2dd515f06122f5d1bd18b784",
210 "3c140e466f2c2c0d9cb7d2157ab8dc27",
211 "9543de76c925a8f6adc884cc7f98dc91",
212 "df1df0376cc944afe7e74e94f53e575a",
216 "d9fbebdc85f71ab1e18461b2db4a2adc",
217 "5ccb2a68284bc9714d94b8a06ccadbb2",
218 "735d059abc2744f3ff3f9590f7191b37",
219 "d9fbebdc85f71ab1e18461b2db4a2adc",
220 "6819497c44cd0ace120add83672996ee",
221 "7e3244f5a2d3edf81c7e962a842b97f9",
222 "809350f164cd4d1650850bb0f59c3260",
223 "1b60a394331eeab6927a6f8aaff57040",
224 "5307de1bd7329ba6b281d2c1b0b457f9",
225 "24c58a8138339846d95568efb91751db",
229 "23f9fc11344426c9bee2e06d57dfd628",
230 "2d71a26d1bae1fb34734de7b42fc5eb7",
231 "5af9c1b2fd9d5721fad67b67b3f7c816",
232 "00d71b17be662753813d515f197d145e",
233 "bef10ec984427e28f4390f43809d10af",
234 "77773cdfb7ed6bc882ab202a64b0a470",
235 "2cc48bd66d6b0121b5221d52ccd732af",
236 "b302155e1c9eeeafe2ba2bf68e807a46",
237 "561bc8d0e76d5041ebd5168fc6a115e1",
238 "81d0113fb1d0a9a24ffd6f1987b77948",
242 "c849de88b24f773dfcdd1d48d1209796",
243 "6cb807c1897b94866a0f3d3c56ed8695",
244 "d56db05a8ac7981762f5b877f486c4ef",
245 "b4bc01eb6e59a40922ad17715cafb04b",
246 "09d178439534f4062ae687c351f66d64",
247 "644501399cf73080ac606e5cef7ca09b",
248 "278076495180e17c065a95ab7278539a",
249 "9dd7f324816f242be408ffeb0c673732",
250 "f520c4a20acfa0bea1d253c6f0f040fd",
251 "85f38df809df2c2d7c8b4a157a65cd44",
255 "b4cbdbdf10ce13300b4063a3daf99e04",
256 "3731e1e6202064a9d0604d7c293ecee4",
257 "6c856188c4256a06452f0d5d70cac436",
258 "1f2192b4c8c497589484ea7bf9c944e8",
259 "84011bd4b7f565119d06787840e333a0",
260 "0e48949f7a6aa36f0d76b5d01f91124a",
261 "60eff8064634b6c73b10681356baeee9",
262 "1559aeb081a9c0c71111d6093c2ff9fd",
263 "c15479b739713773e5cabb748451987b",
264 "72e33ec12c9b67aea26d8d005fb82de2",
268 "abe5233d189cdbf79424721571bbaa7b",
269 "282759f81e3cfb2e2d396fe406b72a8b",
270 "e2224926c264f6f174cbc3167a233168",
271 "6814e85c2b33f8c9415d62e80394b47b",
272 "99cbbb60459c08a3061d72c4e4f6276a",
273 "1d1567d40b8e816f8c1f71e576fe0f87",
274 "36fdd371b624a075814d497c4832ec85",
275 "8ab8da61b727442b6ff692b40d0df018",
276 "e35a10ad7fdf2327e821504a90f6a6eb",
277 "1f7211e727dc1de7d6a55d082fbdd821",
281 "d1aeb8d5fdcfd3307922af01a798a4dc",
282 "b0bcb514ebfbee065faea9d34c12ae75",
283 "d6a18c63b4e909871c0137ca652fad23",
284 "fd047f2fc1b8ffb95d0eeef3e8796a45",
285 "645ab60779ea348fd93c81561c31bab9",
286 "4409633c9db8dff41ade4292a3a56e7f",
287 "5e36a11e069b31c2a739f3a9c7b37c24",
288 "e83b9483d702cfae496991c3c7fa92c0",
289 "12f6ddf98c7f30a277307f1ea935b030",
290 "354321d6c32bbdb0739e4fa2acbf41e1",
294 "0ce332b343934b34cd4417725faa85cb",
295 "4e2a2cfd8f56f15939bdfc753145b303",
296 "0f46d124ba9f48cdd5d5290acf786d6d",
297 "e1e8ed803236367821981500a3d9eebe",
298 "1d2f8e48e3adb7c448be05d9f66f4954",
299 "9fb2e176636a5689b26f73ca73fcc512",
300 "e720ebccae7e25e36f23da53ae5b5d6a",
301 "86fe4364734169aaa4520d799890d530",
302 "b1870290764bb1b100d1974e2bd70f1d",
303 "ce5b238e19d85ef69d85badfab4e63ae",
307 "a6c5aeb722615089efbca80b02951ceb",
308 "538424b24bd0830f21788e7238ca762f",
309 "80c15b303235f9bc2259027bb92dfdc4",
310 "e48e1ac15e97191a8fda08d62fff343e",
311 "12604b37875533665078405ef4582e35",
312 "0048afa17bd3e1632d68b96048836530",
313 "07a0cfcb56a5eed50c4bd6c26814336b",
314 "529d8a070de5bc6531fa3ee8f450c233",
315 "33c50a11c7d78f72434064f634305e95",
316 "e0ef7f0559c1a50ec5a8c12011b962f7",
320 "750491056568eb8fe15387b86bdf06b8",
321 "3a52dae9f599f08cfb3bd1b910dc0e11",
322 "af79f71e3e03dbeca44e2e13561f70c7",
323 "ca7dfd7624afc0c06fb5552f44398535",
324 "b591af115444bf43140c29c269f68fb2",
325 "483d942ae36e69e62f31eb215331416f",
326 "f14b58525e81870bc5d95c7ac71a347f",
327 "371208bb4027d9badb04095d1590bbc4",
328 "c7049c21b2924d70c7c12784d6b6b796",
329 "7d87233f4b5b0f12086045e5d7b2d4c2",
333 "7c6e325a65e77e732b3adbe237e045e4",
334 "24478f93ffcec47852e004d0fe948464",
335 "258d042c67d4ba3ecfa667f0adc9aebf",
336 "b2cd21d06959f159a1f3c4d9768ee7fb",
337 "b4e1f38157bf8410e7c3da02f687a343",
338 "869e703729eb0fc0711c254944ff5d5a",
339 "9638dd77105a640b146a8201ea7a0801",
340 "919d932c6af8a1cc7486e8ce996dd487",
341 "e1c9be493b6714c7ae48f30044c43140",
342 "bf0fe3889d654b2f6eb98c8fc751f9e4",
346 "8dfac4319fe0bd40013ffb3102da8c72",
347 "feb46b6dc4e2ca0a09533bfc51d4dcb0",
348 "850837ec714c37262216527aaf4cbbe9",
349 "4603c7800fb08361f163daca876e8bda",
350 "1ff95e7d2debc27b05806fb25abfd624",
351 "d81b9a51a062b23ca7823804cb7bec22",
352 "f1d8978158766f46335203608cb807e7",
353 "f3527096256258c0878d644a9d7d53ca",
354 "cbde98ac8b009953eb112807ad2ea29e",
355 "654fb1153415747feae599f538122af5",
359 "3d4ee16fab374357474f60b845327bc7",
360 "bc17c5059473a476df4e85f56395ad55",
361 "3d4ee16fab374357474f60b845327bc7",
362 "c14b8db34dc2355b84e3735c9ba16c7f",
363 "a71d25b5d47a92a8b9223c98f18458ee",
364 "6c1cfe2b1893f4576a80675687cb6426",
365 "92d11bbef8b85bb48d799bb055de3514",
366 "bcf81d1db8ae5cc03360467f44f498ec",
367 "79f8c564163555592e808e145eaf5c60",
368 "46fff139cef2ef773938bcc8b0e5abb8",
372 "3b2a053ee8b05a8ac35ad23b0422a151",
373 "12b0c69595328c465e0b25e0c9e3e9fc",
374 "f77c544ac8035e01920deae40cee7b07",
375 "727797ef15ccd8d325476fe8f12006a3",
376 "f3be77c0fe67eb5d9d515e92bec21eb7",
377 "f1ece6409e01e9dd98b800d49628247d",
378 "efd2ec9bfbbd4fd1f6604ea369df1894",
379 "ec703de918422b9e03197ba0ed60a199",
380 "739418efb89c07f700895deaa5d0b3e3",
381 "9943ae1bbeeebfe1d3a92dc39e049d63",
385 "821b76b1494d4f84d20817840f719a1a",
386 "69e462c3338a9aaf993c3f7cfbc15649",
387 "516d8f6eb054d74d150e7b444185b6b9",
388 "de1b736e9d99129609d6ef3a491507a0",
389 "fd9b4276e7affe1e0e4ce4f428058994",
390 "cd82fd361a4767ac29a9f406b480b8f3",
391 "2792c2f810157a4a6cb13c28529ff779",
392 "1220442d90c4255ba0969d28b91e93a6",
393 "c7253e10b45f7f67dfee3256c9b94825",
394 "879792198071c7e0b50b9b5010d8c18f",
400 // Defines a test case for |arch| (e.g., C, SSE2, ...) passing the predictors
401 // to TestIntraPred. The test name is 'arch.TestIntraPred_tx_size', e.g.,
403 #define INTRA_PRED_TEST(arch, tx_size, dc, dc_left, dc_top, dc_128, v, h, \
404 paeth, smooth, smooth_v, smooth_h) \
405 TEST(arch, DISABLED_##TestIntraPred_##tx_size) { \
406 static const AvxPredFunc aom_intra_pred[] = { \
407 dc, dc_left, dc_top, dc_128, v, h, paeth, smooth, smooth_v, smooth_h \
409 TestIntraPred(tx_size, aom_intra_pred, kSignatures[tx_size]); \
412 // -----------------------------------------------------------------------------
415 INTRA_PRED_TEST(C_1
, TX_4X4
, aom_dc_predictor_4x4_c
,
416 aom_dc_left_predictor_4x4_c
, aom_dc_top_predictor_4x4_c
,
417 aom_dc_128_predictor_4x4_c
, aom_v_predictor_4x4_c
,
418 aom_h_predictor_4x4_c
, aom_paeth_predictor_4x4_c
,
419 aom_smooth_predictor_4x4_c
, aom_smooth_v_predictor_4x4_c
,
420 aom_smooth_h_predictor_4x4_c
)
422 INTRA_PRED_TEST(C_2
, TX_4X8
, aom_dc_predictor_4x8_c
,
423 aom_dc_left_predictor_4x8_c
, aom_dc_top_predictor_4x8_c
,
424 aom_dc_128_predictor_4x8_c
, aom_v_predictor_4x8_c
,
425 aom_h_predictor_4x8_c
, aom_paeth_predictor_4x8_c
,
426 aom_smooth_predictor_4x8_c
, aom_smooth_v_predictor_4x8_c
,
427 aom_smooth_h_predictor_4x8_c
)
429 INTRA_PRED_TEST(C_3
, TX_4X16
, aom_dc_predictor_4x16_c
,
430 aom_dc_left_predictor_4x16_c
, aom_dc_top_predictor_4x16_c
,
431 aom_dc_128_predictor_4x16_c
, aom_v_predictor_4x16_c
,
432 aom_h_predictor_4x16_c
, aom_paeth_predictor_4x16_c
,
433 aom_smooth_predictor_4x16_c
, aom_smooth_v_predictor_4x16_c
,
434 aom_smooth_h_predictor_4x16_c
)
437 INTRA_PRED_TEST(SSE2_1
, TX_4X4
, aom_dc_predictor_4x4_sse2
,
438 aom_dc_left_predictor_4x4_sse2
, aom_dc_top_predictor_4x4_sse2
,
439 aom_dc_128_predictor_4x4_sse2
, aom_v_predictor_4x4_sse2
,
440 aom_h_predictor_4x4_sse2
, NULL
, NULL
, NULL
, NULL
)
441 INTRA_PRED_TEST(SSE2_2
, TX_4X8
, aom_dc_predictor_4x8_sse2
,
442 aom_dc_left_predictor_4x8_sse2
, aom_dc_top_predictor_4x8_sse2
,
443 aom_dc_128_predictor_4x8_sse2
, aom_v_predictor_4x8_sse2
,
444 aom_h_predictor_4x8_sse2
, NULL
, NULL
, NULL
, NULL
)
445 INTRA_PRED_TEST(SSE2_3
, TX_4X16
, aom_dc_predictor_4x16_sse2
,
446 aom_dc_left_predictor_4x16_sse2
, aom_dc_top_predictor_4x16_sse2
,
447 aom_dc_128_predictor_4x16_sse2
, aom_v_predictor_4x16_sse2
,
448 aom_h_predictor_4x16_sse2
, NULL
, NULL
, NULL
, NULL
)
452 INTRA_PRED_TEST(SSSE3_1
, TX_4X4
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
453 aom_paeth_predictor_4x4_ssse3
, aom_smooth_predictor_4x4_ssse3
,
454 aom_smooth_v_predictor_4x4_ssse3
,
455 aom_smooth_h_predictor_4x4_ssse3
)
456 INTRA_PRED_TEST(SSSE3_2
, TX_4X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
457 aom_paeth_predictor_4x8_ssse3
, aom_smooth_predictor_4x8_ssse3
,
458 aom_smooth_v_predictor_4x8_ssse3
,
459 aom_smooth_h_predictor_4x8_ssse3
)
460 INTRA_PRED_TEST(SSSE3_3
, TX_4X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
461 aom_paeth_predictor_4x16_ssse3
, aom_smooth_predictor_4x16_ssse3
,
462 aom_smooth_v_predictor_4x16_ssse3
,
463 aom_smooth_h_predictor_4x16_ssse3
)
467 INTRA_PRED_TEST(DSPR2
, TX_4X4
, aom_dc_predictor_4x4_dspr2
, NULL
, NULL
, NULL
,
468 NULL
, aom_h_predictor_4x4_dspr2
, NULL
, NULL
, NULL
, NULL
)
472 INTRA_PRED_TEST(NEON
, TX_4X4
, aom_dc_predictor_4x4_neon
,
473 aom_dc_left_predictor_4x4_neon
, aom_dc_top_predictor_4x4_neon
,
474 aom_dc_128_predictor_4x4_neon
, aom_v_predictor_4x4_neon
,
475 aom_h_predictor_4x4_neon
, NULL
, NULL
, NULL
, NULL
)
479 INTRA_PRED_TEST(MSA
, TX_4X4
, aom_dc_predictor_4x4_msa
,
480 aom_dc_left_predictor_4x4_msa
, aom_dc_top_predictor_4x4_msa
,
481 aom_dc_128_predictor_4x4_msa
, aom_v_predictor_4x4_msa
,
482 aom_h_predictor_4x4_msa
, NULL
, NULL
, NULL
, NULL
)
485 // -----------------------------------------------------------------------------
486 // 8x8, 8x4, 8x16, 8x32
488 INTRA_PRED_TEST(C_1
, TX_8X8
, aom_dc_predictor_8x8_c
,
489 aom_dc_left_predictor_8x8_c
, aom_dc_top_predictor_8x8_c
,
490 aom_dc_128_predictor_8x8_c
, aom_v_predictor_8x8_c
,
491 aom_h_predictor_8x8_c
, aom_paeth_predictor_8x8_c
,
492 aom_smooth_predictor_8x8_c
, aom_smooth_v_predictor_8x8_c
,
493 aom_smooth_h_predictor_8x8_c
)
495 INTRA_PRED_TEST(C_2
, TX_8X4
, aom_dc_predictor_8x4_c
,
496 aom_dc_left_predictor_8x4_c
, aom_dc_top_predictor_8x4_c
,
497 aom_dc_128_predictor_8x4_c
, aom_v_predictor_8x4_c
,
498 aom_h_predictor_8x4_c
, aom_paeth_predictor_8x4_c
,
499 aom_smooth_predictor_8x4_c
, aom_smooth_v_predictor_8x4_c
,
500 aom_smooth_h_predictor_8x4_c
)
502 INTRA_PRED_TEST(C_3
, TX_8X16
, aom_dc_predictor_8x16_c
,
503 aom_dc_left_predictor_8x16_c
, aom_dc_top_predictor_8x16_c
,
504 aom_dc_128_predictor_8x16_c
, aom_v_predictor_8x16_c
,
505 aom_h_predictor_8x16_c
, aom_paeth_predictor_8x16_c
,
506 aom_smooth_predictor_8x16_c
, aom_smooth_v_predictor_8x16_c
,
507 aom_smooth_h_predictor_8x16_c
)
509 INTRA_PRED_TEST(C_4
, TX_8X32
, aom_dc_predictor_8x32_c
,
510 aom_dc_left_predictor_8x32_c
, aom_dc_top_predictor_8x32_c
,
511 aom_dc_128_predictor_8x32_c
, aom_v_predictor_8x32_c
,
512 aom_h_predictor_8x32_c
, aom_paeth_predictor_8x32_c
,
513 aom_smooth_predictor_8x32_c
, aom_smooth_v_predictor_8x32_c
,
514 aom_smooth_h_predictor_8x32_c
)
517 INTRA_PRED_TEST(SSE2_1
, TX_8X8
, aom_dc_predictor_8x8_sse2
,
518 aom_dc_left_predictor_8x8_sse2
, aom_dc_top_predictor_8x8_sse2
,
519 aom_dc_128_predictor_8x8_sse2
, aom_v_predictor_8x8_sse2
,
520 aom_h_predictor_8x8_sse2
, NULL
, NULL
, NULL
, NULL
)
521 INTRA_PRED_TEST(SSE2_2
, TX_8X4
, aom_dc_predictor_8x4_sse2
,
522 aom_dc_left_predictor_8x4_sse2
, aom_dc_top_predictor_8x4_sse2
,
523 aom_dc_128_predictor_8x4_sse2
, aom_v_predictor_8x4_sse2
,
524 aom_h_predictor_8x4_sse2
, NULL
, NULL
, NULL
, NULL
)
525 INTRA_PRED_TEST(SSE2_3
, TX_8X16
, aom_dc_predictor_8x16_sse2
,
526 aom_dc_left_predictor_8x16_sse2
, aom_dc_top_predictor_8x16_sse2
,
527 aom_dc_128_predictor_8x16_sse2
, aom_v_predictor_8x16_sse2
,
528 aom_h_predictor_8x16_sse2
, NULL
, NULL
, NULL
, NULL
)
529 INTRA_PRED_TEST(SSE2_4
, TX_8X32
, aom_dc_predictor_8x32_sse2
,
530 aom_dc_left_predictor_8x32_sse2
, aom_dc_top_predictor_8x32_sse2
,
531 aom_dc_128_predictor_8x32_sse2
, aom_v_predictor_8x32_sse2
,
532 aom_h_predictor_8x32_sse2
, NULL
, NULL
, NULL
, NULL
)
536 INTRA_PRED_TEST(SSSE3_1
, TX_8X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
537 aom_paeth_predictor_8x8_ssse3
, aom_smooth_predictor_8x8_ssse3
,
538 aom_smooth_v_predictor_8x8_ssse3
,
539 aom_smooth_h_predictor_8x8_ssse3
)
540 INTRA_PRED_TEST(SSSE3_2
, TX_8X4
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
541 aom_paeth_predictor_8x4_ssse3
, aom_smooth_predictor_8x4_ssse3
,
542 aom_smooth_v_predictor_8x4_ssse3
,
543 aom_smooth_h_predictor_8x4_ssse3
)
544 INTRA_PRED_TEST(SSSE3_3
, TX_8X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
545 aom_paeth_predictor_8x16_ssse3
, aom_smooth_predictor_8x16_ssse3
,
546 aom_smooth_v_predictor_8x16_ssse3
,
547 aom_smooth_h_predictor_8x16_ssse3
)
548 INTRA_PRED_TEST(SSSE3_4
, TX_8X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
549 aom_paeth_predictor_8x32_ssse3
, aom_smooth_predictor_8x32_ssse3
,
550 aom_smooth_v_predictor_8x32_ssse3
,
551 aom_smooth_h_predictor_8x32_ssse3
)
555 INTRA_PRED_TEST(DSPR2
, TX_8X8
, aom_dc_predictor_8x8_dspr2
, NULL
, NULL
, NULL
,
556 NULL
, aom_h_predictor_8x8_dspr2
, NULL
, NULL
, NULL
, NULL
)
560 INTRA_PRED_TEST(NEON
, TX_8X8
, aom_dc_predictor_8x8_neon
,
561 aom_dc_left_predictor_8x8_neon
, aom_dc_top_predictor_8x8_neon
,
562 aom_dc_128_predictor_8x8_neon
, aom_v_predictor_8x8_neon
,
563 aom_h_predictor_8x8_neon
, NULL
, NULL
, NULL
, NULL
)
567 INTRA_PRED_TEST(MSA
, TX_8X8
, aom_dc_predictor_8x8_msa
,
568 aom_dc_left_predictor_8x8_msa
, aom_dc_top_predictor_8x8_msa
,
569 aom_dc_128_predictor_8x8_msa
, aom_v_predictor_8x8_msa
,
570 aom_h_predictor_8x8_msa
, NULL
, NULL
, NULL
, NULL
)
573 // -----------------------------------------------------------------------------
574 // 16x16, 16x8, 16x32, 16x4, 16x64
576 INTRA_PRED_TEST(C_1
, TX_16X16
, aom_dc_predictor_16x16_c
,
577 aom_dc_left_predictor_16x16_c
, aom_dc_top_predictor_16x16_c
,
578 aom_dc_128_predictor_16x16_c
, aom_v_predictor_16x16_c
,
579 aom_h_predictor_16x16_c
, aom_paeth_predictor_16x16_c
,
580 aom_smooth_predictor_16x16_c
, aom_smooth_v_predictor_16x16_c
,
581 aom_smooth_h_predictor_16x16_c
)
583 INTRA_PRED_TEST(C_2
, TX_16X8
, aom_dc_predictor_16x8_c
,
584 aom_dc_left_predictor_16x8_c
, aom_dc_top_predictor_16x8_c
,
585 aom_dc_128_predictor_16x8_c
, aom_v_predictor_16x8_c
,
586 aom_h_predictor_16x8_c
, aom_paeth_predictor_16x8_c
,
587 aom_smooth_predictor_16x8_c
, aom_smooth_v_predictor_16x8_c
,
588 aom_smooth_h_predictor_16x8_c
)
590 INTRA_PRED_TEST(C_3
, TX_16X32
, aom_dc_predictor_16x32_c
,
591 aom_dc_left_predictor_16x32_c
, aom_dc_top_predictor_16x32_c
,
592 aom_dc_128_predictor_16x32_c
, aom_v_predictor_16x32_c
,
593 aom_h_predictor_16x32_c
, aom_paeth_predictor_16x32_c
,
594 aom_smooth_predictor_16x32_c
, aom_smooth_v_predictor_16x32_c
,
595 aom_smooth_h_predictor_16x32_c
)
597 INTRA_PRED_TEST(C_4
, TX_16X4
, aom_dc_predictor_16x4_c
,
598 aom_dc_left_predictor_16x4_c
, aom_dc_top_predictor_16x4_c
,
599 aom_dc_128_predictor_16x4_c
, aom_v_predictor_16x4_c
,
600 aom_h_predictor_16x4_c
, aom_paeth_predictor_16x4_c
,
601 aom_smooth_predictor_16x4_c
, aom_smooth_v_predictor_16x4_c
,
602 aom_smooth_h_predictor_16x4_c
)
604 INTRA_PRED_TEST(C_5
, TX_16X64
, aom_dc_predictor_16x64_c
,
605 aom_dc_left_predictor_16x64_c
, aom_dc_top_predictor_16x64_c
,
606 aom_dc_128_predictor_16x64_c
, aom_v_predictor_16x64_c
,
607 aom_h_predictor_16x64_c
, aom_paeth_predictor_16x64_c
,
608 aom_smooth_predictor_16x64_c
, aom_smooth_v_predictor_16x64_c
,
609 aom_smooth_h_predictor_16x64_c
)
612 INTRA_PRED_TEST(SSE2_1
, TX_16X16
, aom_dc_predictor_16x16_sse2
,
613 aom_dc_left_predictor_16x16_sse2
,
614 aom_dc_top_predictor_16x16_sse2
,
615 aom_dc_128_predictor_16x16_sse2
, aom_v_predictor_16x16_sse2
,
616 aom_h_predictor_16x16_sse2
, NULL
, NULL
, NULL
, NULL
)
617 INTRA_PRED_TEST(SSE2_2
, TX_16X8
, aom_dc_predictor_16x8_sse2
,
618 aom_dc_left_predictor_16x8_sse2
, aom_dc_top_predictor_16x8_sse2
,
619 aom_dc_128_predictor_16x8_sse2
, aom_v_predictor_16x8_sse2
,
620 aom_h_predictor_16x8_sse2
, NULL
, NULL
, NULL
, NULL
)
621 INTRA_PRED_TEST(SSE2_3
, TX_16X32
, aom_dc_predictor_16x32_sse2
,
622 aom_dc_left_predictor_16x32_sse2
,
623 aom_dc_top_predictor_16x32_sse2
,
624 aom_dc_128_predictor_16x32_sse2
, aom_v_predictor_16x32_sse2
,
625 aom_h_predictor_16x32_sse2
, NULL
, NULL
, NULL
, NULL
)
626 INTRA_PRED_TEST(SSE2_4
, TX_16X64
, aom_dc_predictor_16x64_sse2
,
627 aom_dc_left_predictor_16x64_sse2
,
628 aom_dc_top_predictor_16x64_sse2
,
629 aom_dc_128_predictor_16x64_sse2
, aom_v_predictor_16x64_sse2
,
630 aom_h_predictor_16x64_sse2
, NULL
, NULL
, NULL
, NULL
)
634 INTRA_PRED_TEST(SSSE3_1
, TX_16X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
635 aom_paeth_predictor_16x16_ssse3
,
636 aom_smooth_predictor_16x16_ssse3
,
637 aom_smooth_v_predictor_16x16_ssse3
,
638 aom_smooth_h_predictor_16x16_ssse3
)
639 INTRA_PRED_TEST(SSSE3_2
, TX_16X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
640 aom_paeth_predictor_16x8_ssse3
, aom_smooth_predictor_16x8_ssse3
,
641 aom_smooth_v_predictor_16x8_ssse3
,
642 aom_smooth_h_predictor_16x8_ssse3
)
643 INTRA_PRED_TEST(SSSE3_3
, TX_16X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
644 aom_paeth_predictor_16x32_ssse3
,
645 aom_smooth_predictor_16x32_ssse3
,
646 aom_smooth_v_predictor_16x32_ssse3
,
647 aom_smooth_h_predictor_16x32_ssse3
)
648 INTRA_PRED_TEST(SSSE3_4
, TX_16X64
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
649 aom_paeth_predictor_16x64_ssse3
,
650 aom_smooth_predictor_16x64_ssse3
,
651 aom_smooth_v_predictor_16x64_ssse3
,
652 aom_smooth_h_predictor_16x64_ssse3
)
653 INTRA_PRED_TEST(SSSE3_5
, TX_16X4
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
654 NULL
, aom_smooth_v_predictor_16x4_ssse3
,
655 aom_smooth_h_predictor_16x4_ssse3
)
659 INTRA_PRED_TEST(AVX2_1
, TX_16X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
660 aom_paeth_predictor_16x16_avx2
, NULL
, NULL
, NULL
)
661 INTRA_PRED_TEST(AVX2_2
, TX_16X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
662 aom_paeth_predictor_16x8_avx2
, NULL
, NULL
, NULL
)
663 INTRA_PRED_TEST(AVX2_3
, TX_16X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
664 aom_paeth_predictor_16x32_avx2
, NULL
, NULL
, NULL
)
665 INTRA_PRED_TEST(AVX2_4
, TX_16X64
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
666 aom_paeth_predictor_16x64_avx2
, NULL
, NULL
, NULL
)
670 INTRA_PRED_TEST(DSPR2
, TX_16X16
, aom_dc_predictor_16x16_dspr2
, NULL
, NULL
, NULL
,
671 NULL
, aom_h_predictor_16x16_dspr2
, NULL
, NULL
, NULL
, NULL
)
675 INTRA_PRED_TEST(NEON
, TX_16X16
, aom_dc_predictor_16x16_neon
,
676 aom_dc_left_predictor_16x16_neon
,
677 aom_dc_top_predictor_16x16_neon
,
678 aom_dc_128_predictor_16x16_neon
, aom_v_predictor_16x16_neon
,
679 aom_h_predictor_16x16_neon
, NULL
, NULL
, NULL
, NULL
)
683 INTRA_PRED_TEST(MSA
, TX_16X16
, aom_dc_predictor_16x16_msa
,
684 aom_dc_left_predictor_16x16_msa
, aom_dc_top_predictor_16x16_msa
,
685 aom_dc_128_predictor_16x16_msa
, aom_v_predictor_16x16_msa
,
686 aom_h_predictor_16x16_msa
, NULL
, NULL
, NULL
, NULL
)
689 // -----------------------------------------------------------------------------
690 // 32x32, 32x16, 32x64, 32x8
692 INTRA_PRED_TEST(C_1
, TX_32X32
, aom_dc_predictor_32x32_c
,
693 aom_dc_left_predictor_32x32_c
, aom_dc_top_predictor_32x32_c
,
694 aom_dc_128_predictor_32x32_c
, aom_v_predictor_32x32_c
,
695 aom_h_predictor_32x32_c
, aom_paeth_predictor_32x32_c
,
696 aom_smooth_predictor_32x32_c
, aom_smooth_v_predictor_32x32_c
,
697 aom_smooth_h_predictor_32x32_c
)
699 INTRA_PRED_TEST(C_2
, TX_32X16
, aom_dc_predictor_32x16_c
,
700 aom_dc_left_predictor_32x16_c
, aom_dc_top_predictor_32x16_c
,
701 aom_dc_128_predictor_32x16_c
, aom_v_predictor_32x16_c
,
702 aom_h_predictor_32x16_c
, aom_paeth_predictor_32x16_c
,
703 aom_smooth_predictor_32x16_c
, aom_smooth_v_predictor_32x16_c
,
704 aom_smooth_h_predictor_32x16_c
)
706 INTRA_PRED_TEST(C_3
, TX_32X64
, aom_dc_predictor_32x64_c
,
707 aom_dc_left_predictor_32x64_c
, aom_dc_top_predictor_32x64_c
,
708 aom_dc_128_predictor_32x64_c
, aom_v_predictor_32x64_c
,
709 aom_h_predictor_32x64_c
, aom_paeth_predictor_32x64_c
,
710 aom_smooth_predictor_32x64_c
, aom_smooth_v_predictor_32x64_c
,
711 aom_smooth_h_predictor_32x64_c
)
713 INTRA_PRED_TEST(C_4
, TX_32X8
, aom_dc_predictor_32x8_c
,
714 aom_dc_left_predictor_32x8_c
, aom_dc_top_predictor_32x8_c
,
715 aom_dc_128_predictor_32x8_c
, aom_v_predictor_32x8_c
,
716 aom_h_predictor_32x8_c
, aom_paeth_predictor_32x8_c
,
717 aom_smooth_predictor_32x8_c
, aom_smooth_v_predictor_32x8_c
,
718 aom_smooth_h_predictor_32x8_c
)
721 INTRA_PRED_TEST(SSE2_1
, TX_32X32
, aom_dc_predictor_32x32_sse2
,
722 aom_dc_left_predictor_32x32_sse2
,
723 aom_dc_top_predictor_32x32_sse2
,
724 aom_dc_128_predictor_32x32_sse2
, aom_v_predictor_32x32_sse2
,
725 aom_h_predictor_32x32_sse2
, NULL
, NULL
, NULL
, NULL
)
726 INTRA_PRED_TEST(SSE2_2
, TX_32X16
, aom_dc_predictor_32x16_sse2
,
727 aom_dc_left_predictor_32x16_sse2
,
728 aom_dc_top_predictor_32x16_sse2
,
729 aom_dc_128_predictor_32x16_sse2
, aom_v_predictor_32x16_sse2
,
730 aom_h_predictor_32x16_sse2
, NULL
, NULL
, NULL
, NULL
)
731 INTRA_PRED_TEST(SSE2_3
, TX_32X64
, aom_dc_predictor_32x64_sse2
,
732 aom_dc_left_predictor_32x64_sse2
,
733 aom_dc_top_predictor_32x64_sse2
,
734 aom_dc_128_predictor_32x64_sse2
, aom_v_predictor_32x64_sse2
,
735 aom_h_predictor_32x64_sse2
, NULL
, NULL
, NULL
, NULL
)
736 INTRA_PRED_TEST(SSE2_4
, TX_32X8
, aom_dc_predictor_32x8_sse2
,
737 aom_dc_left_predictor_32x8_sse2
, aom_dc_top_predictor_32x8_sse2
,
738 aom_dc_128_predictor_32x8_sse2
, aom_v_predictor_32x8_sse2
,
739 aom_h_predictor_32x8_sse2
, NULL
, NULL
, NULL
, NULL
)
743 INTRA_PRED_TEST(SSSE3_1
, TX_32X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
744 aom_paeth_predictor_32x32_ssse3
,
745 aom_smooth_predictor_32x32_ssse3
,
746 aom_smooth_v_predictor_32x32_ssse3
,
747 aom_smooth_h_predictor_32x32_ssse3
)
748 INTRA_PRED_TEST(SSSE3_2
, TX_32X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
749 aom_paeth_predictor_32x16_ssse3
,
750 aom_smooth_predictor_32x16_ssse3
,
751 aom_smooth_v_predictor_32x16_ssse3
,
752 aom_smooth_h_predictor_32x16_ssse3
)
753 INTRA_PRED_TEST(SSSE3_3
, TX_32X64
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
754 aom_paeth_predictor_32x64_ssse3
,
755 aom_smooth_predictor_32x64_ssse3
,
756 aom_smooth_v_predictor_32x64_ssse3
,
757 aom_smooth_h_predictor_32x64_ssse3
)
758 INTRA_PRED_TEST(SSSE3_4
, TX_32X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
759 aom_paeth_predictor_32x8_ssse3
, aom_smooth_predictor_32x8_ssse3
,
760 aom_smooth_v_predictor_32x8_ssse3
,
761 aom_smooth_h_predictor_32x8_ssse3
)
765 INTRA_PRED_TEST(AVX2_1
, TX_32X32
, aom_dc_predictor_32x32_avx2
,
766 aom_dc_left_predictor_32x32_avx2
,
767 aom_dc_top_predictor_32x32_avx2
,
768 aom_dc_128_predictor_32x32_avx2
, aom_v_predictor_32x32_avx2
,
769 aom_h_predictor_32x32_avx2
, aom_paeth_predictor_32x32_avx2
,
771 INTRA_PRED_TEST(AVX2_2
, TX_32X16
, aom_dc_predictor_32x16_avx2
,
772 aom_dc_left_predictor_32x16_avx2
,
773 aom_dc_top_predictor_32x16_avx2
,
774 aom_dc_128_predictor_32x16_avx2
, aom_v_predictor_32x16_avx2
,
775 NULL
, aom_paeth_predictor_32x16_avx2
, NULL
, NULL
, NULL
)
776 INTRA_PRED_TEST(AVX2_3
, TX_32X64
, aom_dc_predictor_32x64_avx2
,
777 aom_dc_left_predictor_32x64_avx2
,
778 aom_dc_top_predictor_32x64_avx2
,
779 aom_dc_128_predictor_32x64_avx2
, aom_v_predictor_32x64_avx2
,
780 NULL
, aom_paeth_predictor_32x64_avx2
, NULL
, NULL
, NULL
)
784 INTRA_PRED_TEST(NEON
, TX_32X32
, aom_dc_predictor_32x32_neon
,
785 aom_dc_left_predictor_32x32_neon
,
786 aom_dc_top_predictor_32x32_neon
,
787 aom_dc_128_predictor_32x32_neon
, aom_v_predictor_32x32_neon
,
788 aom_h_predictor_32x32_neon
, NULL
, NULL
, NULL
, NULL
)
792 INTRA_PRED_TEST(MSA
, TX_32X32
, aom_dc_predictor_32x32_msa
,
793 aom_dc_left_predictor_32x32_msa
, aom_dc_top_predictor_32x32_msa
,
794 aom_dc_128_predictor_32x32_msa
, aom_v_predictor_32x32_msa
,
795 aom_h_predictor_32x32_msa
, NULL
, NULL
, NULL
, NULL
)
798 // -----------------------------------------------------------------------------
799 // 64x64, 64x32, 64x16
801 INTRA_PRED_TEST(C_1
, TX_64X64
, aom_dc_predictor_64x64_c
,
802 aom_dc_left_predictor_64x64_c
, aom_dc_top_predictor_64x64_c
,
803 aom_dc_128_predictor_64x64_c
, aom_v_predictor_64x64_c
,
804 aom_h_predictor_64x64_c
, aom_paeth_predictor_64x64_c
,
805 aom_smooth_predictor_64x64_c
, aom_smooth_v_predictor_64x64_c
,
806 aom_smooth_h_predictor_64x64_c
)
808 INTRA_PRED_TEST(C_2
, TX_64X32
, aom_dc_predictor_64x32_c
,
809 aom_dc_left_predictor_64x32_c
, aom_dc_top_predictor_64x32_c
,
810 aom_dc_128_predictor_64x32_c
, aom_v_predictor_64x32_c
,
811 aom_h_predictor_64x32_c
, aom_paeth_predictor_64x32_c
,
812 aom_smooth_predictor_64x32_c
, aom_smooth_v_predictor_64x32_c
,
813 aom_smooth_h_predictor_64x32_c
)
815 INTRA_PRED_TEST(C_3
, TX_64X16
, aom_dc_predictor_64x16_c
,
816 aom_dc_left_predictor_64x16_c
, aom_dc_top_predictor_64x16_c
,
817 aom_dc_128_predictor_64x16_c
, aom_v_predictor_64x16_c
,
818 aom_h_predictor_64x16_c
, aom_paeth_predictor_64x16_c
,
819 aom_smooth_predictor_64x16_c
, aom_smooth_v_predictor_64x16_c
,
820 aom_smooth_h_predictor_64x16_c
)
823 INTRA_PRED_TEST(SSE2_4
, TX_64X64
, aom_dc_predictor_64x64_sse2
,
824 aom_dc_left_predictor_64x64_sse2
,
825 aom_dc_top_predictor_64x64_sse2
,
826 aom_dc_128_predictor_64x64_sse2
, aom_v_predictor_64x64_sse2
,
827 aom_h_predictor_64x64_sse2
, NULL
, NULL
, NULL
, NULL
)
828 INTRA_PRED_TEST(SSE2_5
, TX_64X32
, aom_dc_predictor_64x32_sse2
,
829 aom_dc_left_predictor_64x32_sse2
,
830 aom_dc_top_predictor_64x32_sse2
,
831 aom_dc_128_predictor_64x32_sse2
, aom_v_predictor_64x32_sse2
,
832 aom_h_predictor_64x32_sse2
, NULL
, NULL
, NULL
, NULL
)
833 INTRA_PRED_TEST(SSE2_6
, TX_64X16
, aom_dc_predictor_64x16_sse2
,
834 aom_dc_left_predictor_64x16_sse2
,
835 aom_dc_top_predictor_64x16_sse2
,
836 aom_dc_128_predictor_64x16_sse2
, aom_v_predictor_64x16_sse2
,
837 aom_h_predictor_64x16_sse2
, NULL
, NULL
, NULL
, NULL
)
841 INTRA_PRED_TEST(SSSE3_4
, TX_64X64
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
842 aom_paeth_predictor_64x64_ssse3
,
843 aom_smooth_predictor_64x64_ssse3
,
844 aom_smooth_v_predictor_64x64_ssse3
,
845 aom_smooth_h_predictor_64x64_ssse3
)
846 INTRA_PRED_TEST(SSSE3_5
, TX_64X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
847 aom_paeth_predictor_64x32_ssse3
,
848 aom_smooth_predictor_64x32_ssse3
,
849 aom_smooth_v_predictor_64x32_ssse3
,
850 aom_smooth_h_predictor_64x32_ssse3
)
851 INTRA_PRED_TEST(SSSE3_6
, TX_64X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
852 aom_paeth_predictor_64x16_ssse3
,
853 aom_smooth_predictor_64x16_ssse3
,
854 aom_smooth_v_predictor_64x16_ssse3
,
855 aom_smooth_h_predictor_64x16_ssse3
)
859 INTRA_PRED_TEST(AVX2_4
, TX_64X64
, aom_dc_predictor_64x64_avx2
,
860 aom_dc_left_predictor_64x64_avx2
,
861 aom_dc_top_predictor_64x64_avx2
,
862 aom_dc_128_predictor_64x64_avx2
, aom_v_predictor_64x64_avx2
,
863 NULL
, aom_paeth_predictor_64x64_avx2
, NULL
, NULL
, NULL
)
864 INTRA_PRED_TEST(AVX2_5
, TX_64X32
, aom_dc_predictor_64x32_avx2
,
865 aom_dc_left_predictor_64x32_avx2
,
866 aom_dc_top_predictor_64x32_avx2
,
867 aom_dc_128_predictor_64x32_avx2
, aom_v_predictor_64x32_avx2
,
868 NULL
, aom_paeth_predictor_64x32_avx2
, NULL
, NULL
, NULL
)
869 INTRA_PRED_TEST(AVX2_6
, TX_64X16
, aom_dc_predictor_64x16_avx2
,
870 aom_dc_left_predictor_64x16_avx2
,
871 aom_dc_top_predictor_64x16_avx2
,
872 aom_dc_128_predictor_64x16_avx2
, aom_v_predictor_64x16_avx2
,
873 NULL
, aom_paeth_predictor_64x16_avx2
, NULL
, NULL
, NULL
)
875 // -----------------------------------------------------------------------------
879 typedef void (*AvxHighbdPredFunc
)(uint16_t *dst
, ptrdiff_t y_stride
,
880 const uint16_t *above
, const uint16_t *left
,
883 typedef IntraPredTestMem
<uint16_t> Av1HighbdIntraPredTestMem
;
885 void TestHighbdIntraPred(TX_SIZE tx_size
, AvxHighbdPredFunc
const *pred_funcs
,
886 const char *const signatures
[]) {
887 const int block_width
= tx_size_wide
[tx_size
];
888 const int block_height
= tx_size_high
[tx_size
];
889 const int num_pixels_per_test
=
890 block_width
* block_height
* kNumAv1IntraFuncs
;
891 const int kNumTests
= static_cast<int>(2.e10
/ num_pixels_per_test
);
892 Av1HighbdIntraPredTestMem intra_pred_test_mem
;
894 intra_pred_test_mem
.Init(block_width
, block_height
, bd
);
896 for (int k
= 0; k
< kNumAv1IntraFuncs
; ++k
) {
897 if (pred_funcs
[k
] == NULL
) continue;
898 memcpy(intra_pred_test_mem
.src
, intra_pred_test_mem
.ref_src
,
899 sizeof(intra_pred_test_mem
.src
));
900 aom_usec_timer timer
;
901 aom_usec_timer_start(&timer
);
902 for (int num_tests
= 0; num_tests
< kNumTests
; ++num_tests
) {
903 pred_funcs
[k
](intra_pred_test_mem
.src
, intra_pred_test_mem
.stride
,
904 intra_pred_test_mem
.above
, intra_pred_test_mem
.left
, bd
);
906 libaom_test::ClearSystemState();
907 aom_usec_timer_mark(&timer
);
908 const int elapsed_time
=
909 static_cast<int>(aom_usec_timer_elapsed(&timer
) / 1000);
911 tx_size
, true, signatures
, intra_pred_test_mem
.src
,
912 intra_pred_test_mem
.num_pixels
* sizeof(*intra_pred_test_mem
.src
),
917 static const char *const kHighbdSignatures
[TX_SIZES_ALL
][kNumAv1IntraFuncs
] = {
920 "11f74af6c5737df472f3275cbde062fa",
921 "51bea056b6447c93f6eb8f6b7e8f6f71",
922 "27e97f946766331795886f4de04c5594",
923 "53ab15974b049111fb596c5168ec7e3f",
924 "f0b640bb176fbe4584cf3d32a9b0320a",
925 "729783ca909e03afd4b47111c80d967b",
926 "6e30009c45474a22032678b1bd579c8f",
927 "e57cba016d808aa8a35619df2a65f049",
928 "55a6c37f39afcbbf5abca4a985b96459",
929 "a623d45b37dafec1f8a75c4c5218913d",
933 "03da8829fe94663047fd108c5fcaa71d",
934 "ecdb37b8120a2d3a4c706b016bd1bfd7",
935 "1d4543ed8d2b9368cb96898095fe8a75",
936 "f791c9a67b913cbd82d9da8ecede30e2",
937 "065c70646f4dbaff913282f55a45a441",
938 "51f87123616662ef7c35691497dfd0ba",
939 "85c01ba03df68f9ece7bd3fa0f8980e6",
940 "ad19b7dac092f56df6d054e1f67f21e7",
941 "0edc415b5dd7299f7a34fb9f71d31d78",
942 "2bc8ec19e9f4b77a64b8a0a1f6aec7e7",
946 "e33cb3f56a878e2fddb1b2fc51cdd275",
947 "c7bff6f04b6052c8ab335d726dbbd52d",
948 "d0b0b47b654a9bcc5c6008110a44589b",
949 "78f5da7b10b2b9ab39f114a33b6254e9",
950 "c78e31d23831abb40d6271a318fdd6f3",
951 "90d1347f4ec9198a0320daecb6ff90b8",
952 "e63ded54ab3d0e8728b6f24d4f01e53f",
953 "35ce21fbe0ea114c089fc3489a78155d",
954 "f277f6ef8e4d717f1f0dfe2706ac197d",
955 "e8014d3f41256976c02e0f1e622ba2b9",
959 "a3e8056ba7e36628cce4917cd956fedd",
960 "cc7d3024fe8748b512407edee045377e",
961 "2aab0a0f330a1d3e19b8ecb8f06387a3",
962 "a547bc3fb7b06910bf3973122a426661",
963 "26f712514da95042f93d6e8dc8e431dc",
964 "bb08c6e16177081daa3d936538dbc2e3",
965 "84bf83f94a51b33654ca940c6f8bc057",
966 "7168b03fc31bf29596a344d6a35d007c",
967 "b073a70d3672f1282236994f5d12e94b",
968 "c51607aebad5dcb3c1e3b58ef9e5b84e",
972 "a6baa0d4bfb2269a94c7a38f86a4bccf",
973 "3f1ef5f473a49eba743f17a3324adf9d",
974 "12ac11889ae5f55b7781454efd706a6a",
975 "d9a906c0e692b22e1b4414e71a704b7e",
976 "47d4cadd56f70c11ff8f3e5d8df81161",
977 "de997744cf24c16c5ac2a36b02b351cc",
978 "23781211ae178ddeb6c4bb97a6bd7d83",
979 "a79d2e28340ca34b9e37daabbf030f63",
980 "0372bd3ddfc258750a6ac106b70587f4",
981 "228ef625d9460cbf6fa253a16a730976",
985 "22d519b796d59644043466320e4ccd14",
986 "09513a738c49b3f9542d27f34abbe1d5",
987 "807ae5e8813443ff01e71be6efacfb69",
988 "cbfa18d0293430b6e9708b0be1fd2394",
989 "346c354c34ec7fa780b576db355dab88",
990 "f97dae85c35359632380b09ca98d611e",
991 "698ae351d8896d89ed9e4e67b6e53eda",
992 "dcc197034a9c45a3d8238bf085835f4e",
993 "7a35e2c42ffdc2efc2d6d1d75a100fc7",
994 "41ab6cebd4516c87a91b2a593e2c2506",
998 "d58cd4c4bf3b7bbaa5db5e1a5622ec78",
999 "6e572c35aa782d00cafcb99e9ea047ea",
1000 "e8c22a3702b416dc9ab974505afbed09",
1001 "aaa4e4762a795aad7ad74de0c662c4e4",
1002 "a19f9101967383c3dcbd516dc317a291",
1003 "9ab8cb91f1a595b9ebe3fe8de58031aa",
1004 "2cf9021d5f1169268699807ee118b65f",
1005 "ee9605fcbd6fb871f1c5cd81a6989327",
1006 "b4871af8316089e3e23522175df7e93f",
1007 "d33301e1c2cb173be46792a22d19881a",
1011 "4562de1d0336610880fdd5685498a9ec",
1012 "16310fa7076394f16fc85c4b149d89c9",
1013 "0e94af88e1dc573b6f0f499cddd1f530",
1014 "dfd245ee20d091c67809160340365aa9",
1015 "d3562504327f70c096c5be23fd8a3747",
1016 "601b853558502acbb5135eadd2da117a",
1017 "3c624345a723a1b2b1bea05a6a08bc99",
1018 "2a9c781de609e0184cc7ab442050f4e5",
1019 "0ddc5035c22252747126b61fc238c74d",
1020 "e43f5d83bab759af69c7b6773fc8f9b2",
1024 "a57d6b5a9bfd30c29591d8717ace9c51",
1025 "f5907ba97ee6c53e339e953fc8d845ee",
1026 "ea3aa727913ce45af06f89dd1808db5f",
1027 "408af4f23e48d14b48ee35ae094fcd18",
1028 "85c41cbcb5d744f7961e8950026fbffe",
1029 "8a4e588a837638887ba671f8d4910485",
1030 "b792d8826b67a21757ea7097cff9e05b",
1031 "f94ce7101bb87fd3bb9312112527dbf4",
1032 "688c6660a6dc6fa61fa1aa38e708c209",
1033 "0cdf641b4f81d69509c92ae0b93ef5ff",
1037 "aee4b3b0e3cc02d48e2c40d77f807927",
1038 "8baef2b2e789f79c8df9d90ad10f34a4",
1039 "038c38ee3c4f090bb8d736eab136aafc",
1040 "1a3de2aaeaffd68a9fd6c7f6557b83f3",
1041 "385c6e0ea29421dd81011a2934641e26",
1042 "6cf96c285d1a2d4787f955dad715b08c",
1043 "2d7f75dcd73b9528c8396279ff09ff3a",
1044 "5a63cd1841e4ed470e4ca5ef845f2281",
1045 "610d899ca945fbead33287d4335a8b32",
1046 "6bafaad81fce37be46730187e78d8b11",
1050 "290b23c9f5a1de7905bfa71a942da29b",
1051 "701e7b82593c66da5052fc4b6afd79ce",
1052 "4da828c5455cd246735a663fbb204989",
1053 "e3fbeaf234efece8dbd752b77226200c",
1054 "4d1d8c969f05155a7e7e84cf7aad021b",
1055 "c22e4877c2c946d5bdc0d542e29e70cf",
1056 "8ac1ce815e7780500f842b0beb0bb980",
1057 "9fee2e2502b507f25bfad30a55b0b610",
1058 "4ced9c212ec6f9956e27f68a91b59fef",
1059 "4a7a0b93f138bb0863e4e465b01ec0b1",
1063 "ad9cfc395a5c5644a21d958c7274ac14",
1064 "f29d6d03c143ddf96fef04c19f2c8333",
1065 "a8bdc852ef704dd4975c61893e8fbc3f",
1066 "7d0bd7dea26226741dbca9a97f27fa74",
1067 "45c27c5cca9a91b6ae8379feb0881c9f",
1068 "8a0b78df1e001b85c874d686eac4aa1b",
1069 "ce9fa75fac54a3f6c0cc3f2083b938f1",
1070 "c0dca10d88762c954af18dc9e3791a39",
1071 "61df229eddfccab913b8fda4bb02f9ac",
1072 "4f4df6bc8d50a5600b573f0e44d70e66",
1076 "db9d82921fd88b24fdff6f849f2f9c87",
1077 "5ecc7fdc52d2f575ad4f2d0e9e6b1e11",
1078 "b4581311a0a73d95dfac7f8f44591032",
1079 "68bd283cfd1a125f6b2ee47cee874d36",
1080 "804179f05c032908a5e36077bb87c994",
1081 "fc5fd041a8ee779015394d0c066ee43c",
1082 "68f5579ccadfe9a1baafb158334a3db2",
1083 "fe237e45e215ab06d79046da9ad71e84",
1084 "9a8a938a6824551bf7d21b8fd1d70ea1",
1085 "eb7332f2017cd96882c76e7136aeaf53",
1089 "7bafa307d507747b8132e7735b7f1c73",
1090 "e58bc2d8213a97d1fea9cfb73d7a9633",
1091 "435f8a8e8bbf14dbf2fe16b2be9e97aa",
1092 "1d0e767b68d84acbfb50b7a04e633836",
1093 "5f713bd7b324fe73bb7063e35ee14e5e",
1094 "0dac4e1fa3d59814202715468c01ed56",
1095 "47709d1db4a330c7a8900f450e6fddd1",
1096 "258e0b930bb27db28f05da9cf7d1ee7c",
1097 "36cf030fbae767912593efea045bfff5",
1098 "248d7aceabb7499febae663fae41a920",
1102 "04dde98e632670e393704742c89f9067",
1103 "8c72543f1664651ae1fa08e2ac0adb9b",
1104 "2354a2cdc2773aa2df8ab4010db1be39",
1105 "6300ad3221c26da39b10e0e6d87ee3be",
1106 "8ea30b661c6ba60b28d3167f19e449b8",
1107 "fb6c1e4ff101a371cede63c2955cdb7e",
1108 "a517c06433d6d7927b16a72184a23e92",
1109 "393828be5d62ab6c48668bea5e2f801a",
1110 "b1e510c542013eb9d6fb188dea2ce90a",
1111 "569a8f2fe01679ca216535ecbcdccb62",
1115 "9d541865c185ca7607852852613ac1fc",
1116 "b96be67f08c6b5fa5ebd3411299c2f7c",
1117 "75a2dcf50004b9d188849b048239767e",
1118 "429492ff415c9fd9b050d73b2ad500f8",
1119 "64b3606c1ccd036bd766bd5711392cf4",
1120 "cb59844a0f01660ac955bae3511f1100",
1121 "3e076155b7a70e8828618e3f33b51e3d",
1122 "ed2d1f597ab7c50beff690f737cf9726",
1123 "7909c6a26aaf20c59d996d3e5b5f9c29",
1124 "965798807240c98c6f7cc9b457ed0773",
1128 "36f391aa31619eec1f4d9ee95ea454cc",
1129 "b82648f14eeba2527357cb50bc3223cb",
1130 "7a7b2adf429125e8bee9d1d00a66e13f",
1131 "4198e4d6ba503b7cc2d7e96bb845f661",
1132 "96c160d2ec1be9fe0cdea9682f14d257",
1133 "19a450bcebaa75afb4fc6bd1fd6434af",
1134 "2bd2e35967d43d0ec1c6587a36f204d5",
1135 "49799a99aa4ccfbd989bee92a99422f1",
1136 "955530e99813812a74659edeac3f5475",
1137 "f0316b84e378a19cd11b19a6e40b2914",
1141 "8cba1b70a0bde29e8ef235cedc5faa7d",
1142 "96d00ddc7537bf7f196006591b733b4e",
1143 "cbf69d5d157c9f3355a4757b1d6e3414",
1144 "3ac1f642019493dec1b737d7a3a1b4e5",
1145 "35f9ee300d7fa3c97338e81a6f21dcd4",
1146 "aae335442e77c8ebc280f16ea50ba9c7",
1147 "a6140fdac2278644328be094d88731db",
1148 "2df93621b6ff100f7008432d509f4161",
1149 "c77bf5aee39e7ed4a3dd715f816f452a",
1150 "02109bd63557d90225c32a8f1338258e",
1154 "a5e2f9fb685d5f4a048e9a96affd25a4",
1155 "1348f249690d9eefe09d9ad7ead2c801",
1156 "525da4b187acd81b1ff1116b60461141",
1157 "e99d072de858094c98b01bd4a6772634",
1158 "873bfa9dc24693f19721f7c8d527f7d3",
1159 "0acfc6507bd3468e9679efc127d6e4b9",
1160 "57d03f8d079c7264854e22ac1157cfae",
1161 "6c2c4036f70c7d957a9399b5436c0774",
1162 "42b8e4a97b7f8416c72a5148c031c0b1",
1163 "a38a2c5f79993dfae8530e9e25800893",
1169 #define HIGHBD_INTRA_PRED_TEST(arch, tx_size, dc, dc_left, dc_top, dc_128, v, \
1170 h, paeth, smooth, smooth_v, smooth_h) \
1171 TEST(arch, DISABLED_##TestHighbdIntraPred_##tx_size) { \
1172 static const AvxHighbdPredFunc aom_intra_pred[] = { \
1173 dc, dc_left, dc_top, dc_128, v, h, paeth, smooth, smooth_v, smooth_h \
1175 TestHighbdIntraPred(tx_size, aom_intra_pred, kHighbdSignatures[tx_size]); \
1178 // -----------------------------------------------------------------------------
1181 HIGHBD_INTRA_PRED_TEST(
1182 C_1
, TX_4X4
, aom_highbd_dc_predictor_4x4_c
,
1183 aom_highbd_dc_left_predictor_4x4_c
, aom_highbd_dc_top_predictor_4x4_c
,
1184 aom_highbd_dc_128_predictor_4x4_c
, aom_highbd_v_predictor_4x4_c
,
1185 aom_highbd_h_predictor_4x4_c
, aom_highbd_paeth_predictor_4x4_c
,
1186 aom_highbd_smooth_predictor_4x4_c
, aom_highbd_smooth_v_predictor_4x4_c
,
1187 aom_highbd_smooth_h_predictor_4x4_c
)
1189 HIGHBD_INTRA_PRED_TEST(
1190 C_2
, TX_4X8
, aom_highbd_dc_predictor_4x8_c
,
1191 aom_highbd_dc_left_predictor_4x8_c
, aom_highbd_dc_top_predictor_4x8_c
,
1192 aom_highbd_dc_128_predictor_4x8_c
, aom_highbd_v_predictor_4x8_c
,
1193 aom_highbd_h_predictor_4x8_c
, aom_highbd_paeth_predictor_4x8_c
,
1194 aom_highbd_smooth_predictor_4x8_c
, aom_highbd_smooth_v_predictor_4x8_c
,
1195 aom_highbd_smooth_h_predictor_4x8_c
)
1197 HIGHBD_INTRA_PRED_TEST(
1198 C_3
, TX_4X16
, aom_highbd_dc_predictor_4x16_c
,
1199 aom_highbd_dc_left_predictor_4x16_c
, aom_highbd_dc_top_predictor_4x16_c
,
1200 aom_highbd_dc_128_predictor_4x16_c
, aom_highbd_v_predictor_4x16_c
,
1201 aom_highbd_h_predictor_4x16_c
, aom_highbd_paeth_predictor_4x16_c
,
1202 aom_highbd_smooth_predictor_4x16_c
, aom_highbd_smooth_v_predictor_4x16_c
,
1203 aom_highbd_smooth_h_predictor_4x16_c
)
1206 HIGHBD_INTRA_PRED_TEST(SSE2_1
, TX_4X4
, aom_highbd_dc_predictor_4x4_sse2
,
1207 aom_highbd_dc_left_predictor_4x4_sse2
,
1208 aom_highbd_dc_top_predictor_4x4_sse2
,
1209 aom_highbd_dc_128_predictor_4x4_sse2
,
1210 aom_highbd_v_predictor_4x4_sse2
,
1211 aom_highbd_h_predictor_4x4_sse2
, NULL
, NULL
, NULL
, NULL
)
1213 HIGHBD_INTRA_PRED_TEST(SSE2_2
, TX_4X8
, aom_highbd_dc_predictor_4x8_sse2
,
1214 aom_highbd_dc_left_predictor_4x8_sse2
,
1215 aom_highbd_dc_top_predictor_4x8_sse2
,
1216 aom_highbd_dc_128_predictor_4x8_sse2
,
1217 aom_highbd_v_predictor_4x8_sse2
,
1218 aom_highbd_h_predictor_4x8_sse2
, NULL
, NULL
, NULL
, NULL
)
1221 // -----------------------------------------------------------------------------
1222 // 8x8, 8x4, 8x16, 8x32
1224 HIGHBD_INTRA_PRED_TEST(
1225 C_1
, TX_8X8
, aom_highbd_dc_predictor_8x8_c
,
1226 aom_highbd_dc_left_predictor_8x8_c
, aom_highbd_dc_top_predictor_8x8_c
,
1227 aom_highbd_dc_128_predictor_8x8_c
, aom_highbd_v_predictor_8x8_c
,
1228 aom_highbd_h_predictor_8x8_c
, aom_highbd_paeth_predictor_8x8_c
,
1229 aom_highbd_smooth_predictor_8x8_c
, aom_highbd_smooth_v_predictor_8x8_c
,
1230 aom_highbd_smooth_h_predictor_8x8_c
)
1232 HIGHBD_INTRA_PRED_TEST(
1233 C_2
, TX_8X4
, aom_highbd_dc_predictor_8x4_c
,
1234 aom_highbd_dc_left_predictor_8x4_c
, aom_highbd_dc_top_predictor_8x4_c
,
1235 aom_highbd_dc_128_predictor_8x4_c
, aom_highbd_v_predictor_8x4_c
,
1236 aom_highbd_h_predictor_8x4_c
, aom_highbd_paeth_predictor_8x4_c
,
1237 aom_highbd_smooth_predictor_8x4_c
, aom_highbd_smooth_v_predictor_8x4_c
,
1238 aom_highbd_smooth_h_predictor_8x4_c
)
1240 HIGHBD_INTRA_PRED_TEST(
1241 C_3
, TX_8X16
, aom_highbd_dc_predictor_8x16_c
,
1242 aom_highbd_dc_left_predictor_8x16_c
, aom_highbd_dc_top_predictor_8x16_c
,
1243 aom_highbd_dc_128_predictor_8x16_c
, aom_highbd_v_predictor_8x16_c
,
1244 aom_highbd_h_predictor_8x16_c
, aom_highbd_paeth_predictor_8x16_c
,
1245 aom_highbd_smooth_predictor_8x16_c
, aom_highbd_smooth_v_predictor_8x16_c
,
1246 aom_highbd_smooth_h_predictor_8x16_c
)
1248 HIGHBD_INTRA_PRED_TEST(
1249 C_4
, TX_8X32
, aom_highbd_dc_predictor_8x32_c
,
1250 aom_highbd_dc_left_predictor_8x32_c
, aom_highbd_dc_top_predictor_8x32_c
,
1251 aom_highbd_dc_128_predictor_8x32_c
, aom_highbd_v_predictor_8x32_c
,
1252 aom_highbd_h_predictor_8x32_c
, aom_highbd_paeth_predictor_8x32_c
,
1253 aom_highbd_smooth_predictor_8x32_c
, aom_highbd_smooth_v_predictor_8x32_c
,
1254 aom_highbd_smooth_h_predictor_8x32_c
)
1257 HIGHBD_INTRA_PRED_TEST(SSE2_1
, TX_8X8
, aom_highbd_dc_predictor_8x8_sse2
,
1258 aom_highbd_dc_left_predictor_8x8_sse2
,
1259 aom_highbd_dc_top_predictor_8x8_sse2
,
1260 aom_highbd_dc_128_predictor_8x8_sse2
,
1261 aom_highbd_v_predictor_8x8_sse2
,
1262 aom_highbd_h_predictor_8x8_sse2
, NULL
, NULL
, NULL
, NULL
)
1263 HIGHBD_INTRA_PRED_TEST(SSE2_2
, TX_8X4
, aom_highbd_dc_predictor_8x4_sse2
,
1264 aom_highbd_dc_left_predictor_8x4_sse2
,
1265 aom_highbd_dc_top_predictor_8x4_sse2
,
1266 aom_highbd_dc_128_predictor_8x4_sse2
,
1267 aom_highbd_v_predictor_8x4_sse2
,
1268 aom_highbd_h_predictor_8x4_sse2
, NULL
, NULL
, NULL
, NULL
)
1269 HIGHBD_INTRA_PRED_TEST(SSE2_3
, TX_8X16
, aom_highbd_dc_predictor_8x16_sse2
,
1270 aom_highbd_dc_left_predictor_8x16_sse2
,
1271 aom_highbd_dc_top_predictor_8x16_sse2
,
1272 aom_highbd_dc_128_predictor_8x16_sse2
,
1273 aom_highbd_v_predictor_8x16_sse2
,
1274 aom_highbd_h_predictor_8x16_sse2
, NULL
, NULL
, NULL
, NULL
)
1278 HIGHBD_INTRA_PRED_TEST(SSSE3
, TX_8X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1282 // -----------------------------------------------------------------------------
1283 // 16x16, 16x8, 16x32, 16x4, 16x64
1285 HIGHBD_INTRA_PRED_TEST(
1286 C_1
, TX_16X16
, aom_highbd_dc_predictor_16x16_c
,
1287 aom_highbd_dc_left_predictor_16x16_c
, aom_highbd_dc_top_predictor_16x16_c
,
1288 aom_highbd_dc_128_predictor_16x16_c
, aom_highbd_v_predictor_16x16_c
,
1289 aom_highbd_h_predictor_16x16_c
, aom_highbd_paeth_predictor_16x16_c
,
1290 aom_highbd_smooth_predictor_16x16_c
, aom_highbd_smooth_v_predictor_16x16_c
,
1291 aom_highbd_smooth_h_predictor_16x16_c
)
1293 HIGHBD_INTRA_PRED_TEST(
1294 C_2
, TX_16X8
, aom_highbd_dc_predictor_16x8_c
,
1295 aom_highbd_dc_left_predictor_16x8_c
, aom_highbd_dc_top_predictor_16x8_c
,
1296 aom_highbd_dc_128_predictor_16x8_c
, aom_highbd_v_predictor_16x8_c
,
1297 aom_highbd_h_predictor_16x8_c
, aom_highbd_paeth_predictor_16x8_c
,
1298 aom_highbd_smooth_predictor_16x8_c
, aom_highbd_smooth_v_predictor_16x8_c
,
1299 aom_highbd_smooth_h_predictor_16x8_c
)
1301 HIGHBD_INTRA_PRED_TEST(
1302 C_3
, TX_16X32
, aom_highbd_dc_predictor_16x32_c
,
1303 aom_highbd_dc_left_predictor_16x32_c
, aom_highbd_dc_top_predictor_16x32_c
,
1304 aom_highbd_dc_128_predictor_16x32_c
, aom_highbd_v_predictor_16x32_c
,
1305 aom_highbd_h_predictor_16x32_c
, aom_highbd_paeth_predictor_16x32_c
,
1306 aom_highbd_smooth_predictor_16x32_c
, aom_highbd_smooth_v_predictor_16x32_c
,
1307 aom_highbd_smooth_h_predictor_16x32_c
)
1309 HIGHBD_INTRA_PRED_TEST(
1310 C_4
, TX_16X4
, aom_highbd_dc_predictor_16x4_c
,
1311 aom_highbd_dc_left_predictor_16x4_c
, aom_highbd_dc_top_predictor_16x4_c
,
1312 aom_highbd_dc_128_predictor_16x4_c
, aom_highbd_v_predictor_16x4_c
,
1313 aom_highbd_h_predictor_16x4_c
, aom_highbd_paeth_predictor_16x4_c
,
1314 aom_highbd_smooth_predictor_16x4_c
, aom_highbd_smooth_v_predictor_16x4_c
,
1315 aom_highbd_smooth_h_predictor_16x4_c
)
1317 HIGHBD_INTRA_PRED_TEST(
1318 C_5
, TX_16X64
, aom_highbd_dc_predictor_16x64_c
,
1319 aom_highbd_dc_left_predictor_16x64_c
, aom_highbd_dc_top_predictor_16x64_c
,
1320 aom_highbd_dc_128_predictor_16x64_c
, aom_highbd_v_predictor_16x64_c
,
1321 aom_highbd_h_predictor_16x64_c
, aom_highbd_paeth_predictor_16x64_c
,
1322 aom_highbd_smooth_predictor_16x64_c
, aom_highbd_smooth_v_predictor_16x64_c
,
1323 aom_highbd_smooth_h_predictor_16x64_c
)
1326 HIGHBD_INTRA_PRED_TEST(SSE2_1
, TX_16X16
, aom_highbd_dc_predictor_16x16_sse2
,
1327 aom_highbd_dc_left_predictor_16x16_sse2
,
1328 aom_highbd_dc_top_predictor_16x16_sse2
,
1329 aom_highbd_dc_128_predictor_16x16_sse2
,
1330 aom_highbd_v_predictor_16x16_sse2
,
1331 aom_highbd_h_predictor_16x16_sse2
, NULL
, NULL
, NULL
,
1333 HIGHBD_INTRA_PRED_TEST(SSE2_2
, TX_16X8
, aom_highbd_dc_predictor_16x8_sse2
,
1334 aom_highbd_dc_left_predictor_16x8_sse2
,
1335 aom_highbd_dc_top_predictor_16x8_sse2
,
1336 aom_highbd_dc_128_predictor_16x8_sse2
,
1337 aom_highbd_v_predictor_16x8_sse2
,
1338 aom_highbd_h_predictor_16x8_sse2
, NULL
, NULL
, NULL
, NULL
)
1339 HIGHBD_INTRA_PRED_TEST(SSE2_3
, TX_16X32
, aom_highbd_dc_predictor_16x32_sse2
,
1340 aom_highbd_dc_left_predictor_16x32_sse2
,
1341 aom_highbd_dc_top_predictor_16x32_sse2
,
1342 aom_highbd_dc_128_predictor_16x32_sse2
,
1343 aom_highbd_v_predictor_16x32_sse2
,
1344 aom_highbd_h_predictor_16x32_sse2
, NULL
, NULL
, NULL
,
1349 HIGHBD_INTRA_PRED_TEST(SSSE3_1
, TX_16X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1350 NULL
, NULL
, NULL
, NULL
)
1354 HIGHBD_INTRA_PRED_TEST(AVX2_1
, TX_16X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1355 NULL
, NULL
, NULL
, NULL
)
1357 HIGHBD_INTRA_PRED_TEST(AVX2_2
, TX_16X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1358 NULL
, NULL
, NULL
, NULL
)
1360 HIGHBD_INTRA_PRED_TEST(AVX2_3
, TX_16X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1361 NULL
, NULL
, NULL
, NULL
)
1364 // -----------------------------------------------------------------------------
1365 // 32x32, 32x16, 32x64, 32x8
1367 HIGHBD_INTRA_PRED_TEST(
1368 C_1
, TX_32X32
, aom_highbd_dc_predictor_32x32_c
,
1369 aom_highbd_dc_left_predictor_32x32_c
, aom_highbd_dc_top_predictor_32x32_c
,
1370 aom_highbd_dc_128_predictor_32x32_c
, aom_highbd_v_predictor_32x32_c
,
1371 aom_highbd_h_predictor_32x32_c
, aom_highbd_paeth_predictor_32x32_c
,
1372 aom_highbd_smooth_predictor_32x32_c
, aom_highbd_smooth_v_predictor_32x32_c
,
1373 aom_highbd_smooth_h_predictor_32x32_c
)
1375 HIGHBD_INTRA_PRED_TEST(
1376 C_2
, TX_32X16
, aom_highbd_dc_predictor_32x16_c
,
1377 aom_highbd_dc_left_predictor_32x16_c
, aom_highbd_dc_top_predictor_32x16_c
,
1378 aom_highbd_dc_128_predictor_32x16_c
, aom_highbd_v_predictor_32x16_c
,
1379 aom_highbd_h_predictor_32x16_c
, aom_highbd_paeth_predictor_32x16_c
,
1380 aom_highbd_smooth_predictor_32x16_c
, aom_highbd_smooth_v_predictor_32x16_c
,
1381 aom_highbd_smooth_h_predictor_32x16_c
)
1383 HIGHBD_INTRA_PRED_TEST(
1384 C_3
, TX_32X64
, aom_highbd_dc_predictor_32x64_c
,
1385 aom_highbd_dc_left_predictor_32x64_c
, aom_highbd_dc_top_predictor_32x64_c
,
1386 aom_highbd_dc_128_predictor_32x64_c
, aom_highbd_v_predictor_32x64_c
,
1387 aom_highbd_h_predictor_32x64_c
, aom_highbd_paeth_predictor_32x64_c
,
1388 aom_highbd_smooth_predictor_32x64_c
, aom_highbd_smooth_v_predictor_32x64_c
,
1389 aom_highbd_smooth_h_predictor_32x64_c
)
1391 HIGHBD_INTRA_PRED_TEST(
1392 C_4
, TX_32X8
, aom_highbd_dc_predictor_32x8_c
,
1393 aom_highbd_dc_left_predictor_32x8_c
, aom_highbd_dc_top_predictor_32x8_c
,
1394 aom_highbd_dc_128_predictor_32x8_c
, aom_highbd_v_predictor_32x8_c
,
1395 aom_highbd_h_predictor_32x8_c
, aom_highbd_paeth_predictor_32x8_c
,
1396 aom_highbd_smooth_predictor_32x8_c
, aom_highbd_smooth_v_predictor_32x8_c
,
1397 aom_highbd_smooth_h_predictor_32x8_c
)
1400 HIGHBD_INTRA_PRED_TEST(SSE2_1
, TX_32X32
, aom_highbd_dc_predictor_32x32_sse2
,
1401 aom_highbd_dc_left_predictor_32x32_sse2
,
1402 aom_highbd_dc_top_predictor_32x32_sse2
,
1403 aom_highbd_dc_128_predictor_32x32_sse2
,
1404 aom_highbd_v_predictor_32x32_sse2
,
1405 aom_highbd_h_predictor_32x32_sse2
, NULL
, NULL
, NULL
,
1407 HIGHBD_INTRA_PRED_TEST(SSE2_2
, TX_32X16
, aom_highbd_dc_predictor_32x16_sse2
,
1408 aom_highbd_dc_left_predictor_32x16_sse2
,
1409 aom_highbd_dc_top_predictor_32x16_sse2
,
1410 aom_highbd_dc_128_predictor_32x16_sse2
,
1411 aom_highbd_v_predictor_32x16_sse2
,
1412 aom_highbd_h_predictor_32x16_sse2
, NULL
, NULL
, NULL
,
1417 HIGHBD_INTRA_PRED_TEST(SSSE3_1
, TX_32X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1418 NULL
, NULL
, NULL
, NULL
)
1422 HIGHBD_INTRA_PRED_TEST(AVX2_1
, TX_32X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1423 NULL
, NULL
, NULL
, NULL
)
1425 HIGHBD_INTRA_PRED_TEST(AVX2_2
, TX_32X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1426 NULL
, NULL
, NULL
, NULL
)
1429 // -----------------------------------------------------------------------------
1430 // 64x64, 64x32, 64x16
1432 HIGHBD_INTRA_PRED_TEST(
1433 C_1
, TX_64X64
, aom_highbd_dc_predictor_64x64_c
,
1434 aom_highbd_dc_left_predictor_64x64_c
, aom_highbd_dc_top_predictor_64x64_c
,
1435 aom_highbd_dc_128_predictor_64x64_c
, aom_highbd_v_predictor_64x64_c
,
1436 aom_highbd_h_predictor_64x64_c
, aom_highbd_paeth_predictor_64x64_c
,
1437 aom_highbd_smooth_predictor_64x64_c
, aom_highbd_smooth_v_predictor_64x64_c
,
1438 aom_highbd_smooth_h_predictor_64x64_c
)
1440 HIGHBD_INTRA_PRED_TEST(
1441 C_2
, TX_64X32
, aom_highbd_dc_predictor_64x32_c
,
1442 aom_highbd_dc_left_predictor_64x32_c
, aom_highbd_dc_top_predictor_64x32_c
,
1443 aom_highbd_dc_128_predictor_64x32_c
, aom_highbd_v_predictor_64x32_c
,
1444 aom_highbd_h_predictor_64x32_c
, aom_highbd_paeth_predictor_64x32_c
,
1445 aom_highbd_smooth_predictor_64x32_c
, aom_highbd_smooth_v_predictor_64x32_c
,
1446 aom_highbd_smooth_h_predictor_64x32_c
)
1448 HIGHBD_INTRA_PRED_TEST(
1449 C_3
, TX_64X16
, aom_highbd_dc_predictor_64x16_c
,
1450 aom_highbd_dc_left_predictor_64x16_c
, aom_highbd_dc_top_predictor_64x16_c
,
1451 aom_highbd_dc_128_predictor_64x16_c
, aom_highbd_v_predictor_64x16_c
,
1452 aom_highbd_h_predictor_64x16_c
, aom_highbd_paeth_predictor_64x16_c
,
1453 aom_highbd_smooth_predictor_64x16_c
, aom_highbd_smooth_v_predictor_64x16_c
,
1454 aom_highbd_smooth_h_predictor_64x16_c
)
1456 // -----------------------------------------------------------------------------
1458 #include "test/test_libaom.cc"