aom: Add documentation on SIMD usage

From 57586292f78a8a7159c2eadfbe0ad8513efd699b Mon Sep 17 00:00:00 2001
From: Rachel Barker <[EMAIL REDACTED]>
Date: Tue, 20 Feb 2024 20:56:16 +0000
Subject: [PATCH] Add documentation on SIMD usage

Add a section to the Doxygen documentation, mentioning the
minimum required SIMD instruction sets for x86 and Arm

BUG: b/322787141
Change-Id: I72728fcbe896250d5e7e0fe943c3ceaa5ed0f6c2
 doc/dev_guide/av1_encoder.dox | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/doc/dev_guide/av1_encoder.dox b/doc/dev_guide/av1_encoder.dox
index 0f7e8f87e2..a40b58933b 100644
--- a/doc/dev_guide/av1_encoder.dox
+++ b/doc/dev_guide/av1_encoder.dox
@@ -1313,6 +1313,34 @@ Related functions:
 All the related functions are listed in \ref coefficient_coding.
+\section architecture_simd SIMD usage
+In order to efficiently encode video on modern platforms, it is necessary to
+implement optimized versions of many core encoding and decoding functions using
+architecture-specific SIMD instructions.
+Functions which have optimized implementations will have multiple variants
+in the code, each suffixed with the name of the appropriate instruction set.
+There will additionally be an `_c` version, which acts as a reference
+implementation which the SIMD variants can be tested against.
+As different machines with the same nominal architecture may support different
+subsets of SIMD instructions, we have dynamic CPU detection logic which chooses
+the appropriate functions to use at run time. This process is handled by
+`build/cmake/`, with function definitions in the files
+`*` elsewhere in the codebase.
+Currently SIMD is supported on the following platforms:
+- x86: Requires SSE4.1 or above
+- Arm: Requires Neon (Armv7-A and above)
+We aim to provide implementations of all performance-critical functions which
+are compatible with the instruction sets listed above. Additional SIMD
+extensions (e.g. AVX on x86, SVE on Arm) are also used to provide even
+greater performance where available.
 /*!\defgroup encoder_algo Encoder Algorithm