• Frank Barchard's avatar
    Gaussian reorder for benefit of A73 · f0a9d6d2
    Frank Barchard authored
    Roughly. instead of 4 loads and 8 multiples, use 1 load and 2 multiples
    4 times over.  The original code, as with the C code from clang and gcc,
    did all the loads, then all the math, then the store.  The new code
    does a load, then the math, then the next load, etc.
    This schedules better on current arm 64 cpus.
    Number of registers also reduced, reusing the same registers.
    
    HiSilicon ARM A73:
    
    Now
    TestGaussRow_Opt (890 ms)
    TestGaussCol_Opt (571 ms)
    
    Was
    TestGaussRow_Opt (1061 ms)
    TestGaussCol_Opt (595 ms)
    
    Qualcomm 821 (Pixel):
    
    Now
    TestGaussRow_Opt (571 ms)
    TestGaussCol_Opt (474 ms)
    
    Was
    TestGaussRow_Opt (751 ms)
    TestGaussCol_Opt (520 ms)
    
    TBR=kjellander@chromium.org
    BUG=libyuv:719
    TEST=LibYUVPlanarTest.TestGaussRow_Opt
    
    Reviewed-on: https://chromium-review.googlesource.com/627478Reviewed-by: 's avatarCheng Wang <wangcheng@google.com>
    Reviewed-by: 's avatarFrank Barchard <fbarchard@google.com>
    Change-Id: I5ec81191d460801f0d4a89f0384f89925ff036de
    Reviewed-on: https://chromium-review.googlesource.com/634448
    Commit-Queue: Frank Barchard <fbarchard@google.com>
    f0a9d6d2
Name
Last commit
Last update
build_overrides Loading commit data...
docs Loading commit data...
include Loading commit data...
infra/config Loading commit data...
source Loading commit data...
tools_libyuv Loading commit data...
unit_test Loading commit data...
util Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
AUTHORS Loading commit data...
Android.mk Loading commit data...
BUILD.gn Loading commit data...
CM_linux_packages.cmake Loading commit data...
CMakeLists.txt Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE_THIRD_PARTY Loading commit data...
OWNERS Loading commit data...
PATENTS Loading commit data...
PRESUBMIT.py Loading commit data...
README.chromium Loading commit data...
README.md Loading commit data...
all.gyp Loading commit data...
cleanup_links.py Loading commit data...
codereview.settings Loading commit data...
download_vs_toolchain.py Loading commit data...
gyp_libyuv Loading commit data...
gyp_libyuv.py Loading commit data...
libyuv.gni Loading commit data...
libyuv.gyp Loading commit data...
libyuv.gypi Loading commit data...
libyuv_nacl.gyp Loading commit data...
libyuv_test.gyp Loading commit data...
linux.mk Loading commit data...
public.mk Loading commit data...
pylintrc Loading commit data...
winarm.mk Loading commit data...