julee / libyuv

Automatically exported from code.google.com/p/libyuv
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

YUV to RGB use registers for x64 #520

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
YUV to RGB on x64 has enough registers that the constants can be setup once.
Implement YUVTORGB_SETUP

Original issue reported on code.google.com by fbarch...@chromium.org on 4 Nov 2015 at 8:04

GoogleCodeExporter commented 8 years ago
The following revision refers to this bug:
  https://chromium.googlesource.com/libyuv/libyuv.git/+/431cb3667a346136189952ff93974f4ac9e79d78

commit 431cb3667a346136189952ff93974f4ac9e79d78
Author: Frank Barchard <fbarchard@google.com>
Date: Thu Nov 05 00:16:18 2015

YUV to RGB for x64 use registers instead of memory.

On Arm the YVU to RGB conversions move constants into registers.
This change does the same for 64 bit intel builds where additional
registers are available.
The AVX2 saves 3 instructions by because the 2nd argument needs to be a 
register, so a vmovdqu was avoided.

x64 builds using memory:
AVX2  I420ToARGB_Opt (3059 ms)
SSSE3 I420ToARGB_Opt (3959 ms)

Now using registers
AVX2  I420ToARGB_Opt (2906 ms)
SSSE3 I420ToARGB_Opt (3928 ms)

TBR=harryjin@google.com
BUG=libyuv:520

Review URL: https://codereview.chromium.org/1407353010 .

[modify] 
http://crrev.com/431cb3667a346136189952ff93974f4ac9e79d78/README.chromium
[modify] 
http://crrev.com/431cb3667a346136189952ff93974f4ac9e79d78/include/libyuv/version
.h
[modify] 
http://crrev.com/431cb3667a346136189952ff93974f4ac9e79d78/source/row_gcc.cc

Original comment by bugdroid1@chromium.org on 5 Nov 2015 at 12:16

GoogleCodeExporter commented 8 years ago
fixed.  also note that landing a fix now updates the bug!

Original comment by fbarch...@chromium.org on 5 Nov 2015 at 1:19