commit | d5303f4f779a6baf66bbac8a97937e507ffaaaba | [log] [tgz] |
---|---|---|
author | George Steed <george.steed@arm.com> | Mon Apr 22 10:03:28 2024 +0100 |
committer | Frank Barchard <fbarchard@chromium.org> | Mon Sep 16 04:36:43 2024 +0000 |
tree | 5a90ee5285e107ec34ae4feca7a931e4ce0cef8b | |
parent | 772f0fde1c6f5dbdd741b8c79e626a97304ebc7e [diff] |
[AArch64] Unroll ARGB1555ToARGBRow_NEON to use full Neon vectors Processing more data per loop iteration means that we can use the full 128-bit Neon vectors and also allows us to use e.g. UZP1 to perform XTN + XTN2 in a single instruction. The early Cortex-X cores are not a fan of ST4 .16b with a post-increment, so split out the pointer increment to a separate instruction to avoid this bottleneck. Reductions in runtime observed for ARGB1555ToARGBRow_NEON: Cortex-A55: -18.1% Cortex-A510: -11.2% Cortex-A520: -39.5% Cortex-A76: -18.0% Cortex-A715: -34.8% Cortex-A720: -34.8% Cortex-X1: -0.9% Cortex-X2: -4.6% Cortex-X3: -3.6% Cortex-X4: -20.8% Bug: libyuv:976 Change-Id: Iae2ac24ffdbc718cd1e05bb77191f8d1df3fcf6f Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/5790975 Reviewed-by: Frank Barchard <fbarchard@chromium.org> Reviewed-by: Justin Green <greenjustin@google.com>
libyuv is an open source project that includes YUV scaling and conversion functionality.
See Getting started for instructions on how to get started developing.
You can also browse the docs directory for more documentation.