Sam Parker
7b3e77f8d9
[WebAssembly] Implement getInterleavedMemoryOpCost ( #146864 )
...
First pass where we calculate the cost of the memory operation, as well
as the shuffles required. Interleaving by a factor of two should be
relatively cheap, as many ISAs have dedicated instructions to perform
the (de)interleaving. Several of these permutations can be combined for
an interleave stride of 4 and this is the highest stride we allow.
I've costed larger vectors, and more lanes, as more expensive because
not only is more work is needed but the risk of codegen going 'wrong'
rises dramatically. I also filled in a bit of cost modelling for vector
stores.
It appears the main vector plan to avoid is an interleave factor of 4
with v16i8. I've used libyuv and ncnn for benchmarking, using V8 on
AArch64, and observe geomean improvement of ~3% with some kernels
improving 40-60%.
I know there is still significant performance being left on the table,
so this will need more development along with the rest of the cost
model.
2025-08-27 12:43:52 +01:00
..
2025-08-26 15:52:31 +01:00
2025-07-26 17:16:36 +01:00
2025-08-16 18:54:27 +01:00
2025-08-08 11:09:34 +02:00
2025-08-16 18:54:27 +01:00
2025-08-08 11:09:34 +02:00
2025-08-27 01:54:19 +00:00
2025-08-16 18:54:27 +01:00
2025-08-27 12:43:52 +01:00
2025-08-26 09:59:06 +01:00
2024-11-21 08:06:56 +00:00
2025-04-04 15:44:26 +01:00
2025-08-05 18:48:10 +01:00
2025-07-26 17:16:36 +01:00
2025-08-11 09:52:54 +01:00
2025-07-26 17:16:36 +01:00
2025-08-21 07:34:54 +08:00
2024-09-04 16:28:39 +05:30
2025-07-26 17:16:36 +01:00
2025-07-30 17:55:00 +02:00
2025-08-16 18:54:27 +01:00
2025-08-16 18:54:27 +01:00
2024-09-19 09:41:25 +01:00
2025-08-16 18:54:27 +01:00
2025-08-16 18:54:27 +01:00
2025-01-23 22:29:30 +00:00
2025-08-10 21:21:16 +01:00
2025-08-16 18:54:27 +01:00
2025-07-27 13:53:26 +01:00
2025-08-22 07:59:14 +08:00
2025-08-22 07:59:14 +08:00
2023-10-28 17:47:46 +08:00
2023-10-24 20:27:39 -07:00
2025-04-04 15:34:45 +02:00
2025-08-16 18:54:27 +01:00
2025-08-10 21:21:16 +01:00
2025-06-27 10:39:33 +01:00
2025-07-14 08:17:33 +01:00
2025-08-26 15:52:31 +01:00
2025-07-27 13:53:26 +01:00
2025-08-05 21:06:41 +01:00
2025-07-27 13:53:26 +01:00
2025-01-14 22:07:38 +00:00
2025-07-27 13:53:26 +01:00
2025-01-29 08:09:50 +00:00
2025-01-29 08:09:50 +00:00
2025-01-29 08:09:50 +00:00
2025-07-27 13:53:26 +01:00
2024-12-05 14:36:40 +01:00
2025-06-07 21:49:54 +01:00
2025-07-27 13:53:26 +01:00
2025-07-27 13:53:26 +01:00
2025-08-16 18:54:27 +01:00
2025-08-16 18:54:27 +01:00
2025-08-16 18:54:27 +01:00
2025-08-10 21:21:16 +01:00
2025-06-24 21:48:58 +01:00
2025-08-16 18:54:27 +01:00
2024-07-05 10:08:42 +01:00
2025-07-26 17:16:36 +01:00
2025-08-16 18:54:27 +01:00
2025-08-25 18:55:23 +01:00
2025-08-25 18:55:23 +01:00
2025-08-25 18:55:23 +01:00
2025-08-25 12:58:39 +02:00
2025-07-27 13:53:26 +01:00
2025-07-14 21:21:22 +01:00
2025-08-08 11:00:00 +01:00
2025-03-14 15:50:49 +00:00
2025-05-27 16:07:56 +01:00
2024-11-21 08:06:56 +00:00
2025-05-14 14:56:35 +01:00
2025-02-27 17:43:24 +00:00
2025-07-27 13:53:26 +01:00
2024-11-06 11:53:33 +00:00
2025-08-16 18:54:27 +01:00
2025-08-22 07:59:14 +08:00
2024-11-21 08:06:56 +00:00
2025-07-27 13:53:26 +01:00
2025-08-16 18:54:27 +01:00
2025-03-26 21:03:50 +00:00
2025-08-16 18:54:27 +01:00
2025-04-02 17:23:00 +01:00
2025-08-22 07:59:14 +08:00
2025-08-16 18:54:27 +01:00
2025-07-26 17:16:36 +01:00
2025-08-16 18:54:27 +01:00
2025-01-29 16:56:47 +01:00
2025-02-09 11:20:20 +00:00
2025-08-18 17:48:42 +01:00
2025-08-18 17:48:42 +01:00
2023-12-05 14:09:36 +01:00
2023-08-08 18:10:23 -04:00
2025-08-21 18:58:10 +01:00
2025-07-30 17:55:00 +02:00
2025-07-30 17:55:00 +02:00
2025-08-07 12:07:29 +01:00
2025-07-27 13:53:26 +01:00
2025-06-26 11:19:09 +01:00
2025-02-26 13:57:51 +00:00
2025-08-16 18:54:27 +01:00
2025-08-16 18:54:27 +01:00
2024-12-12 16:48:31 +08:00
2025-08-16 18:54:27 +01:00
2025-07-27 13:53:26 +01:00
2025-07-27 13:53:26 +01:00
2024-12-10 20:09:18 +08:00
2025-08-16 18:54:27 +01:00
2025-07-27 13:53:26 +01:00
2025-07-26 17:16:36 +01:00
2025-08-08 11:09:34 +02:00
2025-08-16 18:54:27 +01:00
2025-08-16 18:54:27 +01:00
2025-07-27 13:53:26 +01:00
2025-08-22 07:59:14 +08:00
2025-08-10 21:21:16 +01:00
2024-12-05 14:36:40 +01:00
2025-01-29 08:09:50 +00:00
2025-02-20 17:01:49 +01:00
2025-08-16 18:54:27 +01:00
2025-08-10 21:21:16 +01:00
2023-10-28 17:47:46 +08:00
2025-08-16 18:54:27 +01:00
2025-07-27 13:53:26 +01:00
2025-08-16 18:54:27 +01:00
2025-07-18 21:58:19 +01:00
2025-06-27 10:39:33 +01:00
2025-06-27 10:39:33 +01:00
2025-07-26 17:16:36 +01:00
2025-02-28 12:56:12 +00:00
2025-07-27 13:53:26 +01:00
2025-07-26 17:16:36 +01:00
2025-08-23 21:41:46 +01:00
2025-08-22 07:59:14 +08:00
2024-08-11 20:38:36 +02:00
2025-07-27 13:53:26 +01:00
2025-08-16 18:54:27 +01:00
2024-12-18 19:06:34 +01:00
2025-01-29 08:09:50 +00:00
2024-07-05 21:41:31 +01:00
2024-11-21 08:06:56 +00:00
2025-07-27 13:53:26 +01:00
2025-01-29 08:09:50 +00:00
2025-07-27 13:53:26 +01:00
2025-01-29 08:09:50 +00:00
2025-07-27 13:53:26 +01:00
2025-08-16 18:54:27 +01:00
2024-10-02 10:28:54 +01:00
2025-03-09 15:05:35 +00:00
2025-08-16 18:54:27 +01:00
2025-08-05 18:01:02 +01:00
2024-11-06 11:53:33 +00:00
2025-04-28 20:01:37 +01:00
2025-08-06 14:43:03 +01:00
2025-02-17 16:40:37 +01:00
2025-07-26 17:16:36 +01:00
2025-07-27 13:53:26 +01:00
2025-07-26 17:16:36 +01:00
2025-08-07 10:54:24 +08:00
2025-03-26 21:03:50 +00:00
2025-07-27 13:53:26 +01:00
2024-11-07 14:09:45 +01:00
2024-07-07 20:08:01 +01:00
2025-01-29 16:56:47 +01:00
2025-07-27 13:53:26 +01:00
2024-11-21 08:06:56 +00:00
2025-08-16 18:54:27 +01:00
2025-03-25 12:57:24 +00:00
2024-07-01 09:52:56 -07:00
2023-12-05 14:09:36 +01:00
2025-07-27 13:53:26 +01:00
2025-08-22 07:59:14 +08:00
2025-07-27 13:53:26 +01:00
2025-08-14 21:21:03 +01:00
2025-08-10 21:21:16 +01:00
2025-08-10 21:21:16 +01:00
2025-07-26 17:16:36 +01:00
2025-07-27 13:53:26 +01:00
2025-08-10 21:21:16 +01:00
2025-08-16 18:54:27 +01:00
2025-07-26 17:16:36 +01:00
2025-02-15 21:54:16 +01:00
2025-08-16 18:54:27 +01:00
2025-04-29 09:47:38 +01:00
2025-05-08 11:49:54 +01:00
2025-08-19 04:10:53 +00:00
2025-08-16 18:54:27 +01:00
2025-08-10 21:21:16 +01:00
2025-08-26 15:52:31 +01:00
2024-12-27 10:37:21 +08:00
2025-07-27 13:53:26 +01:00
2025-02-09 11:20:20 +00:00
2025-07-31 14:35:10 +01:00
2025-07-26 17:16:36 +01:00
2025-07-31 14:35:10 +01:00
2025-07-31 14:35:10 +01:00
2025-08-12 10:22:41 +01:00
2025-07-27 13:53:26 +01:00
2024-11-21 08:06:56 +00:00
2025-04-14 17:11:13 +02:00
2025-06-30 22:39:17 +01:00
2025-07-27 13:53:26 +01:00
2025-07-26 17:16:36 +01:00
2024-09-19 09:41:25 +01:00
2025-08-16 18:54:27 +01:00
2025-07-31 16:33:25 +01:00
2025-08-16 18:54:27 +01:00
2024-01-16 21:54:58 -08:00
2025-07-26 15:39:21 +01:00
2025-07-27 13:53:26 +01:00
2024-01-16 21:54:58 -08:00
2025-08-14 21:21:03 +01:00
2025-07-27 13:53:26 +01:00
2025-08-26 19:31:50 +01:00
2025-07-27 13:53:26 +01:00
2025-04-02 17:22:40 +01:00
2025-07-27 13:53:26 +01:00
2025-08-14 19:27:51 +01:00
2025-08-16 18:54:27 +01:00
2025-08-12 14:13:13 +01:00
2025-08-14 19:27:51 +01:00
2025-08-14 19:27:51 +01:00
2025-08-14 19:27:51 +01:00
2025-08-14 19:27:51 +01:00
2025-08-14 19:27:51 +01:00
2025-08-14 19:27:51 +01:00
2025-01-29 08:09:50 +00:00
2025-07-27 13:53:26 +01:00
2024-11-06 11:53:33 +00:00
2025-01-29 08:09:50 +00:00
2025-08-16 18:54:27 +01:00
2023-10-17 03:49:39 +08:00
2025-08-07 10:54:24 +08:00
2025-07-27 13:53:26 +01:00
2025-07-27 13:53:26 +01:00
2025-08-24 13:27:06 +01:00
2025-06-08 22:34:07 +01:00
2025-08-16 18:54:27 +01:00
2025-08-16 18:54:27 +01:00
2025-08-10 21:21:16 +01:00
2025-06-08 22:34:07 +01:00
2025-06-08 22:34:07 +01:00
2025-06-08 22:34:07 +01:00
2025-06-08 22:34:07 +01:00
2025-06-08 22:34:07 +01:00
2025-07-27 13:53:26 +01:00
2025-08-25 18:55:23 +01:00
2024-10-17 16:50:59 +01:00
2025-07-26 17:16:36 +01:00
2025-08-26 10:52:53 +01:00
2025-08-25 18:55:23 +01:00
2025-08-25 18:55:23 +01:00
2025-08-25 18:55:23 +01:00
2025-08-25 21:45:21 +01:00
2025-08-25 18:55:23 +01:00
2025-08-02 19:49:59 +01:00
2025-08-16 18:54:27 +01:00
2025-07-27 13:53:26 +01:00
2023-08-03 00:37:19 -07:00
2025-08-10 21:21:16 +01:00
2025-08-10 21:21:16 +01:00
2025-08-16 18:54:27 +01:00
2025-07-27 13:53:26 +01:00
2025-06-22 13:48:25 +01:00
2025-08-10 21:21:16 +01:00
2025-05-14 14:56:35 +01:00
2025-08-10 21:21:16 +01:00
2025-08-10 21:21:16 +01:00
2025-08-10 21:21:16 +01:00
2025-07-27 13:53:26 +01:00
2025-08-16 18:54:27 +01:00
2025-08-16 18:54:27 +01:00
2025-07-26 17:16:36 +01:00
2025-08-16 18:54:27 +01:00
2025-08-16 18:54:27 +01:00
2025-06-27 10:39:33 +01:00
2025-01-29 08:09:50 +00:00
2025-07-31 14:03:08 +01:00
2025-07-27 13:53:26 +01:00
2025-07-27 13:53:26 +01:00
2025-07-27 13:53:26 +01:00
2025-07-27 13:53:26 +01:00
2024-08-21 12:02:54 +02:00
2025-08-21 07:34:54 +08:00
2025-03-26 21:03:50 +00:00
2023-10-28 17:47:46 +08:00
2024-08-19 12:40:20 +01:00
2025-06-27 10:39:33 +01:00
2025-08-16 18:54:27 +01:00
2024-10-16 06:10:19 +01:00
2025-07-27 13:53:26 +01:00
2025-03-25 12:57:24 +00:00
2025-07-31 15:56:31 -04:00
2025-08-04 11:31:00 +01:00
2024-09-19 18:50:10 +01:00
2024-12-05 14:36:40 +01:00
2025-07-27 13:53:26 +01:00
2025-07-27 13:53:26 +01:00
2025-08-25 18:55:23 +01:00
2025-08-16 18:54:27 +01:00
2025-08-10 21:21:16 +01:00
2024-09-06 11:20:14 +02:00
2025-08-14 19:27:51 +01:00
2025-07-27 13:53:26 +01:00
2025-04-18 21:52:05 +01:00
2025-06-07 21:49:54 +01:00
2024-04-04 18:30:17 -04:00
2024-07-07 20:08:01 +01:00
2025-08-26 15:52:31 +01:00
2025-03-10 20:28:56 +00:00
2025-08-26 15:52:31 +01:00
2025-08-26 15:52:31 +01:00
2025-08-06 14:43:03 +01:00
2025-07-01 20:44:50 +01:00
2025-07-16 08:14:12 +01:00
2025-06-07 21:49:54 +01:00
2025-06-07 21:49:54 +01:00
2025-05-27 16:07:56 +01:00
2024-11-06 11:53:33 +00:00
2025-03-19 21:35:15 +00:00
2025-08-15 15:53:19 +01:00
2025-05-27 16:07:56 +01:00
2025-08-16 18:54:27 +01:00
2025-08-16 18:54:27 +01:00