swscale: Fix AltiVec/VSX build with recent GCC
authorDaniel Kolesa <daniel@octaforge.org>
Wed, 7 Aug 2019 17:39:07 +0000 (19:39 +0200)
committerLauri Kasanen <cand@gmx.com>
Fri, 4 Oct 2019 05:58:17 +0000 (08:58 +0300)
The argument to vec_splat_u16 must be a literal. By making the
function always inline and marking the arguments const, gcc can
turn those into literals, and avoid build errors like:

swscale_vsx.c:165:53: error: argument 1 must be a 5-bit signed literal

Fixes #7861.

Signed-off-by: Daniel Kolesa <daniel@octaforge.org>
Signed-off-by: Lauri Kasanen <cand@gmx.com>
libswscale/ppc/swscale_vsx.c

index e6a35d3..af8b0e1 100644 (file)
@@ -154,8 +154,10 @@ static void yuv2plane1_nbps_u(const int16_t *src, uint16_t *dest, int dstW,
     }
 }
 
-static void yuv2plane1_nbps_vsx(const int16_t *src, uint16_t *dest, int dstW,
-                           int big_endian, int output_bits)
+static av_always_inline void yuv2plane1_nbps_vsx(const int16_t *src,
+                                                 uint16_t *dest, int dstW,
+                                                 const int big_endian,
+                                                 const int output_bits)
 {
     const int dst_u = -(uintptr_t)dest & 7;
     const int shift = 15 - output_bits;
@@ -273,8 +275,10 @@ static void yuv2plane1_16_u(const int32_t *src, uint16_t *dest, int dstW,
     }
 }
 
-static void yuv2plane1_16_vsx(const int32_t *src, uint16_t *dest, int dstW,
-                           int big_endian, int output_bits)
+static av_always_inline void yuv2plane1_16_vsx(const int32_t *src,
+                                               uint16_t *dest, int dstW,
+                                               const int big_endian,
+                                               int output_bits)
 {
     const int dst_u = -(uintptr_t)dest & 7;
     const int shift = 3;