<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div id="spnEditorContent"><p style="margin: 0;">Hi <span style="font-family: arial; white-space: pre-wrap;">Hari,</span></p><p style="margin: 0;"><br></p><p style="margin: 0;">These 8 patches looks good, the only comment on below code</p><p style="margin: 0;"><br></p><p style="margin: 0;">=================================</p><p style="margin: 0;"><span style="font-family: arial; white-space: pre-wrap;"> .macro SAD_START_4 f</span></p></div><pre style="width: 1298.64px; word-break: break-word !important;">- ld1 {v0.s}[0], [x0], x1
+ ldr s0, [x0]
+ ldr s1, [x2]
+ add x0, x0, x1
+ add x2, x2, x3
ld1 {v0.s}[1], [x0], x1
- ld1 {v1.s}[0], [x2], x3
ld1 {v1.s}[1], [x2], x3
\f v16.8h, v0.8b, v1.8b
.endm</pre><pre><div id="spnEditorContent" style="font-family: Arial; white-space: normal;"><p style="margin: 0px;">In the document</p><p style="margin: 0px;">LDR latency 5/-, throughput 2</p><p style="margin: 0px;">ADD latency 2, throughput 2 </p><p style="margin: 0px;">LD1 latency 7, throughput 2 (latency may optimize to 5)</p><p style="margin: 0px;"><br></p><p style="margin: 0px;">In this case, replace LD1 by LDR+ADD is not get benefit</p><p style="margin: 0px;">btw: same comment in SAD_X_START_4</p><p style="margin: 0px;"><br></p><p style="margin: 0px;">=================================</p></div><div><pre style="width: 1298.64px; word-break: break-word !important;"><br></pre></div><div>At 2024-05-24 01:12:04, "Hari Limaye" <hari.limaye@arm.com> wrote:</div>>Hi,
>
>This patch-series optimises the Neon implementations of SAD/SADxN primitives, adds new Armv8.4 Neon DotProd implementations, and performs some refactoring to AArch64 code.
>
>This series is based on the previously submitted refactoring patch-series (AArch64 saoCuStats Optimisations).
>
>Geometric mean of performance uplift when compiled with LLVM 17 on a Neoverse V1 machine (higher is better):
>
>Existing Neon -> Optimised Neon: 1.45x
>Optimised Neon -> Armv8.4 Neon DotProd: 1.03x
>
>Many thanks,
>
>Hari
>
>Hari Limaye (8):
> AArch64: Optimise Neon assembly implementations of SAD
> AArch64: Optimise Neon assembly implementations of SADxN
> AArch64: Remove SVE2 SAD/SADxN primitives
> AArch64: Clean up CMake feature detection
> AArch64: Add Armv8.4 Neon DotProd feature detection
> AArch64: Refactor setup of optimised assembly primitives
> AArch64: Add Armv8.4 Neon DotProd implementations of SAD
> AArch64: Add Armv8.4 Neon DotProd implementations of SADxN
>
> build/README.txt | 8 +
> source/CMakeLists.txt | 89 ++-
> source/cmake/FindNEON_DOTPROD.cmake | 21 +
> source/common/CMakeLists.txt | 6 +-
> source/common/aarch64/asm-primitives.cpp | 832 ++---------------------
> source/common/aarch64/fun-decls.h | 21 +
> source/common/aarch64/sad-a-common.S | 514 --------------
> source/common/aarch64/sad-a-sve2.S | 511 --------------
> source/common/aarch64/sad-a.S | 506 +++++++++++++-
> source/common/aarch64/sad-neon-dotprod.S | 302 ++++++++
> source/common/cpu.cpp | 19 +-
> source/test/testbench.cpp | 3 +-
> source/x265.h | 11 +-
> 13 files changed, 958 insertions(+), 1885 deletions(-)
> create mode 100644 source/cmake/FindNEON_DOTPROD.cmake
> delete mode 100644 source/common/aarch64/sad-a-common.S
> delete mode 100644 source/common/aarch64/sad-a-sve2.S
> create mode 100644 source/common/aarch64/sad-neon-dotprod.S
>
>--
>2.42.1
>
>_______________________________________________
>x265-devel mailing list
>x265-devel@videolan.org
>https://mailman.videolan.org/listinfo/x265-devel
</pre></div>