Marcos Ashton Iglesias
9bab434b5f
avcodec/x86/vvc: add AVX2 pred_planar
...
Widths 4 to 64 at 8 bit, with the height a runtime argument as in the
C code. Factoring 2^min(logw,logh) out of the numerator keeps the whole
kernel in words: the largest intermediate is 32704, when max(w,h) is 64.
The term that is linear in y is carried as a running accumulator, so a
row costs one pmullw and three shifts per column group. Widths 32 and 64
run two column groups per pass and write a row with a single 32 byte
store.
checkasm --bench on a Core Ultra 7 155H:
vvc_pred_planar_4x4_8_c: 63.0
vvc_pred_planar_4x4_8_avx2: 20.3 ( 3.10x)
vvc_pred_planar_8x8_8_c: 216.7
vvc_pred_planar_8x8_8_avx2: 35.6 ( 6.09x)
vvc_pred_planar_16x16_8_c: 966.4
vvc_pred_planar_16x16_8_avx2: 80.3 (12.03x)
vvc_pred_planar_32x32_8_c: 3032.7
vvc_pred_planar_32x32_8_avx2: 251.5 (12.06x)
vvc_pred_planar_64x64_8_c: 10389.9
vvc_pred_planar_64x64_8_avx2: 967.1 (10.74x)
2026-10-21 21:21:22 +00:00
..
2026-07-22 14:52:57 +02:00
2026-10-20 20:41:50 +00:00
2026-10-21 21:21:22 +00:00
2026-09-02 22:31:34 +02:00
2026-09-02 22:36:06 +02:00
2026-07-22 14:52:57 +02:00
2026-03-14 19:31:45 +01:00
2026-10-15 18:46:02 +00:00
2026-10-15 18:46:02 +00:00
2026-02-27 18:25:43 +01:00
2026-09-08 03:00:16 +02:00
2026-06-17 23:05:23 +02:00
2026-04-06 11:28:49 +02:00
2026-01-29 01:33:40 +01:00
2026-01-29 01:33:34 +01:00
2026-05-04 16:57:18 +02:00
2026-05-04 16:57:18 +02:00
2026-08-11 04:35:09 +02:00
2026-02-13 09:21:33 +01:00
2026-08-09 17:28:59 +02:00
2026-08-09 17:28:59 +02:00
2026-06-23 19:15:57 +02:00
2026-08-01 16:50:06 +02:00
2026-06-14 22:04:42 +02:00
2026-08-11 21:17:13 +02:00
2026-08-11 21:16:28 +02:00
2026-07-22 14:52:57 +02:00
2026-10-17 18:41:34 -07:00
2026-10-17 18:41:34 -07:00
2026-01-25 22:53:21 +01:00
2026-08-27 00:51:10 +02:00
2026-08-13 00:29:25 +02:00
2026-08-13 00:29:25 +02:00
2026-08-06 19:01:29 -07:00
2026-08-06 19:01:29 -07:00
2026-08-14 21:21:52 +02:00
2026-10-12 09:20:21 +00:00
2026-09-12 17:41:18 -07:00
2026-09-04 20:58:15 -07:00
2026-09-04 20:58:15 -07:00
2026-10-17 18:41:34 -07:00
2026-09-04 20:58:15 -07:00
2026-06-14 22:04:42 +02:00
2026-06-14 22:04:42 +02:00
2026-06-17 23:05:23 +02:00
2026-08-02 02:19:05 +02:00
2026-08-02 02:00:49 +02:00
2026-08-02 02:19:04 +02:00
2026-03-01 12:04:14 +01:00
2026-03-01 12:04:14 +01:00
2026-08-14 21:21:52 +02:00
2026-10-15 18:46:02 +00:00
2026-07-22 14:52:57 +02:00
2026-09-20 12:29:38 +00:00
2026-09-20 12:29:38 +00:00
2026-07-22 14:52:57 +02:00
2026-08-11 21:17:13 +02:00
2026-07-22 14:52:57 +02:00
2026-05-04 17:31:05 +02:00
2026-07-22 14:52:57 +02:00
2026-04-06 10:39:17 +02:00
2026-04-06 10:39:17 +02:00
2026-01-10 22:47:22 +01:00
2026-08-16 16:10:09 -07:00
2026-09-23 23:14:38 +00:00
2026-09-23 23:14:38 +00:00
2026-09-12 17:41:18 -07:00
2026-09-12 17:41:18 -07:00
2026-09-12 17:41:18 -07:00
2026-09-12 17:41:18 -07:00
2026-04-08 21:00:00 +02:00
2026-04-08 21:00:00 +02:00
2026-06-17 23:05:23 +02:00
2026-08-14 21:21:52 +02:00
2026-03-28 11:25:38 +01:00
2026-07-14 10:01:08 +02:00
2026-04-19 07:36:37 +02:00
2026-04-19 07:36:37 +02:00
2026-07-22 14:52:57 +02:00
2026-04-13 12:51:35 +02:00
2026-08-09 17:25:23 +02:00
2026-08-09 17:25:23 +02:00
2026-08-09 17:25:23 +02:00
2026-07-22 14:52:57 +02:00
2026-10-09 18:50:46 +01:00
2026-10-09 18:50:46 +01:00
2026-08-01 16:50:06 +02:00
2026-07-01 20:00:46 +02:00
2026-07-22 14:52:57 +02:00
2026-07-22 14:52:57 +02:00
2026-03-19 14:44:40 +01:00
2026-03-19 14:44:40 +01:00
2026-05-26 04:46:04 +00:00
2026-04-19 08:21:17 +02:00
2026-04-19 08:21:17 +02:00
2026-05-04 17:31:01 +02:00
2026-08-18 11:51:33 +02:00
2026-04-13 00:41:22 +02:00
2026-08-18 11:51:33 +02:00
2026-08-19 23:28:47 -07:00
2026-08-19 23:28:47 -07:00
2026-08-14 21:21:52 +02:00
2026-07-16 11:17:00 +02:00
2026-08-19 23:28:47 -07:00
2026-07-22 14:52:57 +02:00