Jun Zhao
91ae6d10ab
lavfi/nlmeans: add aarch64 neon for compute_weights_line
...
Implement NEON optimization for compute_weights_line.
Also update the function signature to use ptrdiff_t for stack arguments
(max_meaningful_diff, startx, endx). This is done to unify the stack
layout between Apple platforms (which pack 32-bit stack arguments tightly)
and the generic AAPCS64 ABI (which requires 8-byte stack slots for 32-bit
arguments). Using ptrdiff_t ensures 8-byte slots are used on all AArch64
platforms, avoiding ABI mismatches with the assembly implementation.
The x86 AVX2 prototype is updated to match the new signature.
Performance benchmark (AArch64) in MacOS M4:
./tests/checkasm/checkasm --test=vf_nlmeans --bench
compute_weights_line_c: 151.1 ( 1.00x)
compute_weights_line_neon: 62.6 ( 2.42x)
Reviewed-by: Martin Storsjö <martin@martin.st >
Signed-off-by: Jun Zhao <barryjzhao@tencent.com >
2026-01-09 16:10:10 +00:00
..
2026-01-09 16:10:10 +00:00
2025-08-13 19:50:26 +08:00
2025-04-01 18:28:26 +03:00
2025-12-16 17:30:29 +02:00
2026-01-04 13:42:20 +00:00
2025-08-20 22:06:21 +09:00
2026-01-09 16:10:10 +00:00
2025-07-03 21:41:53 +02:00
2025-09-04 23:12:34 +00:00
2025-08-12 09:01:39 +00:00
2025-11-30 22:20:13 +01:00
2025-07-22 09:47:18 -03:00
2025-12-07 19:36:49 +00:00
2025-11-30 22:20:13 +01:00
2025-06-21 20:24:57 +02:00
2025-10-07 14:51:46 -07:00
2025-12-03 11:52:54 +01:00
2025-10-07 14:51:46 -07:00
2025-08-03 13:48:47 +02:00
2025-07-25 00:18:07 -03:00
2025-07-03 21:41:53 +02:00
2025-08-03 13:48:47 +02:00
2025-08-07 03:07:44 +02:00
2025-08-12 09:01:39 +00:00
2025-10-07 14:51:46 -07:00
2025-08-03 13:48:47 +02:00
2025-11-30 22:20:13 +01:00
2025-03-28 14:33:08 -03:00
2025-09-25 11:34:10 +00:00
2025-12-07 21:22:23 +00:00
2025-08-12 09:01:39 +00:00
2025-08-12 09:01:39 +00:00
2025-08-12 09:01:39 +00:00
2025-08-12 09:01:39 +00:00
2025-08-12 09:01:39 +00:00
2025-11-30 22:20:13 +01:00
2025-07-22 09:47:18 -03:00
2025-07-22 09:47:18 -03:00
2025-03-12 17:00:24 +01:00
2025-09-02 17:06:25 +02:00
2025-09-02 17:06:08 +02:00
2025-12-09 21:31:58 +00:00
2025-10-04 17:49:08 +02:00
2025-10-27 15:39:39 +01:00
2025-09-02 17:06:25 +02:00
2025-11-26 13:15:16 +00:00
2025-11-26 13:15:16 +00:00
2025-11-30 22:20:13 +01:00
2025-11-30 22:20:13 +01:00
2025-11-30 22:20:13 +01:00
2025-09-02 17:06:25 +02:00
2025-09-02 17:06:25 +02:00
2025-08-12 09:01:39 +00:00
2025-11-30 22:20:13 +01:00
2025-06-21 17:28:39 +02:00
2025-12-03 11:52:54 +01:00
2025-07-22 09:47:18 -03:00
2025-11-22 18:36:41 +00:00
2025-06-11 19:26:22 +02:00
2025-12-14 12:41:00 +05:30
2025-08-03 13:48:47 +02:00
2025-11-06 18:01:33 +01:00
2025-11-06 18:01:33 +01:00
2025-08-03 13:48:47 +02:00
2025-07-14 22:03:36 +02:00
2025-07-14 22:03:36 +02:00
2025-09-26 12:24:04 -03:00
2025-08-03 13:48:47 +02:00
2025-12-07 21:22:23 +00:00
2025-04-03 06:04:57 +02:00
2025-04-03 06:04:57 +02:00
2025-08-03 13:48:47 +02:00
2025-11-30 22:20:13 +01:00
2025-08-03 13:48:47 +02:00
2025-09-02 17:06:25 +02:00
2025-03-28 14:33:08 -03:00
2025-08-03 13:48:47 +02:00
2025-09-30 15:39:39 +00:00
2025-09-30 15:39:39 +00:00
2025-11-30 22:20:13 +01:00
2025-08-21 14:55:12 +02:00
2025-07-03 21:41:53 +02:00
2025-09-02 17:06:25 +02:00
2026-01-05 20:41:59 +00:00
2025-08-11 19:29:53 +00:00
2025-08-03 13:48:47 +02:00
2025-07-29 22:10:05 +02:00
2025-07-19 00:36:25 +02:00
2025-09-26 12:31:39 +00:00
2025-11-27 22:11:57 +01:00
2025-09-02 17:06:25 +02:00
2025-12-22 14:58:59 +00:00
2025-11-30 22:20:13 +01:00
2025-12-03 11:52:54 +01:00
2025-10-07 16:00:27 +00:00
2025-08-03 13:48:47 +02:00
2025-08-12 09:01:39 +00:00
2025-08-12 09:01:39 +00:00
2025-12-16 17:30:23 +02:00
2025-11-30 22:20:13 +01:00
2025-10-07 16:00:27 +00:00
2025-10-07 16:00:27 +00:00
2025-08-03 13:48:47 +02:00
2025-08-03 13:48:47 +02:00
2025-09-21 13:28:58 +02:00
2025-11-30 22:20:13 +01:00
2025-11-10 21:50:58 +00:00
2025-12-03 11:52:54 +01:00
2025-11-30 22:20:13 +01:00
2025-08-03 13:48:47 +02:00
2025-03-28 14:33:08 -03:00
2025-09-26 16:15:46 +00:00
2025-09-02 17:06:25 +02:00
2025-08-12 09:01:39 +00:00
2025-03-28 14:33:08 -03:00
2025-08-12 09:01:39 +00:00
2025-09-04 22:20:58 +02:00
2025-09-26 16:15:46 +00:00
2025-08-12 09:01:39 +00:00
2025-11-19 17:46:06 +00:00
2026-01-04 13:42:20 +00:00
2025-03-28 14:33:08 -03:00
2025-11-30 22:20:13 +01:00
2025-03-28 14:33:08 -03:00
2025-09-02 17:06:25 +02:00
2025-09-02 17:06:25 +02:00
2025-12-03 21:23:51 +00:00
2025-03-28 14:33:08 -03:00
2025-03-28 14:33:08 -03:00
2025-03-28 14:33:08 -03:00
2025-03-28 14:33:08 -03:00
2025-09-02 17:06:25 +02:00
2025-11-30 22:20:13 +01:00
2025-08-12 09:01:39 +00:00
2025-11-18 21:26:36 +00:00
2025-11-17 12:18:12 +01:00
2025-11-17 12:18:12 +01:00
2025-11-30 22:20:13 +01:00
2025-11-30 22:20:13 +01:00
2025-08-12 09:01:39 +00:00
2025-11-30 22:20:13 +01:00
2025-11-30 22:20:13 +01:00
2025-11-30 22:20:13 +01:00
2025-11-27 22:11:57 +01:00
2025-07-17 12:26:05 +02:00
2025-09-21 11:02:41 +00:00
2025-11-30 22:20:13 +01:00
2025-09-21 11:02:41 +00:00
2025-05-21 16:10:55 +02:00
2025-03-28 14:33:08 -03:00
2025-12-03 11:52:54 +01:00
2026-01-02 23:46:42 +08:00
2025-12-27 18:13:13 +00:00
2025-08-12 09:01:39 +00:00
2025-11-30 22:20:13 +01:00
2025-11-30 22:20:13 +01:00
2025-11-30 22:20:13 +01:00
2025-11-30 22:20:13 +01:00
2025-06-14 23:41:38 +02:00
2025-09-02 15:56:23 +02:00
2025-08-03 13:48:47 +02:00
2025-12-08 21:31:13 +00:00
2026-01-09 16:10:10 +00:00
2025-06-15 21:00:38 +05:30
2025-12-31 15:00:46 +01:00
2026-01-09 16:10:10 +00:00
2025-03-28 14:33:08 -03:00
2025-10-16 19:10:51 +02:00
2025-10-16 18:41:19 +02:00
2025-07-11 17:49:58 +02:00
2025-08-03 13:48:47 +02:00
2025-08-03 13:48:47 +02:00
2025-08-03 13:48:47 +02:00
2025-11-30 22:20:13 +01:00
2025-09-02 17:06:25 +02:00
2025-07-04 01:32:27 +02:00
2025-07-04 01:32:27 +02:00
2025-09-02 17:06:25 +02:00
2025-08-12 09:01:39 +00:00
2025-10-07 14:51:46 -07:00
2025-11-30 22:20:13 +01:00
2025-09-02 17:06:09 +02:00
2025-12-03 11:52:54 +01:00
2025-11-30 22:20:13 +01:00
2025-08-03 13:48:47 +02:00
2025-11-30 22:20:13 +01:00
2025-08-03 13:48:47 +02:00
2025-09-02 17:06:25 +02:00
2025-11-27 22:11:57 +01:00
2025-11-27 22:11:57 +01:00
2025-11-27 22:11:57 +01:00
2025-08-03 13:48:47 +02:00
2025-12-08 14:22:16 +01:00
2025-09-30 15:39:39 +00:00
2025-09-30 15:39:39 +00:00
2025-09-30 15:39:39 +00:00
2025-09-30 15:39:39 +00:00
2025-09-30 15:39:39 +00:00
2025-08-12 09:01:39 +00:00
2025-08-12 09:01:39 +00:00
2025-08-12 09:01:39 +00:00
2025-03-28 14:33:08 -03:00
2025-10-28 20:46:21 +01:00
2025-09-26 12:31:39 +00:00
2025-09-02 17:06:25 +02:00
2025-12-03 11:52:54 +01:00
2025-08-03 13:48:47 +02:00
2025-08-03 13:48:47 +02:00
2025-08-03 13:48:47 +02:00
2025-10-15 19:43:37 +02:00
2025-12-22 14:58:59 +00:00
2025-08-03 13:48:47 +02:00
2025-11-30 22:20:13 +01:00
2026-01-03 21:31:30 -03:00
2025-11-30 22:20:13 +01:00
2025-09-02 17:06:25 +02:00
2025-03-28 14:33:08 -03:00
2025-03-28 14:33:08 -03:00
2025-11-30 22:20:13 +01:00
2025-03-31 18:48:01 +05:30
2025-08-06 21:25:46 +00:00
2025-09-02 17:06:25 +02:00
2025-11-30 22:20:13 +01:00
2025-09-26 06:00:43 +02:00
2025-08-12 09:01:39 +00:00
2025-09-02 17:06:25 +02:00
2025-09-26 12:31:39 +00:00
2025-11-30 22:20:13 +01:00
2025-12-03 11:52:54 +01:00
2025-08-03 13:48:47 +02:00
2025-11-30 22:20:13 +01:00
2025-07-22 09:47:18 -03:00
2025-07-31 19:51:23 +08:00
2025-08-12 09:01:39 +00:00
2025-09-30 15:39:39 +00:00
2025-11-30 22:20:13 +01:00
2025-12-23 11:02:04 +01:00
2025-03-28 14:33:08 -03:00
2025-04-22 20:45:57 +02:00
2025-11-30 22:20:13 +01:00
2025-11-25 12:42:41 +05:30
2025-09-02 17:06:08 +02:00
2025-09-17 14:50:41 +00:00
2025-09-14 11:45:11 +00:00
2025-09-18 03:55:54 +02:00
2025-09-18 01:04:59 +00:00
2025-09-14 11:45:11 +00:00
2025-09-14 20:33:24 +02:00
2025-03-28 14:33:08 -03:00
2025-10-28 19:16:58 +00:00
2025-12-31 10:30:36 +00:00
2025-03-28 14:33:08 -03:00