| Index: source/row_gcc.cc
|
| diff --git a/source/row_gcc.cc b/source/row_gcc.cc
|
| index 6522ac56c8231076bd078cce98abd5e0935afea3..bf9ddde42c3a4c0e759d831f90c06996b49e8419 100644
|
| --- a/source/row_gcc.cc
|
| +++ b/source/row_gcc.cc
|
| @@ -1526,26 +1526,6 @@ void RGBAToUVRow_SSSE3(const uint8* src_rgba0, int src_stride_rgba,
|
| "movq " MEMACCESS([a_buf]) ",%%xmm5 \n" \
|
| "lea " MEMLEA(0x8, [a_buf]) ",%[a_buf] \n"
|
|
|
| -// Read 2 UV from 411, upsample to 8 UV.
|
| -// reading 4 bytes is an msan violation.
|
| -// "movd " MEMACCESS([u_buf]) ",%%xmm0 \n"
|
| -// MEMOPREG(movd, 0x00, [u_buf], [v_buf], 1, xmm1)
|
| -// pinsrw fails with drmemory
|
| -// __asm pinsrw xmm0, [esi], 0 /* U */
|
| -// __asm pinsrw xmm1, [esi + edi], 0 /* V */
|
| -#define READYUV411_TEMP \
|
| - "movzwl " MEMACCESS([u_buf]) ",%[temp] \n" \
|
| - "movd %[temp],%%xmm0 \n" \
|
| - MEMOPARG(movzwl, 0x00, [u_buf], [v_buf], 1, [temp]) " \n" \
|
| - "movd %[temp],%%xmm1 \n" \
|
| - "lea " MEMLEA(0x2, [u_buf]) ",%[u_buf] \n" \
|
| - "punpcklbw %%xmm1,%%xmm0 \n" \
|
| - "punpcklwd %%xmm0,%%xmm0 \n" \
|
| - "punpckldq %%xmm0,%%xmm0 \n" \
|
| - "movq " MEMACCESS([y_buf]) ",%%xmm4 \n" \
|
| - "punpcklbw %%xmm4,%%xmm4 \n" \
|
| - "lea " MEMLEA(0x8, [y_buf]) ",%[y_buf] \n"
|
| -
|
| // Read 4 UV from NV12, upsample to 8 UV
|
| #define READNV12 \
|
| "movq " MEMACCESS([uv_buf]) ",%%xmm0 \n" \
|
| @@ -1804,42 +1784,6 @@ void OMITFP I422AlphaToARGBRow_SSSE3(const uint8* y_buf,
|
| }
|
| #endif // HAS_I422ALPHATOARGBROW_SSSE3
|
|
|
| -#ifdef HAS_I411TOARGBROW_SSSE3
|
| -void OMITFP I411ToARGBRow_SSSE3(const uint8* y_buf,
|
| - const uint8* u_buf,
|
| - const uint8* v_buf,
|
| - uint8* dst_argb,
|
| - const struct YuvConstants* yuvconstants,
|
| - int width) {
|
| - int temp;
|
| - asm volatile (
|
| - YUVTORGB_SETUP(yuvconstants)
|
| - "sub %[u_buf],%[v_buf] \n"
|
| - "pcmpeqb %%xmm5,%%xmm5 \n"
|
| - LABELALIGN
|
| - "1: \n"
|
| - READYUV411_TEMP
|
| - YUVTORGB(yuvconstants)
|
| - STOREARGB
|
| - "subl $0x8,%[width] \n"
|
| - "jg 1b \n"
|
| - : [y_buf]"+r"(y_buf), // %[y_buf]
|
| - [u_buf]"+r"(u_buf), // %[u_buf]
|
| - [v_buf]"+r"(v_buf), // %[v_buf]
|
| - [dst_argb]"+r"(dst_argb), // %[dst_argb]
|
| - [temp]"=&r"(temp), // %[temp]
|
| -#if defined(__i386__) && defined(__pic__)
|
| - [width]"+m"(width) // %[width]
|
| -#else
|
| - [width]"+rm"(width) // %[width]
|
| -#endif
|
| - : [yuvconstants]"r"(yuvconstants) // %[yuvconstants]
|
| - : "memory", "cc", NACL_R14 YUVTORGB_REGS
|
| - "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
| - );
|
| -}
|
| -#endif
|
| -
|
| void OMITFP NV12ToARGBRow_SSSE3(const uint8* y_buf,
|
| const uint8* uv_buf,
|
| uint8* dst_argb,
|
| @@ -2013,20 +1957,6 @@ void OMITFP I422ToRGBARow_SSSE3(const uint8* y_buf,
|
| "vpermq $0xd8,%%ymm5,%%ymm5 \n" \
|
| "lea " MEMLEA(0x10, [a_buf]) ",%[a_buf] \n"
|
|
|
| -// Read 4 UV from 411, upsample to 16 UV.
|
| -#define READYUV411_AVX2 \
|
| - "vmovd " MEMACCESS([u_buf]) ",%%xmm0 \n" \
|
| - MEMOPREG(vmovd, 0x00, [u_buf], [v_buf], 1, xmm1) \
|
| - "lea " MEMLEA(0x4, [u_buf]) ",%[u_buf] \n" \
|
| - "vpunpcklbw %%ymm1,%%ymm0,%%ymm0 \n" \
|
| - "vpunpcklwd %%ymm0,%%ymm0,%%ymm0 \n" \
|
| - "vpermq $0xd8,%%ymm0,%%ymm0 \n" \
|
| - "vpunpckldq %%ymm0,%%ymm0,%%ymm0 \n" \
|
| - "vmovdqu " MEMACCESS([y_buf]) ",%%xmm4 \n" \
|
| - "vpermq $0xd8,%%ymm4,%%ymm4 \n" \
|
| - "vpunpcklbw %%ymm4,%%ymm4,%%ymm4 \n" \
|
| - "lea " MEMLEA(0x10, [y_buf]) ",%[y_buf] \n"
|
| -
|
| // Read 8 UV from NV12, upsample to 16 UV.
|
| #define READNV12_AVX2 \
|
| "vmovdqu " MEMACCESS([uv_buf]) ",%%xmm0 \n" \
|
| @@ -2163,39 +2093,6 @@ void OMITFP I444ToARGBRow_AVX2(const uint8* y_buf,
|
| }
|
| #endif // HAS_I444TOARGBROW_AVX2
|
|
|
| -#ifdef HAS_I411TOARGBROW_AVX2
|
| -// 16 pixels
|
| -// 4 UV values upsampled to 16 UV, mixed with 16 Y producing 16 ARGB (64 bytes).
|
| -void OMITFP I411ToARGBRow_AVX2(const uint8* y_buf,
|
| - const uint8* u_buf,
|
| - const uint8* v_buf,
|
| - uint8* dst_argb,
|
| - const struct YuvConstants* yuvconstants,
|
| - int width) {
|
| - asm volatile (
|
| - YUVTORGB_SETUP_AVX2(yuvconstants)
|
| - "sub %[u_buf],%[v_buf] \n"
|
| - "vpcmpeqb %%ymm5,%%ymm5,%%ymm5 \n"
|
| - LABELALIGN
|
| - "1: \n"
|
| - READYUV411_AVX2
|
| - YUVTORGB_AVX2(yuvconstants)
|
| - STOREARGB_AVX2
|
| - "sub $0x10,%[width] \n"
|
| - "jg 1b \n"
|
| - "vzeroupper \n"
|
| - : [y_buf]"+r"(y_buf), // %[y_buf]
|
| - [u_buf]"+r"(u_buf), // %[u_buf]
|
| - [v_buf]"+r"(v_buf), // %[v_buf]
|
| - [dst_argb]"+r"(dst_argb), // %[dst_argb]
|
| - [width]"+rm"(width) // %[width]
|
| - : [yuvconstants]"r"(yuvconstants) // %[yuvconstants]
|
| - : "memory", "cc", NACL_R14 YUVTORGB_REGS_AVX2
|
| - "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
| - );
|
| -}
|
| -#endif // HAS_I411TOARGBROW_AVX2
|
| -
|
| #if defined(HAS_I422TOARGBROW_AVX2)
|
| // 16 pixels
|
| // 8 UV values upsampled to 16 UV, mixed with 16 Y producing 16 ARGB (64 bytes).
|
|
|