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