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). |