---
 arch.mak                          |  1 +
 libavutil/ppc/Makefile            |  2 ++
 libavutil/ppc/float_dsp_altivec.c |  2 +-
 libavutil/ppc/float_dsp_init.c    | 26 +++++++++++++++++---------
 4 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/arch.mak b/arch.mak
index 4bfc883..720062a 100644
--- a/arch.mak
+++ b/arch.mak
@@ -5,6 +5,7 @@ OBJS-$(HAVE_VFP)     += $(VFP-OBJS)     $(VFP-OBJS-yes)
 OBJS-$(HAVE_NEON)    += $(NEON-OBJS)    $(NEON-OBJS-yes)
 
 OBJS-$(HAVE_ALTIVEC) += $(ALTIVEC-OBJS) $(ALTIVEC-OBJS-yes)
+OBJS-$(HAVE_VSX)     += $(VSX-OBJS) $(VSX-OBJS-yes)
 
 OBJS-$(HAVE_MMX)     += $(MMX-OBJS)     $(MMX-OBJS-yes)
 OBJS-$(HAVE_YASM)    += $(YASM-OBJS)    $(YASM-OBJS-yes)
diff --git a/libavutil/ppc/Makefile b/libavutil/ppc/Makefile
index 4fd8d6d..a0febf8 100644
--- a/libavutil/ppc/Makefile
+++ b/libavutil/ppc/Makefile
@@ -2,3 +2,5 @@ OBJS += ppc/cpu.o                                               
        \
         ppc/float_dsp_init.o                                            \
 
 ALTIVEC-OBJS += ppc/float_dsp_altivec.o                                 \
+
+VSX-OBJS     += ppc/float_dsp_vsx.o                                     \
diff --git a/libavutil/ppc/float_dsp_altivec.c 
b/libavutil/ppc/float_dsp_altivec.c
index 40b097a..f6918e1 100644
--- a/libavutil/ppc/float_dsp_altivec.c
+++ b/libavutil/ppc/float_dsp_altivec.c
@@ -98,7 +98,7 @@ void ff_vector_fmul_reverse_altivec(float *dst, const float 
*src0,
                                     const float *src1, int len)
 {
     int i;
-    vec_f d, s0, s1, h0, l0, s2, s3
+    vec_f d, s0, s1, h0, l0, s2, s3;
     vec_f zero = (vec_f)vec_splat_u32(0);
 
     src1 += len-4;
diff --git a/libavutil/ppc/float_dsp_init.c b/libavutil/ppc/float_dsp_init.c
index e81dc7a..4407962 100644
--- a/libavutil/ppc/float_dsp_init.c
+++ b/libavutil/ppc/float_dsp_init.c
@@ -24,18 +24,26 @@
 #include "libavutil/float_dsp.h"
 #include "libavutil/ppc/cpu.h"
 #include "float_dsp_altivec.h"
+#include "float_dsp_vsx.h"
 
 av_cold void ff_float_dsp_init_ppc(AVFloatDSPContext *fdsp, int bit_exact)
 {
-    if (!PPC_ALTIVEC(av_get_cpu_flags()))
-        return;
-#if HAVE_BIGENDIAN
-    fdsp->vector_fmul = ff_vector_fmul_altivec;
-    fdsp->vector_fmul_add = ff_vector_fmul_add_altivec;
-    fdsp->vector_fmul_reverse = ff_vector_fmul_reverse_altivec;
+    if (HAVE_BIGENDIAN && PPC_ALTIVEC(av_get_cpu_flags())) {
+        fdsp->vector_fmul = ff_vector_fmul_altivec;
+        fdsp->vector_fmul_add = ff_vector_fmul_add_altivec;
+        fdsp->vector_fmul_reverse = ff_vector_fmul_reverse_altivec;
 
-    if (!bit_exact) {
-        fdsp->vector_fmul_window = ff_vector_fmul_window_altivec;
+        if (!bit_exact) {
+            fdsp->vector_fmul_window = ff_vector_fmul_window_altivec;
+        }
+    }
+    if (PPC_VSX(av_get_cpu_flags())) {
+        fdsp->vector_fmul = ff_vector_fmul_vsx;
+        fdsp->vector_fmul_add = ff_vector_fmul_add_vsx;
+        fdsp->vector_fmul_reverse = ff_vector_fmul_reverse_vsx;
+
+        if (!bit_exact) {
+            fdsp->vector_fmul_window = ff_vector_fmul_window_vsx;
+        }
     }
-#endif
 }
-- 
1.9.0

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to