1 Always build libyuv x86 optimizations with Clang.
3 diff --git media/libyuv/libyuv/include/libyuv/compare_row.h media/libyuv/libyuv/include/libyuv/compare_row.h
4 index 7abc2d4aef8f..542df1ef504b 100644
5 --- media/libyuv/libyuv/include/libyuv/compare_row.h
6 +++ media/libyuv/libyuv/include/libyuv/compare_row.h
7 @@ -19,7 +19,7 @@ extern "C" {
10 #if defined(__pnacl__) || defined(__CLR_VER) || \
11 - (defined(__i386__) && !defined(__SSE2__))
12 + (defined(__i386__) && !defined(__SSE__) && !defined(__clang__))
13 #define LIBYUV_DISABLE_X86
15 // MemorySanitizer does not support assembly code yet. http://crbug.com/344505
16 diff --git media/libyuv/libyuv/include/libyuv/planar_functions.h media/libyuv/libyuv/include/libyuv/planar_functions.h
17 index 040839c211b1..5f6a8034d209 100644
18 --- media/libyuv/libyuv/include/libyuv/planar_functions.h
19 +++ media/libyuv/libyuv/include/libyuv/planar_functions.h
20 @@ -720,7 +720,7 @@ int I420Interpolate(const uint8* src0_y,
23 #if defined(__pnacl__) || defined(__CLR_VER) || \
24 - (defined(__i386__) && !defined(__SSE2__))
25 + (defined(__i386__) && !defined(__SSE__) && !defined(__clang__))
26 #define LIBYUV_DISABLE_X86
28 // MemorySanitizer does not support assembly code yet. http://crbug.com/344505
29 diff --git media/libyuv/libyuv/include/libyuv/rotate_row.h media/libyuv/libyuv/include/libyuv/rotate_row.h
30 index 2c51584eee8b..8e60a713c4cf 100644
31 --- media/libyuv/libyuv/include/libyuv/rotate_row.h
32 +++ media/libyuv/libyuv/include/libyuv/rotate_row.h
33 @@ -19,7 +19,7 @@ extern "C" {
36 #if defined(__pnacl__) || defined(__CLR_VER) || \
37 - (defined(__i386__) && !defined(__SSE2__))
38 + (defined(__i386__) && !defined(__SSE__) && !defined(__clang__))
39 #define LIBYUV_DISABLE_X86
41 // MemorySanitizer does not support assembly code yet. http://crbug.com/344505
42 diff --git media/libyuv/libyuv/include/libyuv/row.h media/libyuv/libyuv/include/libyuv/row.h
43 index f74bd9f7d17a..b8f674ba124d 100644
44 --- media/libyuv/libyuv/include/libyuv/row.h
45 +++ media/libyuv/libyuv/include/libyuv/row.h
46 @@ -31,7 +31,7 @@ extern "C" {
49 #if defined(__pnacl__) || defined(__CLR_VER) || \
50 - (defined(__i386__) && !defined(__SSE2__))
51 + (defined(__i386__) && !defined(__SSE__) && !defined(__clang__))
52 #define LIBYUV_DISABLE_X86
54 // MemorySanitizer does not support assembly code yet. http://crbug.com/344505
55 diff --git media/libyuv/libyuv/include/libyuv/scale_row.h media/libyuv/libyuv/include/libyuv/scale_row.h
56 index edb46cc8c647..2b2c7a0700ef 100644
57 --- media/libyuv/libyuv/include/libyuv/scale_row.h
58 +++ media/libyuv/libyuv/include/libyuv/scale_row.h
59 @@ -20,7 +20,7 @@ extern "C" {
62 #if defined(__pnacl__) || defined(__CLR_VER) || \
63 - (defined(__i386__) && !defined(__SSE2__))
64 + (defined(__i386__) && !defined(__SSE__) && !defined(__clang__))
65 #define LIBYUV_DISABLE_X86
67 // MemorySanitizer does not support assembly code yet. http://crbug.com/344505
68 diff --git media/libyuv/libyuv/linux.mk media/libyuv/libyuv/linux.mk
69 index 923345ae4d12..9e555e303913 100644
70 --- media/libyuv/libyuv/linux.mk
71 +++ media/libyuv/libyuv/linux.mk
72 @@ -80,4 +80,4 @@ cpuid: util/cpuid.c libyuv.a
73 $(CC) $(CFLAGS) -o $@ util/cpuid.c libyuv.a
76 - /bin/rm -f source/*.o *.ii *.s libyuv.a convert cpuid psnr
77 + /bin/rm -f source/*.o *.ii *.s libyuv.a yuvconvert cpuid psnr
78 diff --git media/libyuv/libyuv/source/row_gcc.cc media/libyuv/libyuv/source/row_gcc.cc
79 index 8735070b619d..9df8c6a627db 100644
80 --- media/libyuv/libyuv/source/row_gcc.cc
81 +++ media/libyuv/libyuv/source/row_gcc.cc
82 @@ -5479,7 +5479,7 @@ void HalfFloatRow_SSE2(const uint16* src, uint16* dst, float scale, int width) {
86 - : "x"(scale * kScaleBias) // %3
87 + : "mx"(scale * kScaleBias) // %3
89 "xmm2", "xmm3", "xmm4", "xmm5"
91 @@ -5515,7 +5515,7 @@ void HalfFloatRow_AVX2(const uint16* src, uint16* dst, float scale, int width) {
95 - : "x"(scale * kScaleBias) // %3
96 + : "mx"(scale * kScaleBias) // %3
98 "xmm2", "xmm3", "xmm4", "xmm5"
100 @@ -5548,7 +5548,7 @@ void HalfFloatRow_F16C(const uint16* src, uint16* dst, float scale, int width) {
105 + : "mx"(scale) // %3
107 "xmm2", "xmm3", "xmm4"