Index: source/row_gcc.cc |
diff --git a/source/row_gcc.cc b/source/row_gcc.cc |
index 94975032179279d0de90f587c7b533ee19202626..af5ca2b520725d86749f4e914bcf9b40397b92ea 100644 |
--- a/source/row_gcc.cc |
+++ b/source/row_gcc.cc |
@@ -1350,23 +1350,23 @@ void RGBAToUVRow_SSSE3(const uint8* src_rgba0, int src_stride_rgba, |
"punpcklwd %%xmm0,%%xmm0 \n" |
// Convert 8 pixels: 8 UV and 8 Y |
-#define YUVTORGB(YuvConstants) \ |
+#define YUVTORGB(yuvconstants) \ |
"movdqa %%xmm0,%%xmm1 \n" \ |
"movdqa %%xmm0,%%xmm2 \n" \ |
"movdqa %%xmm0,%%xmm3 \n" \ |
- "movdqa " MEMACCESS2(96, [YuvConstants]) ",%%xmm0 \n" \ |
- "pmaddubsw " MEMACCESS([YuvConstants]) ",%%xmm1 \n" \ |
+ "movdqa " MEMACCESS2(96, [yuvconstants]) ",%%xmm0 \n" \ |
+ "pmaddubsw " MEMACCESS([yuvconstants]) ",%%xmm1 \n" \ |
"psubw %%xmm1,%%xmm0 \n" \ |
- "movdqa " MEMACCESS2(128, [YuvConstants]) ",%%xmm1 \n" \ |
- "pmaddubsw " MEMACCESS2(32, [YuvConstants]) ",%%xmm2 \n" \ |
+ "movdqa " MEMACCESS2(128, [yuvconstants]) ",%%xmm1 \n" \ |
+ "pmaddubsw " MEMACCESS2(32, [yuvconstants]) ",%%xmm2 \n" \ |
"psubw %%xmm2,%%xmm1 \n" \ |
- "movdqa " MEMACCESS2(160, [YuvConstants]) ",%%xmm2 \n" \ |
- "pmaddubsw " MEMACCESS2(64, [YuvConstants]) ",%%xmm3 \n" \ |
+ "movdqa " MEMACCESS2(160, [yuvconstants]) ",%%xmm2 \n" \ |
+ "pmaddubsw " MEMACCESS2(64, [yuvconstants]) ",%%xmm3 \n" \ |
"psubw %%xmm3,%%xmm2 \n" \ |
"movq " MEMACCESS([y_buf]) ",%%xmm3 \n" \ |
"lea " MEMLEA(0x8, [y_buf]) ",%[y_buf] \n" \ |
"punpcklbw %%xmm3,%%xmm3 \n" \ |
- "pmulhuw " MEMACCESS2(192, [YuvConstants]) ",%%xmm3 \n" \ |
+ "pmulhuw " MEMACCESS2(192, [yuvconstants]) ",%%xmm3 \n" \ |
"paddsw %%xmm3,%%xmm0 \n" \ |
"paddsw %%xmm3,%%xmm1 \n" \ |
"paddsw %%xmm3,%%xmm2 \n" \ |
@@ -1423,19 +1423,19 @@ void RGBAToUVRow_SSSE3(const uint8* src_rgba0, int src_stride_rgba, |
"movdqu %%xmm0," MEMACCESS2(0x10, [dst_rgba]) " \n" \ |
"lea " MEMLEA(0x20, [dst_rgba]) ",%[dst_rgba] \n" |
-void OMITFP I444ToARGBMatrixRow_SSSE3(const uint8* y_buf, |
- const uint8* u_buf, |
- const uint8* v_buf, |
- uint8* dst_argb, |
- struct YuvConstants* YuvConstants, |
- int width) { |
+void OMITFP I444ToARGBRow_SSSE3(const uint8* y_buf, |
+ const uint8* u_buf, |
+ const uint8* v_buf, |
+ uint8* dst_argb, |
+ struct YuvConstants* yuvconstants, |
+ int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
"pcmpeqb %%xmm5,%%xmm5 \n" |
LABELALIGN |
"1: \n" |
READYUV444 |
- YUVTORGB(YuvConstants) |
+ YUVTORGB(yuvconstants) |
STOREARGB |
"sub $0x8,%[width] \n" |
"jg 1b \n" |
@@ -1444,25 +1444,25 @@ void OMITFP I444ToARGBMatrixRow_SSSE3(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_argb]"+r"(dst_argb), // %[dst_argb] |
[width]"+rm"(width) // %[width] |
- : [YuvConstants]"r"(YuvConstants) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
} |
-void OMITFP I444ToABGRMatrixRow_SSSE3(const uint8* y_buf, |
- const uint8* u_buf, |
- const uint8* v_buf, |
- uint8* dst_abgr, |
- struct YuvConstants* YuvConstants, |
- int width) { |
+void OMITFP I444ToABGRRow_SSSE3(const uint8* y_buf, |
+ const uint8* u_buf, |
+ const uint8* v_buf, |
+ uint8* dst_abgr, |
+ struct YuvConstants* yuvconstants, |
+ int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
"pcmpeqb %%xmm5,%%xmm5 \n" |
LABELALIGN |
"1: \n" |
READYUV444 |
- YUVTORGB(YuvConstants) |
+ YUVTORGB(yuvconstants) |
STOREABGR |
"sub $0x8,%[width] \n" |
"jg 1b \n" |
@@ -1471,7 +1471,7 @@ void OMITFP I444ToABGRMatrixRow_SSSE3(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_abgr]"+r"(dst_abgr), // %[dst_abgr] |
[width]"+rm"(width) // %[width] |
- : [YuvConstants]"r"(YuvConstants) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
@@ -1482,6 +1482,7 @@ void OMITFP I422ToRGB24Row_SSSE3(const uint8* y_buf, |
const uint8* u_buf, |
const uint8* v_buf, |
uint8* dst_rgb24, |
+ struct YuvConstants* yuvconstants, |
int width) { |
asm volatile ( |
"movdqa %[kShuffleMaskARGBToRGB24_0],%%xmm5 \n" |
@@ -1490,7 +1491,7 @@ void OMITFP I422ToRGB24Row_SSSE3(const uint8* y_buf, |
LABELALIGN |
"1: \n" |
READYUV422 |
- YUVTORGB(kYuvConstants) |
+ YUVTORGB(yuvconstants) |
"punpcklbw %%xmm1,%%xmm0 \n" |
"punpcklbw %%xmm2,%%xmm2 \n" |
"movdqa %%xmm0,%%xmm1 \n" |
@@ -1514,7 +1515,7 @@ void OMITFP I422ToRGB24Row_SSSE3(const uint8* y_buf, |
#else |
[width]"+rm"(width) // %[width] |
#endif |
- : [kYuvConstants]"r"(&kYuvConstants.kUVToB), |
+ : [yuvconstants]"r"(yuvconstants), // %[yuvconstants] |
[kShuffleMaskARGBToRGB24_0]"m"(kShuffleMaskARGBToRGB24_0), |
[kShuffleMaskARGBToRGB24]"m"(kShuffleMaskARGBToRGB24) |
: "memory", "cc", NACL_R14 |
@@ -1526,6 +1527,7 @@ void OMITFP I422ToRAWRow_SSSE3(const uint8* y_buf, |
const uint8* u_buf, |
const uint8* v_buf, |
uint8* dst_raw, |
+ struct YuvConstants* yuvconstants, |
int width) { |
asm volatile ( |
"movdqa %[kShuffleMaskARGBToRAW_0],%%xmm5 \n" |
@@ -1534,7 +1536,7 @@ void OMITFP I422ToRAWRow_SSSE3(const uint8* y_buf, |
LABELALIGN |
"1: \n" |
READYUV422 |
- YUVTORGB(kYuvConstants) |
+ YUVTORGB(yuvconstants) |
"punpcklbw %%xmm1,%%xmm0 \n" |
"punpcklbw %%xmm2,%%xmm2 \n" |
"movdqa %%xmm0,%%xmm1 \n" |
@@ -1558,7 +1560,7 @@ void OMITFP I422ToRAWRow_SSSE3(const uint8* y_buf, |
#else |
[width]"+rm"(width) // %[width] |
#endif |
- : [kYuvConstants]"r"(&kYuvConstants.kUVToB), |
+ : [yuvconstants]"r"(yuvconstants), // %[yuvconstants] |
[kShuffleMaskARGBToRAW_0]"m"(kShuffleMaskARGBToRAW_0), |
[kShuffleMaskARGBToRAW]"m"(kShuffleMaskARGBToRAW) |
: "memory", "cc", NACL_R14 |
@@ -1566,19 +1568,19 @@ void OMITFP I422ToRAWRow_SSSE3(const uint8* y_buf, |
); |
} |
-void OMITFP I422ToARGBMatrixRow_SSSE3(const uint8* y_buf, |
- const uint8* u_buf, |
- const uint8* v_buf, |
- uint8* dst_argb, |
- struct YuvConstants* YuvConstants, |
- int width) { |
+void OMITFP I422ToARGBRow_SSSE3(const uint8* y_buf, |
+ const uint8* u_buf, |
+ const uint8* v_buf, |
+ uint8* dst_argb, |
+ struct YuvConstants* yuvconstants, |
+ int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
"pcmpeqb %%xmm5,%%xmm5 \n" |
LABELALIGN |
"1: \n" |
READYUV422 |
- YUVTORGB(YuvConstants) |
+ YUVTORGB(yuvconstants) |
STOREARGB |
"sub $0x8,%[width] \n" |
"jg 1b \n" |
@@ -1587,7 +1589,7 @@ void OMITFP I422ToARGBMatrixRow_SSSE3(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_argb]"+r"(dst_argb), // %[dst_argb] |
[width]"+rm"(width) // %[width] |
- : [YuvConstants]"r"(YuvConstants) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
@@ -1597,6 +1599,7 @@ void OMITFP I411ToARGBRow_SSSE3(const uint8* y_buf, |
const uint8* u_buf, |
const uint8* v_buf, |
uint8* dst_argb, |
+ struct YuvConstants* yuvconstants, |
int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
@@ -1604,7 +1607,7 @@ void OMITFP I411ToARGBRow_SSSE3(const uint8* y_buf, |
LABELALIGN |
"1: \n" |
READYUV411 |
- YUVTORGB(kYuvConstants) |
+ YUVTORGB(yuvconstants) |
STOREARGB |
"sub $0x8,%[width] \n" |
"jg 1b \n" |
@@ -1613,7 +1616,7 @@ void OMITFP I411ToARGBRow_SSSE3(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_argb]"+r"(dst_argb), // %[dst_argb] |
[width]"+rm"(width) // %[width] |
- : [kYuvConstants]"r"(&kYuvConstants.kUVToB) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
@@ -1622,36 +1625,14 @@ void OMITFP I411ToARGBRow_SSSE3(const uint8* y_buf, |
void OMITFP NV12ToARGBRow_SSSE3(const uint8* y_buf, |
const uint8* uv_buf, |
uint8* dst_argb, |
+ struct YuvConstants* yuvconstants, |
int width) { |
asm volatile ( |
"pcmpeqb %%xmm5,%%xmm5 \n" |
LABELALIGN |
"1: \n" |
READNV12 |
- YUVTORGB(kYuvConstants) |
- STOREARGB |
- "sub $0x8,%[width] \n" |
- "jg 1b \n" |
- : [y_buf]"+r"(y_buf), // %[y_buf] |
- [uv_buf]"+r"(uv_buf), // %[uv_buf] |
- [dst_argb]"+r"(dst_argb), // %[dst_argb] |
- [width]"+rm"(width) // %[width] |
- : [kYuvConstants]"r"(&kYuvConstants.kUVToB) // %[kYuvConstants] |
- // Does not use r14. |
- : "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
- ); |
-} |
- |
-void OMITFP NV21ToARGBRow_SSSE3(const uint8* y_buf, |
- const uint8* uv_buf, |
- uint8* dst_argb, |
- int width) { |
- asm volatile ( |
- "pcmpeqb %%xmm5,%%xmm5 \n" |
- LABELALIGN |
- "1: \n" |
- READNV12 |
- YUVTORGB(kYuvConstants) |
+ YUVTORGB(yuvconstants) |
STOREARGB |
"sub $0x8,%[width] \n" |
"jg 1b \n" |
@@ -1659,7 +1640,7 @@ void OMITFP NV21ToARGBRow_SSSE3(const uint8* y_buf, |
[uv_buf]"+r"(uv_buf), // %[uv_buf] |
[dst_argb]"+r"(dst_argb), // %[dst_argb] |
[width]"+rm"(width) // %[width] |
- : [kYuvConstants]"r"(&kYvuConstants.kUVToB) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
// Does not use r14. |
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
@@ -1669,6 +1650,7 @@ void OMITFP I422ToBGRARow_SSSE3(const uint8* y_buf, |
const uint8* u_buf, |
const uint8* v_buf, |
uint8* dst_bgra, |
+ struct YuvConstants* yuvconstants, |
int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
@@ -1676,7 +1658,7 @@ void OMITFP I422ToBGRARow_SSSE3(const uint8* y_buf, |
LABELALIGN |
"1: \n" |
READYUV422 |
- YUVTORGB(kYuvConstants) |
+ YUVTORGB(yuvconstants) |
STOREBGRA |
"sub $0x8,%[width] \n" |
"jg 1b \n" |
@@ -1685,25 +1667,25 @@ void OMITFP I422ToBGRARow_SSSE3(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_bgra]"+r"(dst_bgra), // %[dst_bgra] |
[width]"+rm"(width) // %[width] |
- : [kYuvConstants]"r"(&kYuvConstants.kUVToB) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
} |
-void OMITFP I422ToABGRMatrixRow_SSSE3(const uint8* y_buf, |
- const uint8* u_buf, |
- const uint8* v_buf, |
- uint8* dst_abgr, |
- struct YuvConstants* YuvConstants, |
- int width) { |
+void OMITFP I422ToABGRRow_SSSE3(const uint8* y_buf, |
+ const uint8* u_buf, |
+ const uint8* v_buf, |
+ uint8* dst_abgr, |
+ struct YuvConstants* yuvconstants, |
+ int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
"pcmpeqb %%xmm5,%%xmm5 \n" |
LABELALIGN |
"1: \n" |
READYUV422 |
- YUVTORGB(kYuvConstants) |
+ YUVTORGB(yuvconstants) |
STOREABGR |
"sub $0x8,%[width] \n" |
"jg 1b \n" |
@@ -1712,7 +1694,7 @@ void OMITFP I422ToABGRMatrixRow_SSSE3(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_abgr]"+r"(dst_abgr), // %[dst_abgr] |
[width]"+rm"(width) // %[width] |
- : [kYuvConstants]"r"(YuvConstants) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
@@ -1722,6 +1704,7 @@ void OMITFP I422ToRGBARow_SSSE3(const uint8* y_buf, |
const uint8* u_buf, |
const uint8* v_buf, |
uint8* dst_rgba, |
+ struct YuvConstants* yuvconstants, |
int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
@@ -1729,7 +1712,7 @@ void OMITFP I422ToRGBARow_SSSE3(const uint8* y_buf, |
LABELALIGN |
"1: \n" |
READYUV422 |
- YUVTORGB(kYuvConstants) |
+ YUVTORGB(yuvconstants) |
STORERGBA |
"sub $0x8,%[width] \n" |
"jg 1b \n" |
@@ -1738,7 +1721,7 @@ void OMITFP I422ToRGBARow_SSSE3(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_rgba]"+r"(dst_rgba), // %[dst_rgba] |
[width]"+rm"(width) // %[width] |
- : [kYuvConstants]"r"(&kYuvConstants.kUVToB) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
@@ -1788,6 +1771,7 @@ void OMITFP I422ToBGRARow_AVX2(const uint8* y_buf, |
const uint8* u_buf, |
const uint8* v_buf, |
uint8* dst_bgra, |
+ struct YuvConstants* yuvconstants, |
int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
@@ -1795,7 +1779,7 @@ void OMITFP I422ToBGRARow_AVX2(const uint8* y_buf, |
LABELALIGN |
"1: \n" |
READYUV422_AVX2 |
- YUVTORGB_AVX2(kYuvConstants) |
+ YUVTORGB_AVX2(yuvconstants) |
// Step 3: Weave into BGRA |
"vpunpcklbw %%ymm0,%%ymm1,%%ymm1 \n" // GB |
@@ -1816,29 +1800,29 @@ void OMITFP I422ToBGRARow_AVX2(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_bgra]"+r"(dst_bgra), // %[dst_bgra] |
[width]"+rm"(width) // %[width] |
- : [kYuvConstants]"r"(&kYuvConstants.kUVToB) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
} |
#endif // HAS_I422TOBGRAROW_AVX2 |
-#if defined(HAS_I422TOARGBMATRIXROW_AVX2) |
+#if defined(HAS_I422TOARGBROW_AVX2) |
// 16 pixels |
// 8 UV values upsampled to 16 UV, mixed with 16 Y producing 16 ARGB (64 bytes). |
-void OMITFP I422ToARGBMatrixRow_AVX2(const uint8* y_buf, |
- const uint8* u_buf, |
- const uint8* v_buf, |
- uint8* dst_argb, |
- struct YuvConstants* YuvConstants, |
- int width) { |
+void OMITFP I422ToARGBRow_AVX2(const uint8* y_buf, |
+ const uint8* u_buf, |
+ const uint8* v_buf, |
+ uint8* dst_argb, |
+ struct YuvConstants* yuvconstants, |
+ int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
"vpcmpeqb %%ymm5,%%ymm5,%%ymm5 \n" |
LABELALIGN |
"1: \n" |
READYUV422_AVX2 |
- YUVTORGB_AVX2(kYuvConstants) |
+ YUVTORGB_AVX2(yuvconstants) |
// Step 3: Weave into ARGB |
"vpunpcklbw %%ymm1,%%ymm0,%%ymm0 \n" // BG |
@@ -1859,29 +1843,29 @@ void OMITFP I422ToARGBMatrixRow_AVX2(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_argb]"+r"(dst_argb), // %[dst_argb] |
[width]"+rm"(width) // %[width] |
- : [kYuvConstants]"r"(YuvConstants) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
} |
-#endif // HAS_I422TOARGBMATRIXROW_AVX2 |
+#endif // HAS_I422TOARGBROW_AVX2 |
#if defined(HAS_I422TOABGRROW_AVX2) |
// 16 pixels |
// 8 UV values upsampled to 16 UV, mixed with 16 Y producing 16 ABGR (64 bytes). |
-void OMITFP I422ToABGRMatrixRow_AVX2(const uint8* y_buf, |
- const uint8* u_buf, |
- const uint8* v_buf, |
- uint8* dst_argb, |
- struct YuvConstants* YuvConstants, |
- int width) { |
+void OMITFP I422ToABGRRow_AVX2(const uint8* y_buf, |
+ const uint8* u_buf, |
+ const uint8* v_buf, |
+ uint8* dst_argb, |
+ struct YuvConstants* yuvconstants, |
+ int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
"vpcmpeqb %%ymm5,%%ymm5,%%ymm5 \n" |
LABELALIGN |
"1: \n" |
READYUV422_AVX2 |
- YUVTORGB_AVX2(kYuvConstants) |
+ YUVTORGB_AVX2(yuvconstants) |
// Step 3: Weave into ABGR |
"vpunpcklbw %%ymm1,%%ymm2,%%ymm1 \n" // RG |
@@ -1901,7 +1885,7 @@ void OMITFP I422ToABGRMatrixRow_AVX2(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_argb]"+r"(dst_argb), // %[dst_argb] |
[width]"+rm"(width) // %[width] |
- : [kYuvConstants]"r"(YuvConstants) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |
@@ -1915,6 +1899,7 @@ void OMITFP I422ToRGBARow_AVX2(const uint8* y_buf, |
const uint8* u_buf, |
const uint8* v_buf, |
uint8* dst_argb, |
+ struct YuvConstants* yuvconstants, |
int width) { |
asm volatile ( |
"sub %[u_buf],%[v_buf] \n" |
@@ -1922,7 +1907,7 @@ void OMITFP I422ToRGBARow_AVX2(const uint8* y_buf, |
LABELALIGN |
"1: \n" |
READYUV422_AVX2 |
- YUVTORGB_AVX2(kYuvConstants) |
+ YUVTORGB_AVX2(yuvconstants) |
// Step 3: Weave into RGBA |
"vpunpcklbw %%ymm2,%%ymm1,%%ymm1 \n" |
@@ -1942,7 +1927,7 @@ void OMITFP I422ToRGBARow_AVX2(const uint8* y_buf, |
[v_buf]"+r"(v_buf), // %[v_buf] |
[dst_argb]"+r"(dst_argb), // %[dst_argb] |
[width]"+rm"(width) // %[width] |
- : [kYuvConstants]"r"(&kYuvConstants.kUVToB) // %[kYuvConstants] |
+ : [yuvconstants]"r"(yuvconstants) // %[yuvconstants] |
: "memory", "cc", NACL_R14 |
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5" |
); |