From b3446fc50c37399706f09235d0a79e7ca54c218e Mon Sep 17 00:00:00 2001 From: "fbarchard@google.com" Date: Wed, 27 Feb 2013 02:23:54 +0000 Subject: [PATCH] ARGBmultiply re-enabled with shifts and narrow as 2 steps. BUG=183 TEST=none Review URL: https://webrtc-codereview.appspot.com/1121008 git-svn-id: http://libyuv.googlecode.com/svn/trunk@584 16f28f9a-4ce2-e073-06de-1de4eb20be90 --- README.chromium | 2 +- include/libyuv/row.h | 2 +- include/libyuv/version.h | 2 +- source/row_neon.cc | 12 ++++++++---- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/README.chromium b/README.chromium index 99005b5c6..60b8b2da4 100644 --- a/README.chromium +++ b/README.chromium @@ -1,6 +1,6 @@ Name: libyuv URL: http://code.google.com/p/libyuv/ -Version: 582 +Version: 584 License: BSD License File: LICENSE diff --git a/include/libyuv/row.h b/include/libyuv/row.h index c0fed6db6..5bb958698 100644 --- a/include/libyuv/row.h +++ b/include/libyuv/row.h @@ -249,7 +249,7 @@ extern "C" { #define HAS_ARGBCOLORMATRIXROW_NEON #define HAS_ARGBGRAYROW_NEON #define HAS_ARGBINTERPOLATEROW_NEON -// #define HAS_ARGBMULTIPLYROW_NEON +#define HAS_ARGBMULTIPLYROW_NEON #define HAS_ARGBQUANTIZEROW_NEON #define HAS_ARGBSEPIAROW_NEON #define HAS_ARGBSHADEROW_NEON diff --git a/include/libyuv/version.h b/include/libyuv/version.h index fd8e4f3d3..01960a700 100644 --- a/include/libyuv/version.h +++ b/include/libyuv/version.h @@ -11,6 +11,6 @@ #ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT #define INCLUDE_LIBYUV_VERSION_H_ -#define LIBYUV_VERSION 582 +#define LIBYUV_VERSION 584 #endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT diff --git a/source/row_neon.cc b/source/row_neon.cc index faed8102a..6836f3dff 100644 --- a/source/row_neon.cc +++ b/source/row_neon.cc @@ -2518,10 +2518,14 @@ void ARGBMultiplyRow_NEON(const uint8* src_argb0, const uint8* src_argb1, "vmull.u8 q1, d2, d3 \n" // multiply G "vmull.u8 q2, d4, d5 \n" // multiply R "vmull.u8 q3, d6, d7 \n" // multiply A - "vqshrun.u16 d0, q0, #8 \n" // 16 bit to 8 bit B - "vqshrun.u16 d1, q1, #8 \n" // 16 bit to 8 bit G - "vqshrun.u16 d2, q2, #8 \n" // 16 bit to 8 bit R - "vqshrun.u16 d3, q3, #8 \n" // 16 bit to 8 bit A + "vrshr.u16 q0, q0, #8 \n" // low 8 bits B + "vrshr.u16 q1, q1, #8 \n" // low 8 bits G + "vrshr.u16 q2, q2, #8 \n" // low 8 bits R + "vrshr.u16 q3, q3, #8 \n" // low 8 bits A + "vmovn.u16 d0, q0 \n" // 16 bit to 8 bit B + "vmovn.u16 d1, q1 \n" // 16 bit to 8 bit G + "vmovn.u16 d2, q2 \n" // 16 bit to 8 bit R + "vmovn.u16 d3, q3 \n" // 16 bit to 8 bit A "vst4.8 {d0, d1, d2, d3}, [%2]! \n" // store 8 ARGB pixels. "bgt 1b \n"