Use ABD and UDOT to implement Neon sad_4d functions
authorJonathan Wright <jonathan.wright@arm.com>
Mon, 10 May 2021 11:22:03 +0000 (12:22 +0100)
committerJonathan Wright <jonathan.wright@arm.com>
Mon, 10 May 2021 14:20:29 +0000 (15:20 +0100)
commit2db85c269bc5479e48ea7cd4fde85236ee0bc347
treeadce27a5fa9666fc38c440c9e8a2fabd3e11112e
parent0f563e5fadbccb10fabd6ac80c256a4321401e22
Use ABD and UDOT to implement Neon sad_4d functions

Implementing sad16_neon using ABD, UDOT instead of ABAL, ABAL2 saves
a cycle and removes resource contention for a single SIMD pipe on
modern out-of-order Arm CPUs. The UDOT accumulation into 32-bit
elements also allows for a faster reduction at the end of each SAD
function.

The existing implementation is retained for CPUs that do not
implement the Armv8.4-A UDOT instruction, and CPUs executing in
AArch32 mode.

Bug: b/181236880
Change-Id: Ibd0da46e86751d2f808c7b1e424f82b046a1aa6f
vpx_dsp/arm/sad4d_neon.c