commit | a425b559bdf8c2a7c3567af42ffe970d238cb72e | [log] [tgz] |
---|---|---|
author | George Steed <george.steed@arm.com> | Wed Apr 17 11:27:48 2024 +0100 |
committer | Frank Barchard <fbarchard@chromium.org> | Wed Jul 10 23:09:53 2024 +0000 |
tree | 3613d8b5c315791ff203e58b92b6b7a26624ae2f | |
parent | 3b3c7f0b81102c12a3642e1ca9031eccd0cbbcbd [diff] |
[AArch64] Use full vectors in ARGB1555To{Y,UV}Row_NEON The existing RGB555TOARGB macro only makes use of 64 bit wide vectors rather than the full 128 bits available, so unroll it to allow us to process more data per instruction. For ARGB1555ToUVRow_NEON we already have enough data available each iteration to make use of full vectors, but for ARGB1555ToYRow_NEON we also need to adjust the "any" kernel to allow us to process 16 elements per iteration. Reduction in runtimes observed compared to the existing Neon kernels: | ARGB1555ToUVRow | ARGB1555ToYRow Cortex-A55 | -28.8% | -35.3% Cortex-A510 | -34.0% | -48.5% Cortex-A76 | -36.7% | -25.1% Cortex-A720 | -29.7% | -31.1% Cortex-X1 | -31.6% | -19.7% Cortex-X2 | -27.6% | -22.7% Bug: libyuv:976 Change-Id: Idd745c133b5fb65001652a59f01ac1aa3bb42067 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/5631540 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.