Message ID | ZNGUG6ImNlP70KVH@humpty.home.comstyle.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel] lsws/ppc/yuv2rgb_altivec: Fix build in non-VSX environments with Clang | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
Just FYI, we have had this in the OpenBSD and FreeBSD packages for quite awhile to be able to build on powerpc64. On 2023-08-07 9:02 p.m., Brad Smith wrote: > lsws/ppc/yuv2rgb_altivec: Fix build in non-VSX environments with Clang > > libswscale/ppc/yuv2rgb_altivec.c:288:36: error: redeclaration of 'vec_xl' must have the 'overloadable' attribute > --- > libswscale/ppc/yuv2rgb_altivec.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c > index 5e1033a973..6ef2441d8a 100644 > --- a/libswscale/ppc/yuv2rgb_altivec.c > +++ b/libswscale/ppc/yuv2rgb_altivec.c > @@ -284,7 +284,7 @@ static inline void cvtyuvtoRGB(SwsContext *c, vector signed short Y, > * ------------------------------------------------------------------------------ > */ > > -#if !HAVE_VSX > +#if !HAVE_VSX && !defined(__clang__) > static inline vector unsigned char vec_xl(signed long long offset, const ubyte *addr) > { > const vector unsigned char *v_addr = (const vector unsigned char *) (addr + offset); > @@ -292,7 +292,7 @@ static inline vector unsigned char vec_xl(signed long long offset, const ubyte * > > return (vector unsigned char) vec_perm(v_addr[0], v_addr[1], align_perm); > } > -#endif /* !HAVE_VSX */ > +#endif /* !HAVE_VSX && !__clang__ */ > > #define DEFCSP420_CVT(name, out_pixels) \ > static int altivec_ ## name(SwsContext *c, const unsigned char **in, \
On Mon, Aug 07, 2023 at 09:02:19PM -0400, Brad Smith wrote: > lsws/ppc/yuv2rgb_altivec: Fix build in non-VSX environments with Clang > > libswscale/ppc/yuv2rgb_altivec.c:288:36: error: redeclaration of 'vec_xl' must have the 'overloadable' attribute > --- > libswscale/ppc/yuv2rgb_altivec.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c > index 5e1033a973..6ef2441d8a 100644 > --- a/libswscale/ppc/yuv2rgb_altivec.c > +++ b/libswscale/ppc/yuv2rgb_altivec.c > @@ -284,7 +284,7 @@ static inline void cvtyuvtoRGB(SwsContext *c, vector signed short Y, > * ------------------------------------------------------------------------------ > */ > > -#if !HAVE_VSX > +#if !HAVE_VSX && !defined(__clang__) > static inline vector unsigned char vec_xl(signed long long offset, const ubyte *addr) > { > const vector unsigned char *v_addr = (const vector unsigned char *) (addr + offset); > @@ -292,7 +292,7 @@ static inline vector unsigned char vec_xl(signed long long offset, const ubyte * > > return (vector unsigned char) vec_perm(v_addr[0], v_addr[1], align_perm); > } > -#endif /* !HAVE_VSX */ > +#endif /* !HAVE_VSX && !__clang__ */ Iam not altivec maintainer but i think the correct way to do this is to test for vec_xl() in configure and have some sort of HAVE_VEC_XL thats more robust than such chain of conditional checks thx [...]
diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c index 5e1033a973..6ef2441d8a 100644 --- a/libswscale/ppc/yuv2rgb_altivec.c +++ b/libswscale/ppc/yuv2rgb_altivec.c @@ -284,7 +284,7 @@ static inline void cvtyuvtoRGB(SwsContext *c, vector signed short Y, * ------------------------------------------------------------------------------ */ -#if !HAVE_VSX +#if !HAVE_VSX && !defined(__clang__) static inline vector unsigned char vec_xl(signed long long offset, const ubyte *addr) { const vector unsigned char *v_addr = (const vector unsigned char *) (addr + offset); @@ -292,7 +292,7 @@ static inline vector unsigned char vec_xl(signed long long offset, const ubyte * return (vector unsigned char) vec_perm(v_addr[0], v_addr[1], align_perm); } -#endif /* !HAVE_VSX */ +#endif /* !HAVE_VSX && !__clang__ */ #define DEFCSP420_CVT(name, out_pixels) \ static int altivec_ ## name(SwsContext *c, const unsigned char **in, \