diff mbox series

[FFmpeg-devel] lsws/ppc/yuv2rgb_altivec: Fix build in non-VSX environments with Clang

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

Checks

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

Commit Message

Brad Smith Aug. 8, 2023, 1:02 a.m. UTC
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(-)

Comments

Brad Smith Aug. 11, 2023, 11:49 p.m. UTC | #1
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,          \
Michael Niedermayer Aug. 12, 2023, 3:19 p.m. UTC | #2
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 mbox series

Patch

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,          \