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
)
448 INTRA_PRED_TEST(SSSE3_1
, TX_4X4
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
449 aom_paeth_predictor_4x4_ssse3
, aom_smooth_predictor_4x4_ssse3
,
451 INTRA_PRED_TEST(SSSE3_2
, TX_4X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
452 aom_paeth_predictor_4x8_ssse3
, aom_smooth_predictor_4x8_ssse3
,
457 INTRA_PRED_TEST(DSPR2
, TX_4X4
, aom_dc_predictor_4x4_dspr2
, NULL
, NULL
, NULL
,
458 NULL
, aom_h_predictor_4x4_dspr2
, NULL
, NULL
, NULL
, NULL
)
462 INTRA_PRED_TEST(NEON
, TX_4X4
, aom_dc_predictor_4x4_neon
,
463 aom_dc_left_predictor_4x4_neon
, aom_dc_top_predictor_4x4_neon
,
464 aom_dc_128_predictor_4x4_neon
, aom_v_predictor_4x4_neon
,
465 aom_h_predictor_4x4_neon
, NULL
, NULL
, NULL
, NULL
)
469 INTRA_PRED_TEST(MSA
, TX_4X4
, aom_dc_predictor_4x4_msa
,
470 aom_dc_left_predictor_4x4_msa
, aom_dc_top_predictor_4x4_msa
,
471 aom_dc_128_predictor_4x4_msa
, aom_v_predictor_4x4_msa
,
472 aom_h_predictor_4x4_msa
, NULL
, NULL
, NULL
, NULL
)
475 // -----------------------------------------------------------------------------
476 // 8x8, 8x4, 8x16, 8x32
478 INTRA_PRED_TEST(C_1
, TX_8X8
, aom_dc_predictor_8x8_c
,
479 aom_dc_left_predictor_8x8_c
, aom_dc_top_predictor_8x8_c
,
480 aom_dc_128_predictor_8x8_c
, aom_v_predictor_8x8_c
,
481 aom_h_predictor_8x8_c
, aom_paeth_predictor_8x8_c
,
482 aom_smooth_predictor_8x8_c
, aom_smooth_v_predictor_8x8_c
,
483 aom_smooth_h_predictor_8x8_c
)
485 INTRA_PRED_TEST(C_2
, TX_8X4
, aom_dc_predictor_8x4_c
,
486 aom_dc_left_predictor_8x4_c
, aom_dc_top_predictor_8x4_c
,
487 aom_dc_128_predictor_8x4_c
, aom_v_predictor_8x4_c
,
488 aom_h_predictor_8x4_c
, aom_paeth_predictor_8x4_c
,
489 aom_smooth_predictor_8x4_c
, aom_smooth_v_predictor_8x4_c
,
490 aom_smooth_h_predictor_8x4_c
)
492 INTRA_PRED_TEST(C_3
, TX_8X16
, aom_dc_predictor_8x16_c
,
493 aom_dc_left_predictor_8x16_c
, aom_dc_top_predictor_8x16_c
,
494 aom_dc_128_predictor_8x16_c
, aom_v_predictor_8x16_c
,
495 aom_h_predictor_8x16_c
, aom_paeth_predictor_8x16_c
,
496 aom_smooth_predictor_8x16_c
, aom_smooth_v_predictor_8x16_c
,
497 aom_smooth_h_predictor_8x16_c
)
499 INTRA_PRED_TEST(C_4
, TX_8X32
, aom_dc_predictor_8x32_c
,
500 aom_dc_left_predictor_8x32_c
, aom_dc_top_predictor_8x32_c
,
501 aom_dc_128_predictor_8x32_c
, aom_v_predictor_8x32_c
,
502 aom_h_predictor_8x32_c
, aom_paeth_predictor_8x32_c
,
503 aom_smooth_predictor_8x32_c
, aom_smooth_v_predictor_8x32_c
,
504 aom_smooth_h_predictor_8x32_c
)
507 INTRA_PRED_TEST(SSE2_1
, TX_8X8
, aom_dc_predictor_8x8_sse2
,
508 aom_dc_left_predictor_8x8_sse2
, aom_dc_top_predictor_8x8_sse2
,
509 aom_dc_128_predictor_8x8_sse2
, aom_v_predictor_8x8_sse2
,
510 aom_h_predictor_8x8_sse2
, NULL
, NULL
, NULL
, NULL
)
511 INTRA_PRED_TEST(SSE2_2
, TX_8X4
, aom_dc_predictor_8x4_sse2
,
512 aom_dc_left_predictor_8x4_sse2
, aom_dc_top_predictor_8x4_sse2
,
513 aom_dc_128_predictor_8x4_sse2
, aom_v_predictor_8x4_sse2
,
514 aom_h_predictor_8x4_sse2
, NULL
, NULL
, NULL
, NULL
)
515 INTRA_PRED_TEST(SSE2_3
, TX_8X16
, aom_dc_predictor_8x16_sse2
,
516 aom_dc_left_predictor_8x16_sse2
, aom_dc_top_predictor_8x16_sse2
,
517 aom_dc_128_predictor_8x16_sse2
, aom_v_predictor_8x16_sse2
,
518 aom_h_predictor_8x16_sse2
, NULL
, NULL
, NULL
, NULL
)
522 INTRA_PRED_TEST(SSSE3_1
, TX_8X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
523 aom_paeth_predictor_8x8_ssse3
, aom_smooth_predictor_8x8_ssse3
,
525 INTRA_PRED_TEST(SSSE3_2
, TX_8X4
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
526 aom_paeth_predictor_8x4_ssse3
, aom_smooth_predictor_8x4_ssse3
,
528 INTRA_PRED_TEST(SSSE3_3
, TX_8X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
529 aom_paeth_predictor_8x16_ssse3
, aom_smooth_predictor_8x16_ssse3
,
534 INTRA_PRED_TEST(DSPR2
, TX_8X8
, aom_dc_predictor_8x8_dspr2
, NULL
, NULL
, NULL
,
535 NULL
, aom_h_predictor_8x8_dspr2
, NULL
, NULL
, NULL
, NULL
)
539 INTRA_PRED_TEST(NEON
, TX_8X8
, aom_dc_predictor_8x8_neon
,
540 aom_dc_left_predictor_8x8_neon
, aom_dc_top_predictor_8x8_neon
,
541 aom_dc_128_predictor_8x8_neon
, aom_v_predictor_8x8_neon
,
542 aom_h_predictor_8x8_neon
, NULL
, NULL
, NULL
, NULL
)
546 INTRA_PRED_TEST(MSA
, TX_8X8
, aom_dc_predictor_8x8_msa
,
547 aom_dc_left_predictor_8x8_msa
, aom_dc_top_predictor_8x8_msa
,
548 aom_dc_128_predictor_8x8_msa
, aom_v_predictor_8x8_msa
,
549 aom_h_predictor_8x8_msa
, NULL
, NULL
, NULL
, NULL
)
552 // -----------------------------------------------------------------------------
553 // 16x16, 16x8, 16x32, 16x4, 16x64
555 INTRA_PRED_TEST(C_1
, TX_16X16
, aom_dc_predictor_16x16_c
,
556 aom_dc_left_predictor_16x16_c
, aom_dc_top_predictor_16x16_c
,
557 aom_dc_128_predictor_16x16_c
, aom_v_predictor_16x16_c
,
558 aom_h_predictor_16x16_c
, aom_paeth_predictor_16x16_c
,
559 aom_smooth_predictor_16x16_c
, aom_smooth_v_predictor_16x16_c
,
560 aom_smooth_h_predictor_16x16_c
)
562 INTRA_PRED_TEST(C_2
, TX_16X8
, aom_dc_predictor_16x8_c
,
563 aom_dc_left_predictor_16x8_c
, aom_dc_top_predictor_16x8_c
,
564 aom_dc_128_predictor_16x8_c
, aom_v_predictor_16x8_c
,
565 aom_h_predictor_16x8_c
, aom_paeth_predictor_16x8_c
,
566 aom_smooth_predictor_16x8_c
, aom_smooth_v_predictor_16x8_c
,
567 aom_smooth_h_predictor_16x8_c
)
569 INTRA_PRED_TEST(C_3
, TX_16X32
, aom_dc_predictor_16x32_c
,
570 aom_dc_left_predictor_16x32_c
, aom_dc_top_predictor_16x32_c
,
571 aom_dc_128_predictor_16x32_c
, aom_v_predictor_16x32_c
,
572 aom_h_predictor_16x32_c
, aom_paeth_predictor_16x32_c
,
573 aom_smooth_predictor_16x32_c
, aom_smooth_v_predictor_16x32_c
,
574 aom_smooth_h_predictor_16x32_c
)
576 INTRA_PRED_TEST(C_4
, TX_16X4
, aom_dc_predictor_16x4_c
,
577 aom_dc_left_predictor_16x4_c
, aom_dc_top_predictor_16x4_c
,
578 aom_dc_128_predictor_16x4_c
, aom_v_predictor_16x4_c
,
579 aom_h_predictor_16x4_c
, aom_paeth_predictor_16x4_c
,
580 aom_smooth_predictor_16x4_c
, aom_smooth_v_predictor_16x4_c
,
581 aom_smooth_h_predictor_16x4_c
)
583 INTRA_PRED_TEST(C_5
, TX_16X64
, aom_dc_predictor_16x64_c
,
584 aom_dc_left_predictor_16x64_c
, aom_dc_top_predictor_16x64_c
,
585 aom_dc_128_predictor_16x64_c
, aom_v_predictor_16x64_c
,
586 aom_h_predictor_16x64_c
, aom_paeth_predictor_16x64_c
,
587 aom_smooth_predictor_16x64_c
, aom_smooth_v_predictor_16x64_c
,
588 aom_smooth_h_predictor_16x64_c
)
591 INTRA_PRED_TEST(SSE2_1
, TX_16X16
, aom_dc_predictor_16x16_sse2
,
592 aom_dc_left_predictor_16x16_sse2
,
593 aom_dc_top_predictor_16x16_sse2
,
594 aom_dc_128_predictor_16x16_sse2
, aom_v_predictor_16x16_sse2
,
595 aom_h_predictor_16x16_sse2
, NULL
, NULL
, NULL
, NULL
)
596 INTRA_PRED_TEST(SSE2_2
, TX_16X8
, aom_dc_predictor_16x8_sse2
,
597 aom_dc_left_predictor_16x8_sse2
, aom_dc_top_predictor_16x8_sse2
,
598 aom_dc_128_predictor_16x8_sse2
, aom_v_predictor_16x8_sse2
,
599 aom_h_predictor_16x8_sse2
, NULL
, NULL
, NULL
, NULL
)
600 INTRA_PRED_TEST(SSE2_3
, TX_16X32
, aom_dc_predictor_16x32_sse2
,
601 aom_dc_left_predictor_16x32_sse2
,
602 aom_dc_top_predictor_16x32_sse2
,
603 aom_dc_128_predictor_16x32_sse2
, aom_v_predictor_16x32_sse2
,
604 aom_h_predictor_16x32_sse2
, NULL
, NULL
, NULL
, NULL
)
605 INTRA_PRED_TEST(SSE2_4
, TX_16X64
, aom_dc_predictor_16x64_sse2
,
606 aom_dc_left_predictor_16x64_sse2
,
607 aom_dc_top_predictor_16x64_sse2
,
608 aom_dc_128_predictor_16x64_sse2
, aom_v_predictor_16x64_sse2
,
609 aom_h_predictor_16x64_sse2
, NULL
, NULL
, NULL
, NULL
)
613 INTRA_PRED_TEST(SSSE3_1
, TX_16X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
614 aom_paeth_predictor_16x16_ssse3
,
615 aom_smooth_predictor_16x16_ssse3
, NULL
, NULL
)
616 INTRA_PRED_TEST(SSSE3_2
, TX_16X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
617 aom_paeth_predictor_16x8_ssse3
, aom_smooth_predictor_16x8_ssse3
,
619 INTRA_PRED_TEST(SSSE3_3
, TX_16X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
620 aom_paeth_predictor_16x32_ssse3
,
621 aom_smooth_predictor_16x32_ssse3
, NULL
, NULL
)
622 INTRA_PRED_TEST(SSSE3_4
, TX_16X64
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
623 aom_paeth_predictor_16x64_ssse3
,
624 aom_smooth_predictor_16x64_ssse3
, NULL
, NULL
)
628 INTRA_PRED_TEST(AVX2_1
, TX_16X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
629 aom_paeth_predictor_16x16_avx2
, NULL
, NULL
, NULL
)
630 INTRA_PRED_TEST(AVX2_2
, TX_16X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
631 aom_paeth_predictor_16x8_avx2
, NULL
, NULL
, NULL
)
632 INTRA_PRED_TEST(AVX2_3
, TX_16X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
633 aom_paeth_predictor_16x32_avx2
, NULL
, NULL
, NULL
)
634 INTRA_PRED_TEST(AVX2_4
, TX_16X64
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
635 aom_paeth_predictor_16x64_avx2
, NULL
, NULL
, NULL
)
639 INTRA_PRED_TEST(DSPR2
, TX_16X16
, aom_dc_predictor_16x16_dspr2
, NULL
, NULL
, NULL
,
640 NULL
, aom_h_predictor_16x16_dspr2
, NULL
, NULL
, NULL
, NULL
)
644 INTRA_PRED_TEST(NEON
, TX_16X16
, aom_dc_predictor_16x16_neon
,
645 aom_dc_left_predictor_16x16_neon
,
646 aom_dc_top_predictor_16x16_neon
,
647 aom_dc_128_predictor_16x16_neon
, aom_v_predictor_16x16_neon
,
648 aom_h_predictor_16x16_neon
, NULL
, NULL
, NULL
, NULL
)
652 INTRA_PRED_TEST(MSA
, TX_16X16
, aom_dc_predictor_16x16_msa
,
653 aom_dc_left_predictor_16x16_msa
, aom_dc_top_predictor_16x16_msa
,
654 aom_dc_128_predictor_16x16_msa
, aom_v_predictor_16x16_msa
,
655 aom_h_predictor_16x16_msa
, NULL
, NULL
, NULL
, NULL
)
658 // -----------------------------------------------------------------------------
659 // 32x32, 32x16, 32x64, 32x8
661 INTRA_PRED_TEST(C_1
, TX_32X32
, aom_dc_predictor_32x32_c
,
662 aom_dc_left_predictor_32x32_c
, aom_dc_top_predictor_32x32_c
,
663 aom_dc_128_predictor_32x32_c
, aom_v_predictor_32x32_c
,
664 aom_h_predictor_32x32_c
, aom_paeth_predictor_32x32_c
,
665 aom_smooth_predictor_32x32_c
, aom_smooth_v_predictor_32x32_c
,
666 aom_smooth_h_predictor_32x32_c
)
668 INTRA_PRED_TEST(C_2
, TX_32X16
, aom_dc_predictor_32x16_c
,
669 aom_dc_left_predictor_32x16_c
, aom_dc_top_predictor_32x16_c
,
670 aom_dc_128_predictor_32x16_c
, aom_v_predictor_32x16_c
,
671 aom_h_predictor_32x16_c
, aom_paeth_predictor_32x16_c
,
672 aom_smooth_predictor_32x16_c
, aom_smooth_v_predictor_32x16_c
,
673 aom_smooth_h_predictor_32x16_c
)
675 INTRA_PRED_TEST(C_3
, TX_32X64
, aom_dc_predictor_32x64_c
,
676 aom_dc_left_predictor_32x64_c
, aom_dc_top_predictor_32x64_c
,
677 aom_dc_128_predictor_32x64_c
, aom_v_predictor_32x64_c
,
678 aom_h_predictor_32x64_c
, aom_paeth_predictor_32x64_c
,
679 aom_smooth_predictor_32x64_c
, aom_smooth_v_predictor_32x64_c
,
680 aom_smooth_h_predictor_32x64_c
)
682 INTRA_PRED_TEST(C_4
, TX_32X8
, aom_dc_predictor_32x8_c
,
683 aom_dc_left_predictor_32x8_c
, aom_dc_top_predictor_32x8_c
,
684 aom_dc_128_predictor_32x8_c
, aom_v_predictor_32x8_c
,
685 aom_h_predictor_32x8_c
, aom_paeth_predictor_32x8_c
,
686 aom_smooth_predictor_32x8_c
, aom_smooth_v_predictor_32x8_c
,
687 aom_smooth_h_predictor_32x8_c
)
690 INTRA_PRED_TEST(SSE2_1
, TX_32X32
, aom_dc_predictor_32x32_sse2
,
691 aom_dc_left_predictor_32x32_sse2
,
692 aom_dc_top_predictor_32x32_sse2
,
693 aom_dc_128_predictor_32x32_sse2
, aom_v_predictor_32x32_sse2
,
694 aom_h_predictor_32x32_sse2
, NULL
, NULL
, NULL
, NULL
)
695 INTRA_PRED_TEST(SSE2_2
, TX_32X16
, aom_dc_predictor_32x16_sse2
,
696 aom_dc_left_predictor_32x16_sse2
,
697 aom_dc_top_predictor_32x16_sse2
,
698 aom_dc_128_predictor_32x16_sse2
, aom_v_predictor_32x16_sse2
,
699 aom_h_predictor_32x16_sse2
, NULL
, NULL
, NULL
, NULL
)
700 INTRA_PRED_TEST(SSE2_3
, TX_32X64
, aom_dc_predictor_32x64_sse2
,
701 aom_dc_left_predictor_32x64_sse2
,
702 aom_dc_top_predictor_32x64_sse2
,
703 aom_dc_128_predictor_32x64_sse2
, aom_v_predictor_32x64_sse2
,
704 aom_h_predictor_32x64_sse2
, NULL
, NULL
, NULL
, NULL
)
708 INTRA_PRED_TEST(SSSE3_1
, TX_32X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
709 aom_paeth_predictor_32x32_ssse3
,
710 aom_smooth_predictor_32x32_ssse3
, NULL
, NULL
)
711 INTRA_PRED_TEST(SSSE3_2
, TX_32X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
712 aom_paeth_predictor_32x16_ssse3
,
713 aom_smooth_predictor_32x16_ssse3
, NULL
, NULL
)
714 INTRA_PRED_TEST(SSSE3_3
, TX_32X64
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
715 aom_paeth_predictor_32x64_ssse3
,
716 aom_smooth_predictor_32x64_ssse3
, NULL
, NULL
)
720 INTRA_PRED_TEST(AVX2_1
, TX_32X32
, aom_dc_predictor_32x32_avx2
,
721 aom_dc_left_predictor_32x32_avx2
,
722 aom_dc_top_predictor_32x32_avx2
,
723 aom_dc_128_predictor_32x32_avx2
, aom_v_predictor_32x32_avx2
,
724 aom_h_predictor_32x32_avx2
, aom_paeth_predictor_32x32_avx2
,
726 INTRA_PRED_TEST(AVX2_2
, TX_32X16
, aom_dc_predictor_32x16_avx2
,
727 aom_dc_left_predictor_32x16_avx2
,
728 aom_dc_top_predictor_32x16_avx2
,
729 aom_dc_128_predictor_32x16_avx2
, aom_v_predictor_32x16_avx2
,
730 NULL
, aom_paeth_predictor_32x16_avx2
, NULL
, NULL
, NULL
)
731 INTRA_PRED_TEST(AVX2_3
, TX_32X64
, aom_dc_predictor_32x64_avx2
,
732 aom_dc_left_predictor_32x64_avx2
,
733 aom_dc_top_predictor_32x64_avx2
,
734 aom_dc_128_predictor_32x64_avx2
, aom_v_predictor_32x64_avx2
,
735 NULL
, aom_paeth_predictor_32x64_avx2
, NULL
, NULL
, NULL
)
739 INTRA_PRED_TEST(NEON
, TX_32X32
, aom_dc_predictor_32x32_neon
,
740 aom_dc_left_predictor_32x32_neon
,
741 aom_dc_top_predictor_32x32_neon
,
742 aom_dc_128_predictor_32x32_neon
, aom_v_predictor_32x32_neon
,
743 aom_h_predictor_32x32_neon
, NULL
, NULL
, NULL
, NULL
)
747 INTRA_PRED_TEST(MSA
, TX_32X32
, aom_dc_predictor_32x32_msa
,
748 aom_dc_left_predictor_32x32_msa
, aom_dc_top_predictor_32x32_msa
,
749 aom_dc_128_predictor_32x32_msa
, aom_v_predictor_32x32_msa
,
750 aom_h_predictor_32x32_msa
, NULL
, NULL
, NULL
, NULL
)
753 // -----------------------------------------------------------------------------
754 // 64x64, 64x32, 64x16
756 INTRA_PRED_TEST(C_1
, TX_64X64
, aom_dc_predictor_64x64_c
,
757 aom_dc_left_predictor_64x64_c
, aom_dc_top_predictor_64x64_c
,
758 aom_dc_128_predictor_64x64_c
, aom_v_predictor_64x64_c
,
759 aom_h_predictor_64x64_c
, aom_paeth_predictor_64x64_c
,
760 aom_smooth_predictor_64x64_c
, aom_smooth_v_predictor_64x64_c
,
761 aom_smooth_h_predictor_64x64_c
)
763 INTRA_PRED_TEST(C_2
, TX_64X32
, aom_dc_predictor_64x32_c
,
764 aom_dc_left_predictor_64x32_c
, aom_dc_top_predictor_64x32_c
,
765 aom_dc_128_predictor_64x32_c
, aom_v_predictor_64x32_c
,
766 aom_h_predictor_64x32_c
, aom_paeth_predictor_64x32_c
,
767 aom_smooth_predictor_64x32_c
, aom_smooth_v_predictor_64x32_c
,
768 aom_smooth_h_predictor_64x32_c
)
770 INTRA_PRED_TEST(C_3
, TX_64X16
, aom_dc_predictor_64x16_c
,
771 aom_dc_left_predictor_64x16_c
, aom_dc_top_predictor_64x16_c
,
772 aom_dc_128_predictor_64x16_c
, aom_v_predictor_64x16_c
,
773 aom_h_predictor_64x16_c
, aom_paeth_predictor_64x16_c
,
774 aom_smooth_predictor_64x16_c
, aom_smooth_v_predictor_64x16_c
,
775 aom_smooth_h_predictor_64x16_c
)
778 INTRA_PRED_TEST(SSE2_4
, TX_64X64
, aom_dc_predictor_64x64_sse2
,
779 aom_dc_left_predictor_64x64_sse2
,
780 aom_dc_top_predictor_64x64_sse2
,
781 aom_dc_128_predictor_64x64_sse2
, aom_v_predictor_64x64_sse2
,
782 aom_h_predictor_64x64_sse2
, NULL
, NULL
, NULL
, NULL
)
783 INTRA_PRED_TEST(SSE2_5
, TX_64X32
, aom_dc_predictor_64x32_sse2
,
784 aom_dc_left_predictor_64x32_sse2
,
785 aom_dc_top_predictor_64x32_sse2
,
786 aom_dc_128_predictor_64x32_sse2
, aom_v_predictor_64x32_sse2
,
787 aom_h_predictor_64x32_sse2
, NULL
, NULL
, NULL
, NULL
)
788 INTRA_PRED_TEST(SSE2_6
, TX_64X16
, aom_dc_predictor_64x16_sse2
,
789 aom_dc_left_predictor_64x16_sse2
,
790 aom_dc_top_predictor_64x16_sse2
,
791 aom_dc_128_predictor_64x16_sse2
, aom_v_predictor_64x16_sse2
,
792 aom_h_predictor_64x16_sse2
, NULL
, NULL
, NULL
, NULL
)
796 INTRA_PRED_TEST(SSSE3_4
, TX_64X64
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
797 aom_paeth_predictor_64x64_ssse3
,
798 aom_smooth_predictor_64x64_ssse3
, NULL
, NULL
)
799 INTRA_PRED_TEST(SSSE3_5
, TX_64X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
800 aom_paeth_predictor_64x32_ssse3
,
801 aom_smooth_predictor_64x32_ssse3
, NULL
, NULL
)
802 INTRA_PRED_TEST(SSSE3_6
, TX_64X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
803 aom_paeth_predictor_64x16_ssse3
,
804 aom_smooth_predictor_64x16_ssse3
, NULL
, NULL
)
808 INTRA_PRED_TEST(AVX2_4
, TX_64X64
, aom_dc_predictor_64x64_avx2
,
809 aom_dc_left_predictor_64x64_avx2
,
810 aom_dc_top_predictor_64x64_avx2
,
811 aom_dc_128_predictor_64x64_avx2
, aom_v_predictor_64x64_avx2
,
812 NULL
, aom_paeth_predictor_64x64_avx2
, NULL
, NULL
, NULL
)
813 INTRA_PRED_TEST(AVX2_5
, TX_64X32
, aom_dc_predictor_64x32_avx2
,
814 aom_dc_left_predictor_64x32_avx2
,
815 aom_dc_top_predictor_64x32_avx2
,
816 aom_dc_128_predictor_64x32_avx2
, aom_v_predictor_64x32_avx2
,
817 NULL
, aom_paeth_predictor_64x32_avx2
, NULL
, NULL
, NULL
)
818 INTRA_PRED_TEST(AVX2_6
, TX_64X16
, aom_dc_predictor_64x16_avx2
,
819 aom_dc_left_predictor_64x16_avx2
,
820 aom_dc_top_predictor_64x16_avx2
,
821 aom_dc_128_predictor_64x16_avx2
, aom_v_predictor_64x16_avx2
,
822 NULL
, aom_paeth_predictor_64x16_avx2
, NULL
, NULL
, NULL
)
824 // -----------------------------------------------------------------------------
828 typedef void (*AvxHighbdPredFunc
)(uint16_t *dst
, ptrdiff_t y_stride
,
829 const uint16_t *above
, const uint16_t *left
,
832 typedef IntraPredTestMem
<uint16_t> Av1HighbdIntraPredTestMem
;
834 void TestHighbdIntraPred(TX_SIZE tx_size
, AvxHighbdPredFunc
const *pred_funcs
,
835 const char *const signatures
[]) {
836 const int block_width
= tx_size_wide
[tx_size
];
837 const int block_height
= tx_size_high
[tx_size
];
838 const int num_pixels_per_test
=
839 block_width
* block_height
* kNumAv1IntraFuncs
;
840 const int kNumTests
= static_cast<int>(2.e10
/ num_pixels_per_test
);
841 Av1HighbdIntraPredTestMem intra_pred_test_mem
;
843 intra_pred_test_mem
.Init(block_width
, block_height
, bd
);
845 for (int k
= 0; k
< kNumAv1IntraFuncs
; ++k
) {
846 if (pred_funcs
[k
] == NULL
) continue;
847 memcpy(intra_pred_test_mem
.src
, intra_pred_test_mem
.ref_src
,
848 sizeof(intra_pred_test_mem
.src
));
849 aom_usec_timer timer
;
850 aom_usec_timer_start(&timer
);
851 for (int num_tests
= 0; num_tests
< kNumTests
; ++num_tests
) {
852 pred_funcs
[k
](intra_pred_test_mem
.src
, intra_pred_test_mem
.stride
,
853 intra_pred_test_mem
.above
, intra_pred_test_mem
.left
, bd
);
855 libaom_test::ClearSystemState();
856 aom_usec_timer_mark(&timer
);
857 const int elapsed_time
=
858 static_cast<int>(aom_usec_timer_elapsed(&timer
) / 1000);
860 tx_size
, true, signatures
, intra_pred_test_mem
.src
,
861 intra_pred_test_mem
.num_pixels
* sizeof(*intra_pred_test_mem
.src
),
866 static const char *const kHighbdSignatures
[TX_SIZES_ALL
][kNumAv1IntraFuncs
] = {
869 "11f74af6c5737df472f3275cbde062fa",
870 "51bea056b6447c93f6eb8f6b7e8f6f71",
871 "27e97f946766331795886f4de04c5594",
872 "53ab15974b049111fb596c5168ec7e3f",
873 "f0b640bb176fbe4584cf3d32a9b0320a",
874 "729783ca909e03afd4b47111c80d967b",
875 "6e30009c45474a22032678b1bd579c8f",
876 "e57cba016d808aa8a35619df2a65f049",
877 "55a6c37f39afcbbf5abca4a985b96459",
878 "a623d45b37dafec1f8a75c4c5218913d",
882 "03da8829fe94663047fd108c5fcaa71d",
883 "ecdb37b8120a2d3a4c706b016bd1bfd7",
884 "1d4543ed8d2b9368cb96898095fe8a75",
885 "f791c9a67b913cbd82d9da8ecede30e2",
886 "065c70646f4dbaff913282f55a45a441",
887 "51f87123616662ef7c35691497dfd0ba",
888 "85c01ba03df68f9ece7bd3fa0f8980e6",
889 "ad19b7dac092f56df6d054e1f67f21e7",
890 "0edc415b5dd7299f7a34fb9f71d31d78",
891 "2bc8ec19e9f4b77a64b8a0a1f6aec7e7",
895 "e33cb3f56a878e2fddb1b2fc51cdd275",
896 "c7bff6f04b6052c8ab335d726dbbd52d",
897 "d0b0b47b654a9bcc5c6008110a44589b",
898 "78f5da7b10b2b9ab39f114a33b6254e9",
899 "c78e31d23831abb40d6271a318fdd6f3",
900 "90d1347f4ec9198a0320daecb6ff90b8",
901 "e63ded54ab3d0e8728b6f24d4f01e53f",
902 "35ce21fbe0ea114c089fc3489a78155d",
903 "f277f6ef8e4d717f1f0dfe2706ac197d",
904 "e8014d3f41256976c02e0f1e622ba2b9",
908 "a3e8056ba7e36628cce4917cd956fedd",
909 "cc7d3024fe8748b512407edee045377e",
910 "2aab0a0f330a1d3e19b8ecb8f06387a3",
911 "a547bc3fb7b06910bf3973122a426661",
912 "26f712514da95042f93d6e8dc8e431dc",
913 "bb08c6e16177081daa3d936538dbc2e3",
914 "84bf83f94a51b33654ca940c6f8bc057",
915 "7168b03fc31bf29596a344d6a35d007c",
916 "b073a70d3672f1282236994f5d12e94b",
917 "c51607aebad5dcb3c1e3b58ef9e5b84e",
921 "a6baa0d4bfb2269a94c7a38f86a4bccf",
922 "3f1ef5f473a49eba743f17a3324adf9d",
923 "12ac11889ae5f55b7781454efd706a6a",
924 "d9a906c0e692b22e1b4414e71a704b7e",
925 "47d4cadd56f70c11ff8f3e5d8df81161",
926 "de997744cf24c16c5ac2a36b02b351cc",
927 "23781211ae178ddeb6c4bb97a6bd7d83",
928 "a79d2e28340ca34b9e37daabbf030f63",
929 "0372bd3ddfc258750a6ac106b70587f4",
930 "228ef625d9460cbf6fa253a16a730976",
934 "22d519b796d59644043466320e4ccd14",
935 "09513a738c49b3f9542d27f34abbe1d5",
936 "807ae5e8813443ff01e71be6efacfb69",
937 "cbfa18d0293430b6e9708b0be1fd2394",
938 "346c354c34ec7fa780b576db355dab88",
939 "f97dae85c35359632380b09ca98d611e",
940 "698ae351d8896d89ed9e4e67b6e53eda",
941 "dcc197034a9c45a3d8238bf085835f4e",
942 "7a35e2c42ffdc2efc2d6d1d75a100fc7",
943 "41ab6cebd4516c87a91b2a593e2c2506",
947 "d58cd4c4bf3b7bbaa5db5e1a5622ec78",
948 "6e572c35aa782d00cafcb99e9ea047ea",
949 "e8c22a3702b416dc9ab974505afbed09",
950 "aaa4e4762a795aad7ad74de0c662c4e4",
951 "a19f9101967383c3dcbd516dc317a291",
952 "9ab8cb91f1a595b9ebe3fe8de58031aa",
953 "2cf9021d5f1169268699807ee118b65f",
954 "ee9605fcbd6fb871f1c5cd81a6989327",
955 "b4871af8316089e3e23522175df7e93f",
956 "d33301e1c2cb173be46792a22d19881a",
960 "4562de1d0336610880fdd5685498a9ec",
961 "16310fa7076394f16fc85c4b149d89c9",
962 "0e94af88e1dc573b6f0f499cddd1f530",
963 "dfd245ee20d091c67809160340365aa9",
964 "d3562504327f70c096c5be23fd8a3747",
965 "601b853558502acbb5135eadd2da117a",
966 "3c624345a723a1b2b1bea05a6a08bc99",
967 "2a9c781de609e0184cc7ab442050f4e5",
968 "0ddc5035c22252747126b61fc238c74d",
969 "e43f5d83bab759af69c7b6773fc8f9b2",
973 "a57d6b5a9bfd30c29591d8717ace9c51",
974 "f5907ba97ee6c53e339e953fc8d845ee",
975 "ea3aa727913ce45af06f89dd1808db5f",
976 "408af4f23e48d14b48ee35ae094fcd18",
977 "85c41cbcb5d744f7961e8950026fbffe",
978 "8a4e588a837638887ba671f8d4910485",
979 "b792d8826b67a21757ea7097cff9e05b",
980 "f94ce7101bb87fd3bb9312112527dbf4",
981 "688c6660a6dc6fa61fa1aa38e708c209",
982 "0cdf641b4f81d69509c92ae0b93ef5ff",
986 "aee4b3b0e3cc02d48e2c40d77f807927",
987 "8baef2b2e789f79c8df9d90ad10f34a4",
988 "038c38ee3c4f090bb8d736eab136aafc",
989 "1a3de2aaeaffd68a9fd6c7f6557b83f3",
990 "385c6e0ea29421dd81011a2934641e26",
991 "6cf96c285d1a2d4787f955dad715b08c",
992 "2d7f75dcd73b9528c8396279ff09ff3a",
993 "5a63cd1841e4ed470e4ca5ef845f2281",
994 "610d899ca945fbead33287d4335a8b32",
995 "6bafaad81fce37be46730187e78d8b11",
999 "290b23c9f5a1de7905bfa71a942da29b",
1000 "701e7b82593c66da5052fc4b6afd79ce",
1001 "4da828c5455cd246735a663fbb204989",
1002 "e3fbeaf234efece8dbd752b77226200c",
1003 "4d1d8c969f05155a7e7e84cf7aad021b",
1004 "c22e4877c2c946d5bdc0d542e29e70cf",
1005 "8ac1ce815e7780500f842b0beb0bb980",
1006 "9fee2e2502b507f25bfad30a55b0b610",
1007 "4ced9c212ec6f9956e27f68a91b59fef",
1008 "4a7a0b93f138bb0863e4e465b01ec0b1",
1012 "ad9cfc395a5c5644a21d958c7274ac14",
1013 "f29d6d03c143ddf96fef04c19f2c8333",
1014 "a8bdc852ef704dd4975c61893e8fbc3f",
1015 "7d0bd7dea26226741dbca9a97f27fa74",
1016 "45c27c5cca9a91b6ae8379feb0881c9f",
1017 "8a0b78df1e001b85c874d686eac4aa1b",
1018 "ce9fa75fac54a3f6c0cc3f2083b938f1",
1019 "c0dca10d88762c954af18dc9e3791a39",
1020 "61df229eddfccab913b8fda4bb02f9ac",
1021 "4f4df6bc8d50a5600b573f0e44d70e66",
1025 "db9d82921fd88b24fdff6f849f2f9c87",
1026 "5ecc7fdc52d2f575ad4f2d0e9e6b1e11",
1027 "b4581311a0a73d95dfac7f8f44591032",
1028 "68bd283cfd1a125f6b2ee47cee874d36",
1029 "804179f05c032908a5e36077bb87c994",
1030 "fc5fd041a8ee779015394d0c066ee43c",
1031 "68f5579ccadfe9a1baafb158334a3db2",
1032 "fe237e45e215ab06d79046da9ad71e84",
1033 "9a8a938a6824551bf7d21b8fd1d70ea1",
1034 "eb7332f2017cd96882c76e7136aeaf53",
1038 "7bafa307d507747b8132e7735b7f1c73",
1039 "e58bc2d8213a97d1fea9cfb73d7a9633",
1040 "435f8a8e8bbf14dbf2fe16b2be9e97aa",
1041 "1d0e767b68d84acbfb50b7a04e633836",
1042 "5f713bd7b324fe73bb7063e35ee14e5e",
1043 "0dac4e1fa3d59814202715468c01ed56",
1044 "47709d1db4a330c7a8900f450e6fddd1",
1045 "258e0b930bb27db28f05da9cf7d1ee7c",
1046 "36cf030fbae767912593efea045bfff5",
1047 "248d7aceabb7499febae663fae41a920",
1051 "04dde98e632670e393704742c89f9067",
1052 "8c72543f1664651ae1fa08e2ac0adb9b",
1053 "2354a2cdc2773aa2df8ab4010db1be39",
1054 "6300ad3221c26da39b10e0e6d87ee3be",
1055 "8ea30b661c6ba60b28d3167f19e449b8",
1056 "fb6c1e4ff101a371cede63c2955cdb7e",
1057 "a517c06433d6d7927b16a72184a23e92",
1058 "393828be5d62ab6c48668bea5e2f801a",
1059 "b1e510c542013eb9d6fb188dea2ce90a",
1060 "569a8f2fe01679ca216535ecbcdccb62",
1064 "9d541865c185ca7607852852613ac1fc",
1065 "b96be67f08c6b5fa5ebd3411299c2f7c",
1066 "75a2dcf50004b9d188849b048239767e",
1067 "429492ff415c9fd9b050d73b2ad500f8",
1068 "64b3606c1ccd036bd766bd5711392cf4",
1069 "cb59844a0f01660ac955bae3511f1100",
1070 "3e076155b7a70e8828618e3f33b51e3d",
1071 "ed2d1f597ab7c50beff690f737cf9726",
1072 "7909c6a26aaf20c59d996d3e5b5f9c29",
1073 "965798807240c98c6f7cc9b457ed0773",
1077 "36f391aa31619eec1f4d9ee95ea454cc",
1078 "b82648f14eeba2527357cb50bc3223cb",
1079 "7a7b2adf429125e8bee9d1d00a66e13f",
1080 "4198e4d6ba503b7cc2d7e96bb845f661",
1081 "96c160d2ec1be9fe0cdea9682f14d257",
1082 "19a450bcebaa75afb4fc6bd1fd6434af",
1083 "2bd2e35967d43d0ec1c6587a36f204d5",
1084 "49799a99aa4ccfbd989bee92a99422f1",
1085 "955530e99813812a74659edeac3f5475",
1086 "f0316b84e378a19cd11b19a6e40b2914",
1090 "8cba1b70a0bde29e8ef235cedc5faa7d",
1091 "96d00ddc7537bf7f196006591b733b4e",
1092 "cbf69d5d157c9f3355a4757b1d6e3414",
1093 "3ac1f642019493dec1b737d7a3a1b4e5",
1094 "35f9ee300d7fa3c97338e81a6f21dcd4",
1095 "aae335442e77c8ebc280f16ea50ba9c7",
1096 "a6140fdac2278644328be094d88731db",
1097 "2df93621b6ff100f7008432d509f4161",
1098 "c77bf5aee39e7ed4a3dd715f816f452a",
1099 "02109bd63557d90225c32a8f1338258e",
1103 "a5e2f9fb685d5f4a048e9a96affd25a4",
1104 "1348f249690d9eefe09d9ad7ead2c801",
1105 "525da4b187acd81b1ff1116b60461141",
1106 "e99d072de858094c98b01bd4a6772634",
1107 "873bfa9dc24693f19721f7c8d527f7d3",
1108 "0acfc6507bd3468e9679efc127d6e4b9",
1109 "57d03f8d079c7264854e22ac1157cfae",
1110 "6c2c4036f70c7d957a9399b5436c0774",
1111 "42b8e4a97b7f8416c72a5148c031c0b1",
1112 "a38a2c5f79993dfae8530e9e25800893",
1118 #define HIGHBD_INTRA_PRED_TEST(arch, tx_size, dc, dc_left, dc_top, dc_128, v, \
1119 h, paeth, smooth, smooth_v, smooth_h) \
1120 TEST(arch, DISABLED_##TestHighbdIntraPred_##tx_size) { \
1121 static const AvxHighbdPredFunc aom_intra_pred[] = { \
1122 dc, dc_left, dc_top, dc_128, v, h, paeth, smooth, smooth_v, smooth_h \
1124 TestHighbdIntraPred(tx_size, aom_intra_pred, kHighbdSignatures[tx_size]); \
1127 // -----------------------------------------------------------------------------
1130 HIGHBD_INTRA_PRED_TEST(
1131 C_1
, TX_4X4
, aom_highbd_dc_predictor_4x4_c
,
1132 aom_highbd_dc_left_predictor_4x4_c
, aom_highbd_dc_top_predictor_4x4_c
,
1133 aom_highbd_dc_128_predictor_4x4_c
, aom_highbd_v_predictor_4x4_c
,
1134 aom_highbd_h_predictor_4x4_c
, aom_highbd_paeth_predictor_4x4_c
,
1135 aom_highbd_smooth_predictor_4x4_c
, aom_highbd_smooth_v_predictor_4x4_c
,
1136 aom_highbd_smooth_h_predictor_4x4_c
)
1138 HIGHBD_INTRA_PRED_TEST(
1139 C_2
, TX_4X8
, aom_highbd_dc_predictor_4x8_c
,
1140 aom_highbd_dc_left_predictor_4x8_c
, aom_highbd_dc_top_predictor_4x8_c
,
1141 aom_highbd_dc_128_predictor_4x8_c
, aom_highbd_v_predictor_4x8_c
,
1142 aom_highbd_h_predictor_4x8_c
, aom_highbd_paeth_predictor_4x8_c
,
1143 aom_highbd_smooth_predictor_4x8_c
, aom_highbd_smooth_v_predictor_4x8_c
,
1144 aom_highbd_smooth_h_predictor_4x8_c
)
1146 HIGHBD_INTRA_PRED_TEST(
1147 C_3
, TX_4X16
, aom_highbd_dc_predictor_4x16_c
,
1148 aom_highbd_dc_left_predictor_4x16_c
, aom_highbd_dc_top_predictor_4x16_c
,
1149 aom_highbd_dc_128_predictor_4x16_c
, aom_highbd_v_predictor_4x16_c
,
1150 aom_highbd_h_predictor_4x16_c
, aom_highbd_paeth_predictor_4x16_c
,
1151 aom_highbd_smooth_predictor_4x16_c
, aom_highbd_smooth_v_predictor_4x16_c
,
1152 aom_highbd_smooth_h_predictor_4x16_c
)
1155 HIGHBD_INTRA_PRED_TEST(SSE2_1
, TX_4X4
, aom_highbd_dc_predictor_4x4_sse2
,
1156 aom_highbd_dc_left_predictor_4x4_sse2
,
1157 aom_highbd_dc_top_predictor_4x4_sse2
,
1158 aom_highbd_dc_128_predictor_4x4_sse2
,
1159 aom_highbd_v_predictor_4x4_sse2
,
1160 aom_highbd_h_predictor_4x4_sse2
, NULL
, NULL
, NULL
, NULL
)
1162 HIGHBD_INTRA_PRED_TEST(SSE2_2
, TX_4X8
, aom_highbd_dc_predictor_4x8_sse2
,
1163 aom_highbd_dc_left_predictor_4x8_sse2
,
1164 aom_highbd_dc_top_predictor_4x8_sse2
,
1165 aom_highbd_dc_128_predictor_4x8_sse2
,
1166 aom_highbd_v_predictor_4x8_sse2
,
1167 aom_highbd_h_predictor_4x8_sse2
, NULL
, NULL
, NULL
, NULL
)
1170 // -----------------------------------------------------------------------------
1171 // 8x8, 8x4, 8x16, 8x32
1173 HIGHBD_INTRA_PRED_TEST(
1174 C_1
, TX_8X8
, aom_highbd_dc_predictor_8x8_c
,
1175 aom_highbd_dc_left_predictor_8x8_c
, aom_highbd_dc_top_predictor_8x8_c
,
1176 aom_highbd_dc_128_predictor_8x8_c
, aom_highbd_v_predictor_8x8_c
,
1177 aom_highbd_h_predictor_8x8_c
, aom_highbd_paeth_predictor_8x8_c
,
1178 aom_highbd_smooth_predictor_8x8_c
, aom_highbd_smooth_v_predictor_8x8_c
,
1179 aom_highbd_smooth_h_predictor_8x8_c
)
1181 HIGHBD_INTRA_PRED_TEST(
1182 C_2
, TX_8X4
, aom_highbd_dc_predictor_8x4_c
,
1183 aom_highbd_dc_left_predictor_8x4_c
, aom_highbd_dc_top_predictor_8x4_c
,
1184 aom_highbd_dc_128_predictor_8x4_c
, aom_highbd_v_predictor_8x4_c
,
1185 aom_highbd_h_predictor_8x4_c
, aom_highbd_paeth_predictor_8x4_c
,
1186 aom_highbd_smooth_predictor_8x4_c
, aom_highbd_smooth_v_predictor_8x4_c
,
1187 aom_highbd_smooth_h_predictor_8x4_c
)
1189 HIGHBD_INTRA_PRED_TEST(
1190 C_3
, TX_8X16
, aom_highbd_dc_predictor_8x16_c
,
1191 aom_highbd_dc_left_predictor_8x16_c
, aom_highbd_dc_top_predictor_8x16_c
,
1192 aom_highbd_dc_128_predictor_8x16_c
, aom_highbd_v_predictor_8x16_c
,
1193 aom_highbd_h_predictor_8x16_c
, aom_highbd_paeth_predictor_8x16_c
,
1194 aom_highbd_smooth_predictor_8x16_c
, aom_highbd_smooth_v_predictor_8x16_c
,
1195 aom_highbd_smooth_h_predictor_8x16_c
)
1197 HIGHBD_INTRA_PRED_TEST(
1198 C_4
, TX_8X32
, aom_highbd_dc_predictor_8x32_c
,
1199 aom_highbd_dc_left_predictor_8x32_c
, aom_highbd_dc_top_predictor_8x32_c
,
1200 aom_highbd_dc_128_predictor_8x32_c
, aom_highbd_v_predictor_8x32_c
,
1201 aom_highbd_h_predictor_8x32_c
, aom_highbd_paeth_predictor_8x32_c
,
1202 aom_highbd_smooth_predictor_8x32_c
, aom_highbd_smooth_v_predictor_8x32_c
,
1203 aom_highbd_smooth_h_predictor_8x32_c
)
1206 HIGHBD_INTRA_PRED_TEST(SSE2_1
, TX_8X8
, aom_highbd_dc_predictor_8x8_sse2
,
1207 aom_highbd_dc_left_predictor_8x8_sse2
,
1208 aom_highbd_dc_top_predictor_8x8_sse2
,
1209 aom_highbd_dc_128_predictor_8x8_sse2
,
1210 aom_highbd_v_predictor_8x8_sse2
,
1211 aom_highbd_h_predictor_8x8_sse2
, NULL
, NULL
, NULL
, NULL
)
1212 HIGHBD_INTRA_PRED_TEST(SSE2_2
, TX_8X4
, aom_highbd_dc_predictor_8x4_sse2
,
1213 aom_highbd_dc_left_predictor_8x4_sse2
,
1214 aom_highbd_dc_top_predictor_8x4_sse2
,
1215 aom_highbd_dc_128_predictor_8x4_sse2
,
1216 aom_highbd_v_predictor_8x4_sse2
,
1217 aom_highbd_h_predictor_8x4_sse2
, NULL
, NULL
, NULL
, NULL
)
1218 HIGHBD_INTRA_PRED_TEST(SSE2_3
, TX_8X16
, aom_highbd_dc_predictor_8x16_sse2
,
1219 aom_highbd_dc_left_predictor_8x16_sse2
,
1220 aom_highbd_dc_top_predictor_8x16_sse2
,
1221 aom_highbd_dc_128_predictor_8x16_sse2
,
1222 aom_highbd_v_predictor_8x16_sse2
,
1223 aom_highbd_h_predictor_8x16_sse2
, NULL
, NULL
, NULL
, NULL
)
1227 HIGHBD_INTRA_PRED_TEST(SSSE3
, TX_8X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1231 // -----------------------------------------------------------------------------
1232 // 16x16, 16x8, 16x32, 16x4, 16x64
1234 HIGHBD_INTRA_PRED_TEST(
1235 C_1
, TX_16X16
, aom_highbd_dc_predictor_16x16_c
,
1236 aom_highbd_dc_left_predictor_16x16_c
, aom_highbd_dc_top_predictor_16x16_c
,
1237 aom_highbd_dc_128_predictor_16x16_c
, aom_highbd_v_predictor_16x16_c
,
1238 aom_highbd_h_predictor_16x16_c
, aom_highbd_paeth_predictor_16x16_c
,
1239 aom_highbd_smooth_predictor_16x16_c
, aom_highbd_smooth_v_predictor_16x16_c
,
1240 aom_highbd_smooth_h_predictor_16x16_c
)
1242 HIGHBD_INTRA_PRED_TEST(
1243 C_2
, TX_16X8
, aom_highbd_dc_predictor_16x8_c
,
1244 aom_highbd_dc_left_predictor_16x8_c
, aom_highbd_dc_top_predictor_16x8_c
,
1245 aom_highbd_dc_128_predictor_16x8_c
, aom_highbd_v_predictor_16x8_c
,
1246 aom_highbd_h_predictor_16x8_c
, aom_highbd_paeth_predictor_16x8_c
,
1247 aom_highbd_smooth_predictor_16x8_c
, aom_highbd_smooth_v_predictor_16x8_c
,
1248 aom_highbd_smooth_h_predictor_16x8_c
)
1250 HIGHBD_INTRA_PRED_TEST(
1251 C_3
, TX_16X32
, aom_highbd_dc_predictor_16x32_c
,
1252 aom_highbd_dc_left_predictor_16x32_c
, aom_highbd_dc_top_predictor_16x32_c
,
1253 aom_highbd_dc_128_predictor_16x32_c
, aom_highbd_v_predictor_16x32_c
,
1254 aom_highbd_h_predictor_16x32_c
, aom_highbd_paeth_predictor_16x32_c
,
1255 aom_highbd_smooth_predictor_16x32_c
, aom_highbd_smooth_v_predictor_16x32_c
,
1256 aom_highbd_smooth_h_predictor_16x32_c
)
1258 HIGHBD_INTRA_PRED_TEST(
1259 C_4
, TX_16X4
, aom_highbd_dc_predictor_16x4_c
,
1260 aom_highbd_dc_left_predictor_16x4_c
, aom_highbd_dc_top_predictor_16x4_c
,
1261 aom_highbd_dc_128_predictor_16x4_c
, aom_highbd_v_predictor_16x4_c
,
1262 aom_highbd_h_predictor_16x4_c
, aom_highbd_paeth_predictor_16x4_c
,
1263 aom_highbd_smooth_predictor_16x4_c
, aom_highbd_smooth_v_predictor_16x4_c
,
1264 aom_highbd_smooth_h_predictor_16x4_c
)
1266 HIGHBD_INTRA_PRED_TEST(
1267 C_5
, TX_16X64
, aom_highbd_dc_predictor_16x64_c
,
1268 aom_highbd_dc_left_predictor_16x64_c
, aom_highbd_dc_top_predictor_16x64_c
,
1269 aom_highbd_dc_128_predictor_16x64_c
, aom_highbd_v_predictor_16x64_c
,
1270 aom_highbd_h_predictor_16x64_c
, aom_highbd_paeth_predictor_16x64_c
,
1271 aom_highbd_smooth_predictor_16x64_c
, aom_highbd_smooth_v_predictor_16x64_c
,
1272 aom_highbd_smooth_h_predictor_16x64_c
)
1275 HIGHBD_INTRA_PRED_TEST(SSE2_1
, TX_16X16
, aom_highbd_dc_predictor_16x16_sse2
,
1276 aom_highbd_dc_left_predictor_16x16_sse2
,
1277 aom_highbd_dc_top_predictor_16x16_sse2
,
1278 aom_highbd_dc_128_predictor_16x16_sse2
,
1279 aom_highbd_v_predictor_16x16_sse2
,
1280 aom_highbd_h_predictor_16x16_sse2
, NULL
, NULL
, NULL
,
1282 HIGHBD_INTRA_PRED_TEST(SSE2_2
, TX_16X8
, aom_highbd_dc_predictor_16x8_sse2
,
1283 aom_highbd_dc_left_predictor_16x8_sse2
,
1284 aom_highbd_dc_top_predictor_16x8_sse2
,
1285 aom_highbd_dc_128_predictor_16x8_sse2
,
1286 aom_highbd_v_predictor_16x8_sse2
,
1287 aom_highbd_h_predictor_16x8_sse2
, NULL
, NULL
, NULL
, NULL
)
1288 HIGHBD_INTRA_PRED_TEST(SSE2_3
, TX_16X32
, aom_highbd_dc_predictor_16x32_sse2
,
1289 aom_highbd_dc_left_predictor_16x32_sse2
,
1290 aom_highbd_dc_top_predictor_16x32_sse2
,
1291 aom_highbd_dc_128_predictor_16x32_sse2
,
1292 aom_highbd_v_predictor_16x32_sse2
,
1293 aom_highbd_h_predictor_16x32_sse2
, NULL
, NULL
, NULL
,
1298 HIGHBD_INTRA_PRED_TEST(SSSE3_1
, TX_16X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1299 NULL
, NULL
, NULL
, NULL
)
1303 HIGHBD_INTRA_PRED_TEST(AVX2_1
, TX_16X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1304 NULL
, NULL
, NULL
, NULL
)
1306 HIGHBD_INTRA_PRED_TEST(AVX2_2
, TX_16X8
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1307 NULL
, NULL
, NULL
, NULL
)
1309 HIGHBD_INTRA_PRED_TEST(AVX2_3
, TX_16X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1310 NULL
, NULL
, NULL
, NULL
)
1313 // -----------------------------------------------------------------------------
1314 // 32x32, 32x16, 32x64, 32x8
1316 HIGHBD_INTRA_PRED_TEST(
1317 C_1
, TX_32X32
, aom_highbd_dc_predictor_32x32_c
,
1318 aom_highbd_dc_left_predictor_32x32_c
, aom_highbd_dc_top_predictor_32x32_c
,
1319 aom_highbd_dc_128_predictor_32x32_c
, aom_highbd_v_predictor_32x32_c
,
1320 aom_highbd_h_predictor_32x32_c
, aom_highbd_paeth_predictor_32x32_c
,
1321 aom_highbd_smooth_predictor_32x32_c
, aom_highbd_smooth_v_predictor_32x32_c
,
1322 aom_highbd_smooth_h_predictor_32x32_c
)
1324 HIGHBD_INTRA_PRED_TEST(
1325 C_2
, TX_32X16
, aom_highbd_dc_predictor_32x16_c
,
1326 aom_highbd_dc_left_predictor_32x16_c
, aom_highbd_dc_top_predictor_32x16_c
,
1327 aom_highbd_dc_128_predictor_32x16_c
, aom_highbd_v_predictor_32x16_c
,
1328 aom_highbd_h_predictor_32x16_c
, aom_highbd_paeth_predictor_32x16_c
,
1329 aom_highbd_smooth_predictor_32x16_c
, aom_highbd_smooth_v_predictor_32x16_c
,
1330 aom_highbd_smooth_h_predictor_32x16_c
)
1332 HIGHBD_INTRA_PRED_TEST(
1333 C_3
, TX_32X64
, aom_highbd_dc_predictor_32x64_c
,
1334 aom_highbd_dc_left_predictor_32x64_c
, aom_highbd_dc_top_predictor_32x64_c
,
1335 aom_highbd_dc_128_predictor_32x64_c
, aom_highbd_v_predictor_32x64_c
,
1336 aom_highbd_h_predictor_32x64_c
, aom_highbd_paeth_predictor_32x64_c
,
1337 aom_highbd_smooth_predictor_32x64_c
, aom_highbd_smooth_v_predictor_32x64_c
,
1338 aom_highbd_smooth_h_predictor_32x64_c
)
1340 HIGHBD_INTRA_PRED_TEST(
1341 C_4
, TX_32X8
, aom_highbd_dc_predictor_32x8_c
,
1342 aom_highbd_dc_left_predictor_32x8_c
, aom_highbd_dc_top_predictor_32x8_c
,
1343 aom_highbd_dc_128_predictor_32x8_c
, aom_highbd_v_predictor_32x8_c
,
1344 aom_highbd_h_predictor_32x8_c
, aom_highbd_paeth_predictor_32x8_c
,
1345 aom_highbd_smooth_predictor_32x8_c
, aom_highbd_smooth_v_predictor_32x8_c
,
1346 aom_highbd_smooth_h_predictor_32x8_c
)
1349 HIGHBD_INTRA_PRED_TEST(SSE2_1
, TX_32X32
, aom_highbd_dc_predictor_32x32_sse2
,
1350 aom_highbd_dc_left_predictor_32x32_sse2
,
1351 aom_highbd_dc_top_predictor_32x32_sse2
,
1352 aom_highbd_dc_128_predictor_32x32_sse2
,
1353 aom_highbd_v_predictor_32x32_sse2
,
1354 aom_highbd_h_predictor_32x32_sse2
, NULL
, NULL
, NULL
,
1356 HIGHBD_INTRA_PRED_TEST(SSE2_2
, TX_32X16
, aom_highbd_dc_predictor_32x16_sse2
,
1357 aom_highbd_dc_left_predictor_32x16_sse2
,
1358 aom_highbd_dc_top_predictor_32x16_sse2
,
1359 aom_highbd_dc_128_predictor_32x16_sse2
,
1360 aom_highbd_v_predictor_32x16_sse2
,
1361 aom_highbd_h_predictor_32x16_sse2
, NULL
, NULL
, NULL
,
1366 HIGHBD_INTRA_PRED_TEST(SSSE3_1
, TX_32X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1367 NULL
, NULL
, NULL
, NULL
)
1371 HIGHBD_INTRA_PRED_TEST(AVX2_1
, TX_32X32
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1372 NULL
, NULL
, NULL
, NULL
)
1374 HIGHBD_INTRA_PRED_TEST(AVX2_2
, TX_32X16
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
1375 NULL
, NULL
, NULL
, NULL
)
1378 // -----------------------------------------------------------------------------
1379 // 64x64, 64x32, 64x16
1381 HIGHBD_INTRA_PRED_TEST(
1382 C_1
, TX_64X64
, aom_highbd_dc_predictor_64x64_c
,
1383 aom_highbd_dc_left_predictor_64x64_c
, aom_highbd_dc_top_predictor_64x64_c
,
1384 aom_highbd_dc_128_predictor_64x64_c
, aom_highbd_v_predictor_64x64_c
,
1385 aom_highbd_h_predictor_64x64_c
, aom_highbd_paeth_predictor_64x64_c
,
1386 aom_highbd_smooth_predictor_64x64_c
, aom_highbd_smooth_v_predictor_64x64_c
,
1387 aom_highbd_smooth_h_predictor_64x64_c
)
1389 HIGHBD_INTRA_PRED_TEST(
1390 C_2
, TX_64X32
, aom_highbd_dc_predictor_64x32_c
,
1391 aom_highbd_dc_left_predictor_64x32_c
, aom_highbd_dc_top_predictor_64x32_c
,
1392 aom_highbd_dc_128_predictor_64x32_c
, aom_highbd_v_predictor_64x32_c
,
1393 aom_highbd_h_predictor_64x32_c
, aom_highbd_paeth_predictor_64x32_c
,
1394 aom_highbd_smooth_predictor_64x32_c
, aom_highbd_smooth_v_predictor_64x32_c
,
1395 aom_highbd_smooth_h_predictor_64x32_c
)
1397 HIGHBD_INTRA_PRED_TEST(
1398 C_3
, TX_64X16
, aom_highbd_dc_predictor_64x16_c
,
1399 aom_highbd_dc_left_predictor_64x16_c
, aom_highbd_dc_top_predictor_64x16_c
,
1400 aom_highbd_dc_128_predictor_64x16_c
, aom_highbd_v_predictor_64x16_c
,
1401 aom_highbd_h_predictor_64x16_c
, aom_highbd_paeth_predictor_64x16_c
,
1402 aom_highbd_smooth_predictor_64x16_c
, aom_highbd_smooth_v_predictor_64x16_c
,
1403 aom_highbd_smooth_h_predictor_64x16_c
)
1405 // -----------------------------------------------------------------------------
1407 #include "test/test_libaom.cc"