mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-06 16:56:55 +08:00
The strict architectural requirements between features are reasonably relaxed and difficult to map out fully, in particular: * FEAT_DotProd is architecturally available from Armv8.1-A and becomes mandatory from Armv8.4-A. * FEAT_I8MM is architecturally available from Armv8.1-A and becomes mandatory from Armv8.6-A. It does not strictly depend on FEAT_DotProd being implemented however I am not aware of a micro-architecture where FEAT_I8MM is implemented without FEAT_DotProd also being implemented. * FEAT_SVE is architecturally available from Armv8.2-A. It does not strictly depend on either of FEAT_DotProd or FEAT_I8MM being implemented. The only micro-architecture I am aware of where FEAT_SVE is implemented without FEAT_DotProd and FEAT_I8MM both also being implemented is the Fujitsu A64FX. * FEAT_SVE2 is architecturally available from Armv9.0-A. If FEAT_SVE2 is implemented then FEAT_SVE must also be implemented. Since Armv9.0-A is based on Armv8.5-A this implies that FEAT_DotProd is also implemented. Interestingly this means that FEAT_I8MM is not mandatory since it only becomes mandatory from Armv8.6-A (Armv9.1-A), however I am not aware of a micro-architecture where FEAT_SVE2 is implemented without all three of the above features also being implemented. Additionally, when testing under emulation there are sometimes bugs where even mandatory architecture relationships are broken. For example there is one known case where SVE2 may be reported as available even when SVE is explicitly disabled. To simplify these dependencies, don't try to enable later extensions unless earlier extensions are reported implemented. This notably penalises code if it were to run on a Fujitsu A64FX, however this is not a likely target for libyuv deployment. Change-Id: Ifa32f7a43043641f99afb120e591945e136c9fd1 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/5546385 Reviewed-by: Frank Barchard <fbarchard@chromium.org> |
||
|---|---|---|
| .. | ||
| compare_common.cc | ||
| compare_gcc.cc | ||
| compare_msa.cc | ||
| compare_neon64.cc | ||
| compare_neon.cc | ||
| compare_win.cc | ||
| compare.cc | ||
| convert_argb.cc | ||
| convert_from_argb.cc | ||
| convert_from.cc | ||
| convert_jpeg.cc | ||
| convert_to_argb.cc | ||
| convert_to_i420.cc | ||
| convert.cc | ||
| cpu_id.cc | ||
| mjpeg_decoder.cc | ||
| mjpeg_validate.cc | ||
| planar_functions.cc | ||
| rotate_any.cc | ||
| rotate_argb.cc | ||
| rotate_common.cc | ||
| rotate_gcc.cc | ||
| rotate_lsx.cc | ||
| rotate_msa.cc | ||
| rotate_neon64.cc | ||
| rotate_neon.cc | ||
| rotate_win.cc | ||
| rotate.cc | ||
| row_any.cc | ||
| row_common.cc | ||
| row_gcc.cc | ||
| row_lasx.cc | ||
| row_lsx.cc | ||
| row_msa.cc | ||
| row_neon64.cc | ||
| row_neon.cc | ||
| row_rvv.cc | ||
| row_sve.cc | ||
| row_win.cc | ||
| scale_any.cc | ||
| scale_argb.cc | ||
| scale_common.cc | ||
| scale_gcc.cc | ||
| scale_lsx.cc | ||
| scale_msa.cc | ||
| scale_neon64.cc | ||
| scale_neon.cc | ||
| scale_rgb.cc | ||
| scale_rvv.cc | ||
| scale_uv.cc | ||
| scale_win.cc | ||
| scale.cc | ||
| test.sh | ||
| video_common.cc | ||