Commit 6d083e2d authored by Frank Barchard's avatar Frank Barchard

clang 6 build disable some msa functions

R=kjellander@chromium.org

Bug: libyuv:715
Test: gn gen out/Release "--args=is_debug=false target_os=\"android\" target_cpu=\"mips64el\" mips_arch_variant=\"r6\" mips_use_msa=true is_component_build=true is_clang=true"
Change-Id: Ia3943b0afc02e05a8bc32350719b296b0b9d5479
Reviewed-on: https://chromium-review.googlesource.com/592720Reviewed-by: 's avatarCheng Wang <wangcheng@google.com>
parent cd2f8866
Name: libyuv
URL: http://code.google.com/p/libyuv/
Version: 1662
Version: 1663
License: BSD
License File: LICENSE
......
......@@ -75,6 +75,11 @@ extern "C" {
#define VISUALC_HAS_AVX2 1
#endif // VisualStudio >= 2012
// clang 6 mips issue https://bugs.chromium.org/p/libyuv/issues/detail?id=715
#if defined(__clang__)
#define DISABLE_CLANG_MSA 1
#endif
// The following are available on all x86 platforms:
#if !defined(LIBYUV_DISABLE_X86) && \
(defined(_M_IX86) || defined(__x86_64__) || defined(__i386__))
......@@ -385,72 +390,75 @@ extern "C" {
#endif
#if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa)
#define HAS_ARGB4444TOARGBROW_MSA
#define HAS_ARGBADDROW_MSA
#define HAS_ARGBATTENUATEROW_MSA
#define HAS_ARGBGRAYROW_MSA
#define HAS_ARGBMIRRORROW_MSA
#define HAS_ARGBMULTIPLYROW_MSA
#define HAS_ARGBSHADEROW_MSA
#define HAS_ARGBSHUFFLEROW_MSA
#define HAS_ARGBSUBTRACTROW_MSA
#define HAS_ARGBTOARGB1555ROW_MSA
#define HAS_ARGBTOARGB4444ROW_MSA
#define HAS_ARGBTORAWROW_MSA
#define HAS_ARGBTORGB24ROW_MSA
#define HAS_ARGBTORGB565ROW_MSA
#define HAS_I422TOUYVYROW_MSA
#define HAS_I422TOYUY2ROW_MSA
#define HAS_INTERPOLATEROW_MSA
#define HAS_MERGEUVROW_MSA
#define HAS_MIRRORROW_MSA
#define HAS_RAWTORGB24ROW_MSA
#define HAS_SOBELTOPLANEROW_MSA
#define HAS_UYVYTOUVROW_MSA
#define HAS_UYVYTOYROW_MSA
#define HAS_YUY2TOUV422ROW_MSA
#define HAS_YUY2TOUVROW_MSA
#define HAS_YUY2TOYROW_MSA
#define HAS_ARGB4444TOARGBROW_MSA
#define HAS_ARGBTOYROW_MSA
#ifndef DISABLE_CLANG_MSA
#define HAS_ABGRTOUVROW_MSA
#define HAS_ABGRTOYROW_MSA
#define HAS_ARGB1555TOARGBROW_MSA
#define HAS_ARGB1555TOUVROW_MSA
#define HAS_ARGB1555TOYROW_MSA
#define HAS_ARGBSEPIAROW_MSA
#define HAS_ARGBSETROW_MSA
#define HAS_ARGBTORGB565DITHERROW_MSA
#define HAS_ARGBTOUV444ROW_MSA
#define HAS_ARGBTOUVJROW_MSA
#define HAS_ARGBTOUVROW_MSA
#define HAS_I422TOARGBROW_MSA
#define HAS_I422TORGBAROW_MSA
#define HAS_ARGBTOYJROW_MSA
#define HAS_ARGBTOYROW_MSA
#define HAS_BGRATOUVROW_MSA
#define HAS_BGRATOYROW_MSA
#define HAS_I400TOARGBROW_MSA
#define HAS_I422ALPHATOARGBROW_MSA
#define HAS_I422TOARGBROW_MSA
#define HAS_I422TORGB24ROW_MSA
#define HAS_ARGBTORGB24ROW_MSA
#define HAS_ARGBTORAWROW_MSA
#define HAS_ARGBTORGB565ROW_MSA
#define HAS_ARGBTOARGB1555ROW_MSA
#define HAS_ARGBTOARGB4444ROW_MSA
#define HAS_ARGBTOUV444ROW_MSA
#define HAS_ARGBMULTIPLYROW_MSA
#define HAS_ARGBADDROW_MSA
#define HAS_ARGBSUBTRACTROW_MSA
#define HAS_ARGBATTENUATEROW_MSA
#define HAS_ARGBTORGB565DITHERROW_MSA
#define HAS_ARGBSHUFFLEROW_MSA
#define HAS_ARGBSHADEROW_MSA
#define HAS_ARGBGRAYROW_MSA
#define HAS_ARGBSEPIAROW_MSA
#define HAS_ARGB1555TOARGBROW_MSA
#define HAS_RGB565TOARGBROW_MSA
#define HAS_RGB24TOARGBROW_MSA
#define HAS_RAWTOARGBROW_MSA
#define HAS_ARGB1555TOYROW_MSA
#define HAS_RGB565TOYROW_MSA
#define HAS_RGB24TOYROW_MSA
#define HAS_RAWTOYROW_MSA
#define HAS_ARGB1555TOUVROW_MSA
#define HAS_RGB565TOUVROW_MSA
#define HAS_RGB24TOUVROW_MSA
#define HAS_RAWTOUVROW_MSA
#define HAS_I422TORGBAROW_MSA
#define HAS_I444TOARGBROW_MSA
#define HAS_J400TOARGBROW_MSA
#define HAS_NV12TOARGBROW_MSA
#define HAS_NV12TORGB565ROW_MSA
#define HAS_NV21TOARGBROW_MSA
#define HAS_RAWTOARGBROW_MSA
#define HAS_RAWTOUVROW_MSA
#define HAS_RAWTOYROW_MSA
#define HAS_RGB24TOARGBROW_MSA
#define HAS_RGB24TOUVROW_MSA
#define HAS_RGB24TOYROW_MSA
#define HAS_RGB565TOARGBROW_MSA
#define HAS_RGB565TOUVROW_MSA
#define HAS_RGB565TOYROW_MSA
#define HAS_RGBATOUVROW_MSA
#define HAS_RGBATOYROW_MSA
#define HAS_SOBELROW_MSA
#define HAS_SOBELTOPLANEROW_MSA
#define HAS_SOBELXYROW_MSA
#define HAS_ARGBTOYJROW_MSA
#define HAS_BGRATOYROW_MSA
#define HAS_ABGRTOYROW_MSA
#define HAS_RGBATOYROW_MSA
#define HAS_ARGBTOUVJROW_MSA
#define HAS_BGRATOUVROW_MSA
#define HAS_ABGRTOUVROW_MSA
#define HAS_RGBATOUVROW_MSA
#define HAS_I444TOARGBROW_MSA
#define HAS_I400TOARGBROW_MSA
#define HAS_J400TOARGBROW_MSA
#define HAS_YUY2TOARGBROW_MSA
#define HAS_UYVYTOARGBROW_MSA
#define HAS_INTERPOLATEROW_MSA
#define HAS_ARGBSETROW_MSA
#define HAS_RAWTORGB24ROW_MSA
#define HAS_MERGEUVROW_MSA
#define HAS_YUY2TOARGBROW_MSA
#endif
#endif
#if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__)
......
......@@ -50,6 +50,11 @@ extern "C" {
#define VISUALC_HAS_AVX2 1
#endif // VisualStudio >= 2012
// clang 6 mips issue https://bugs.chromium.org/p/libyuv/issues/detail?id=715
#if defined(__clang__)
#define DISABLE_CLANG_MSA 1
#endif
// The following are available on all x86 platforms:
#if !defined(LIBYUV_DISABLE_X86) && \
(defined(_M_IX86) || defined(__x86_64__) || defined(__i386__))
......@@ -106,11 +111,13 @@ extern "C" {
#if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa)
#define HAS_SCALEARGBROWDOWN2_MSA
#define HAS_SCALEARGBROWDOWNEVEN_MSA
#define HAS_SCALEROWDOWN2_MSA
#define HAS_SCALEROWDOWN4_MSA
#define HAS_SCALEROWDOWN38_MSA
#define HAS_SCALEADDROW_MSA
#ifndef DISABLE_CLANG_MSA
#define HAS_SCALEARGBROWDOWNEVEN_MSA
#define HAS_SCALEROWDOWN38_MSA
#endif
#endif
// Scale ARGB vertically with bilinear interpolation.
......
......@@ -11,6 +11,6 @@
#ifndef INCLUDE_LIBYUV_VERSION_H_
#define INCLUDE_LIBYUV_VERSION_H_
#define LIBYUV_VERSION 1662
#define LIBYUV_VERSION 1663
#endif // INCLUDE_LIBYUV_VERSION_H_
......@@ -16,6 +16,12 @@
#if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa)
#include "libyuv/macros_msa.h"
// caveat - as of clang 6, some functions do not build under clang.
// The macro DISABLE_CLANG_MSA is set for clang builds to disable
// affected functions.
// __msa_fill_w() is one affected intrinsic.
// See Also: https://bugs.chromium.org/p/libyuv/issues/detail?id=715
#ifdef __cplusplus
namespace libyuv {
extern "C" {
......@@ -367,6 +373,7 @@ void I422ToUYVYRow_MSA(const uint8* src_y,
}
}
#ifndef DISABLE_CLANG_MSA
void I422ToARGBRow_MSA(const uint8* src_y,
const uint8* src_u,
const uint8* src_v,
......@@ -637,6 +644,7 @@ void I422ToARGB1555Row_MSA(const uint8* src_y,
dst_argb1555 += 16;
}
}
#endif
void YUY2ToYRow_MSA(const uint8* src_yuy2, uint8* dst_y, int width) {
int x;
......@@ -768,6 +776,8 @@ void UYVYToUV422Row_MSA(const uint8* src_uyvy,
}
}
#ifndef DISABLE_CLANG_MSA
void ARGBToYRow_MSA(const uint8* src_argb0, uint8* dst_y, int width) {
int x;
v16u8 src0, src1, src2, src3, vec0, vec1, vec2, vec3, dst0;
......@@ -931,6 +941,7 @@ void ARGBToUVRow_MSA(const uint8* src_argb0,
dst_v += 16;
}
}
#endif
void ARGBToRGB24Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width) {
int x;
......@@ -1077,6 +1088,7 @@ void ARGBToARGB4444Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width) {
}
}
#ifndef DISABLE_CLANG_MSA
void ARGBToUV444Row_MSA(const uint8* src_argb,
uint8* dst_u,
uint8* dst_v,
......@@ -1148,6 +1160,7 @@ void ARGBToUV444Row_MSA(const uint8* src_argb,
dst_v += 16;
}
}
#endif
void ARGBMultiplyRow_MSA(const uint8* src_argb0,
const uint8* src_argb1,
......@@ -1295,6 +1308,7 @@ void ARGBAttenuateRow_MSA(const uint8* src_argb, uint8* dst_argb, int width) {
}
}
#ifndef DISABLE_CLANG_MSA
void ARGBToRGB565DitherRow_MSA(const uint8* src_argb,
uint8* dst_rgb,
uint32 dither4,
......@@ -1338,6 +1352,7 @@ void ARGBToRGB565DitherRow_MSA(const uint8* src_argb,
dst_rgb += 16;
}
}
#endif
void ARGBShuffleRow_MSA(const uint8* src_argb,
uint8* dst_argb,
......@@ -1427,6 +1442,7 @@ void ARGBGrayRow_MSA(const uint8* src_argb, uint8* dst_argb, int width) {
}
}
#ifndef DISABLE_CLANG_MSA
void ARGBSepiaRow_MSA(uint8* dst_argb, int width) {
int x;
v16u8 src0, src1, dst0, dst1, vec0, vec1, vec2, vec3, vec4, vec5;
......@@ -1467,6 +1483,7 @@ void ARGBSepiaRow_MSA(uint8* dst_argb, int width) {
dst_argb += 32;
}
}
#endif
void ARGB4444ToARGBRow_MSA(const uint8* src_argb4444,
uint8* dst_argb,
......@@ -1497,6 +1514,7 @@ void ARGB4444ToARGBRow_MSA(const uint8* src_argb4444,
}
}
#ifndef DISABLE_CLANG_MSA
void ARGB1555ToARGBRow_MSA(const uint8* src_argb1555,
uint8* dst_argb,
int width) {
......@@ -2354,6 +2372,7 @@ void SobelRow_MSA(const uint8* src_sobelx,
dst_argb += 64;
}
}
#endif
void SobelToPlaneRow_MSA(const uint8* src_sobelx,
const uint8* src_sobely,
......@@ -2376,6 +2395,7 @@ void SobelToPlaneRow_MSA(const uint8* src_sobelx,
}
}
#ifndef DISABLE_CLANG_MSA
void SobelXYRow_MSA(const uint8* src_sobelx,
const uint8* src_sobely,
uint8* dst_argb,
......@@ -2850,6 +2870,7 @@ void UYVYToARGBRow_MSA(const uint8* src_uyvy,
rgb_buf += 32;
}
}
#endif
void InterpolateRow_MSA(uint8* dst_ptr,
const uint8* src_ptr,
......@@ -2915,15 +2936,17 @@ void InterpolateRow_MSA(uint8* dst_ptr,
}
}
#ifndef DISABLE_CLANG_MSA
void ARGBSetRow_MSA(uint8* dst_argb, uint32 v32, int width) {
int x;
v16u8 dst0 = (v16u8)__msa_fill_w(v32);
v4i32 dst0 = __builtin_msa_fill_w(v32);
for (x = 0; x < width; x += 4) {
ST_UB(dst0, dst_argb);
dst_argb += 16;
}
}
#endif
void RAWToRGB24Row_MSA(const uint8* src_raw, uint8* dst_rgb24, int width) {
int x;
......
......@@ -119,6 +119,7 @@ void ScaleARGBRowDownEven_MSA(const uint8_t* src_argb,
}
}
#ifndef DISABLE_CLANG_MSA
void ScaleARGBRowDownEvenBox_MSA(const uint8* src_argb,
ptrdiff_t src_stride,
int src_stepx,
......@@ -173,6 +174,7 @@ void ScaleARGBRowDownEvenBox_MSA(const uint8* src_argb,
dst_argb += 16;
}
}
#endif
void ScaleRowDown2_MSA(const uint8_t* src_ptr,
ptrdiff_t src_stride,
......@@ -375,6 +377,7 @@ void ScaleRowDown38_MSA(const uint8_t* src_ptr,
}
}
#ifndef DISABLE_CLANG_MSA
void ScaleRowDown38_2_Box_MSA(const uint8_t* src_ptr,
ptrdiff_t src_stride,
uint8_t* dst_ptr,
......@@ -524,6 +527,7 @@ void ScaleRowDown38_3_Box_MSA(const uint8_t* src_ptr,
dst_ptr += 12;
}
}
#endif
void ScaleAddRow_MSA(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width) {
int x;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment