mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-07 01:06:46 +08:00
Add ARGBToY AVX calls.
BUG=none TESTED=libyuv unittests all pass with AVX2 R=tpsiaki@google.com Review URL: https://webrtc-codereview.appspot.com/44999004 git-svn-id: http://libyuv.googlecode.com/svn/trunk@1358 16f28f9a-4ce2-e073-06de-1de4eb20be90
This commit is contained in:
parent
2827277496
commit
9afabe29b8
@ -544,12 +544,10 @@ int ARGBToI420(const uint8* src_argb, int src_stride_argb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAS_ARGBTOYROW_AVX2) && defined(HAS_ARGBTOUVROW_AVX2)
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
if (TestCpuFlag(kCpuHasAVX2)) {
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
ARGBToUVRow = ARGBToUVRow_Any_AVX2;
|
|
||||||
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
if (IS_ALIGNED(width, 32)) {
|
if (IS_ALIGNED(width, 32)) {
|
||||||
ARGBToUVRow = ARGBToUVRow_AVX2;
|
|
||||||
ARGBToYRow = ARGBToYRow_AVX2;
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -857,7 +855,14 @@ int RGB24ToI420(const uint8* src_rgb24, int src_stride_rgb24,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // HAS_ARGBTOUVROW_SSSE3
|
#endif // HAS_ARGBTOUVROW_SSSE3
|
||||||
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
#if !defined(HAS_RGB24TOYROW_NEON)
|
#if !defined(HAS_RGB24TOYROW_NEON)
|
||||||
// Allocate 2 rows of ARGB.
|
// Allocate 2 rows of ARGB.
|
||||||
@ -971,7 +976,14 @@ int RAWToI420(const uint8* src_raw, int src_stride_raw,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // HAS_ARGBTOUVROW_SSSE3
|
#endif // HAS_ARGBTOUVROW_SSSE3
|
||||||
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
// Allocate 2 rows of ARGB.
|
// Allocate 2 rows of ARGB.
|
||||||
const int kRowSize = (width * 4 + 15) & ~15;
|
const int kRowSize = (width * 4 + 15) & ~15;
|
||||||
@ -1054,8 +1066,7 @@ int RGB565ToI420(const uint8* src_rgb565, int src_stride_rgb565,
|
|||||||
RGB565ToUVRow = RGB565ToUVRow_NEON;
|
RGB565ToUVRow = RGB565ToUVRow_NEON;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else // HAS_RGB565TOYROW_NEON
|
#endif
|
||||||
|
|
||||||
#if defined(HAS_RGB565TOARGBROW_SSE2)
|
#if defined(HAS_RGB565TOARGBROW_SSE2)
|
||||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||||
RGB565ToARGBRow = RGB565ToARGBRow_Any_SSE2;
|
RGB565ToARGBRow = RGB565ToARGBRow_Any_SSE2;
|
||||||
@ -1080,15 +1091,22 @@ int RGB565ToI420(const uint8* src_rgb565, int src_stride_rgb565,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||||
if (IS_ALIGNED(width, 16)) {
|
if (IS_ALIGNED(width, 16)) {
|
||||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // HAS_ARGBTOUVROW_SSSE3
|
#endif
|
||||||
#endif // HAS_RGB565TOYROW_NEON
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
#if !defined(HAS_RGB565TOYROW_NEON)
|
#if !defined(HAS_RGB565TOYROW_NEON)
|
||||||
@ -1174,7 +1192,7 @@ int ARGB1555ToI420(const uint8* src_argb1555, int src_stride_argb1555,
|
|||||||
ARGB1555ToUVRow = ARGB1555ToUVRow_NEON;
|
ARGB1555ToUVRow = ARGB1555ToUVRow_NEON;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else // HAS_ARGB1555TOYROW_NEON
|
#endif
|
||||||
|
|
||||||
#if defined(HAS_ARGB1555TOARGBROW_SSE2)
|
#if defined(HAS_ARGB1555TOARGBROW_SSE2)
|
||||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||||
@ -1192,15 +1210,22 @@ int ARGB1555ToI420(const uint8* src_argb1555, int src_stride_argb1555,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||||
if (IS_ALIGNED(width, 16)) {
|
if (IS_ALIGNED(width, 16)) {
|
||||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // HAS_ARGBTOUVROW_SSSE3
|
#endif
|
||||||
#endif // HAS_ARGB1555TOYROW_NEON
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
#if !defined(HAS_ARGB1555TOYROW_NEON)
|
#if !defined(HAS_ARGB1555TOYROW_NEON)
|
||||||
@ -1287,7 +1312,7 @@ int ARGB4444ToI420(const uint8* src_argb4444, int src_stride_argb4444,
|
|||||||
ARGB4444ToUVRow = ARGB4444ToUVRow_NEON;
|
ARGB4444ToUVRow = ARGB4444ToUVRow_NEON;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else // HAS_ARGB4444TOYROW_NEON
|
#endif
|
||||||
|
|
||||||
#if defined(HAS_ARGB4444TOARGBROW_SSE2)
|
#if defined(HAS_ARGB4444TOARGBROW_SSE2)
|
||||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||||
@ -1305,15 +1330,22 @@ int ARGB4444ToI420(const uint8* src_argb4444, int src_stride_argb4444,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAS_ARGBTOUVROW_SSSE3)
|
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||||
if (IS_ALIGNED(width, 16)) {
|
if (IS_ALIGNED(width, 16)) {
|
||||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // HAS_ARGBTOUVROW_SSSE3
|
#endif
|
||||||
#endif // HAS_ARGB4444TOYROW_NEON
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
#if !defined(HAS_ARGB4444TOYROW_NEON)
|
#if !defined(HAS_ARGB4444TOYROW_NEON)
|
||||||
|
|||||||
@ -72,7 +72,14 @@ int ARGBToI444(const uint8* src_argb, int src_stride_argb,
|
|||||||
ARGBToYRow = ARGBToYRow_SSSE3;
|
ARGBToYRow = ARGBToYRow_SSSE3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAS_ARGBTOYROW_NEON)
|
#if defined(HAS_ARGBTOYROW_NEON)
|
||||||
if (TestCpuFlag(kCpuHasNEON)) {
|
if (TestCpuFlag(kCpuHasNEON)) {
|
||||||
@ -139,7 +146,6 @@ int ARGBToI422(const uint8* src_argb, int src_stride_argb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HAS_ARGBTOYROW_SSSE3)
|
#if defined(HAS_ARGBTOYROW_SSSE3)
|
||||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||||
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
ARGBToYRow = ARGBToYRow_Any_SSSE3;
|
||||||
@ -148,6 +154,14 @@ int ARGBToI422(const uint8* src_argb, int src_stride_argb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if defined(HAS_ARGBTOYROW_NEON)
|
#if defined(HAS_ARGBTOYROW_NEON)
|
||||||
if (TestCpuFlag(kCpuHasNEON)) {
|
if (TestCpuFlag(kCpuHasNEON)) {
|
||||||
ARGBToYRow = ARGBToYRow_Any_NEON;
|
ARGBToYRow = ARGBToYRow_Any_NEON;
|
||||||
@ -275,6 +289,14 @@ int ARGBToNV12(const uint8* src_argb, int src_stride_argb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if defined(HAS_ARGBTOYROW_NEON)
|
#if defined(HAS_ARGBTOYROW_NEON)
|
||||||
if (TestCpuFlag(kCpuHasNEON)) {
|
if (TestCpuFlag(kCpuHasNEON)) {
|
||||||
ARGBToYRow = ARGBToYRow_Any_NEON;
|
ARGBToYRow = ARGBToYRow_Any_NEON;
|
||||||
@ -374,6 +396,14 @@ int ARGBToNV21(const uint8* src_argb, int src_stride_argb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if defined(HAS_ARGBTOYROW_NEON)
|
#if defined(HAS_ARGBTOYROW_NEON)
|
||||||
if (TestCpuFlag(kCpuHasNEON)) {
|
if (TestCpuFlag(kCpuHasNEON)) {
|
||||||
ARGBToYRow = ARGBToYRow_Any_NEON;
|
ARGBToYRow = ARGBToYRow_Any_NEON;
|
||||||
@ -492,6 +522,14 @@ int ARGBToYUY2(const uint8* src_argb, int src_stride_argb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if defined(HAS_ARGBTOYROW_NEON)
|
#if defined(HAS_ARGBTOYROW_NEON)
|
||||||
if (TestCpuFlag(kCpuHasNEON)) {
|
if (TestCpuFlag(kCpuHasNEON)) {
|
||||||
ARGBToYRow = ARGBToYRow_Any_NEON;
|
ARGBToYRow = ARGBToYRow_Any_NEON;
|
||||||
@ -591,6 +629,14 @@ int ARGBToUYVY(const uint8* src_argb, int src_stride_argb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(HAS_ARGBTOYROW_AVX2)
|
||||||
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_Any_AVX2;
|
||||||
|
if (IS_ALIGNED(width, 32)) {
|
||||||
|
ARGBToYRow = ARGBToYRow_AVX2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if defined(HAS_ARGBTOYROW_NEON)
|
#if defined(HAS_ARGBTOYROW_NEON)
|
||||||
if (TestCpuFlag(kCpuHasNEON)) {
|
if (TestCpuFlag(kCpuHasNEON)) {
|
||||||
ARGBToYRow = ARGBToYRow_Any_NEON;
|
ARGBToYRow = ARGBToYRow_Any_NEON;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user