Older nasm versions have trouble assembling some of our AVX code. Protect
these sections by preprocessor macros to allow compilation to pass.
---
libavcodec/x86/fft_mmx.asm | 8 ++++++++
libavcodec/x86/fft_sse.c | 2 ++
libavcodec/x86/h264_deblock_10bit.asm | 4 ++++
libavcodec/x86/h264dsp_mmx.c | 2 ++
4 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/libavcodec/x86/fft_mmx.asm b/libavcodec/x86/fft_mmx.asm
index fc5cb98..f67f2f0 100644
--- a/libavcodec/x86/fft_mmx.asm
+++ b/libavcodec/x86/fft_mmx.asm
@@ -299,6 +299,7 @@ IF%1 mova Z(1), m5
INIT_YMM
+%ifdef HAVE_AVX
align 16
fft8_avx:
mova m0, Z(0)
@@ -387,6 +388,7 @@ fft32_interleave_avx:
sub r2d, mmsize/4
jg .deint_loop
ret
+%endif
INIT_XMM
%define movdqa movaps
@@ -532,6 +534,7 @@ DEFINE_ARGS z, w, n, o1, o3
INIT_YMM
+%ifdef HAVE_AVX
%macro INTERL_AVX 5
vunpckhps %3, %2, %1
vunpcklps %2, %2, %1
@@ -545,6 +548,7 @@ INIT_YMM
DECL_PASS pass_avx, PASS_BIG 1
DECL_PASS pass_interleave_avx, PASS_BIG 0
+%endif
INIT_XMM
@@ -634,8 +638,10 @@ cglobal fft_dispatch%3%2, 2,5,8, z, nbits
RET
%endmacro ; DECL_FFT
+%ifdef HAVE_AVX
DECL_FFT 6, _avx
DECL_FFT 6, _avx, _interleave
+%endif
DECL_FFT 5, _sse
DECL_FFT 5, _sse, _interleave
DECL_FFT 4, _3dn
@@ -847,4 +853,6 @@ DECL_IMDCT _sse, POSROTATESHUF
INIT_YMM
+%ifdef HAVE_AVX
DECL_IMDCT _avx, POSROTATESHUF_AVX
+%endif
diff --git a/libavcodec/x86/fft_sse.c b/libavcodec/x86/fft_sse.c
index 5b52988..a83c140 100644
--- a/libavcodec/x86/fft_sse.c
+++ b/libavcodec/x86/fft_sse.c
@@ -30,10 +30,12 @@ void ff_fft_dispatch_sse(FFTComplex *z, int nbits);
void ff_fft_dispatch_interleave_sse(FFTComplex *z, int nbits);
void ff_fft_dispatch_interleave_avx(FFTComplex *z, int nbits);
+#if HAVE_AVX
void ff_fft_calc_avx(FFTContext *s, FFTComplex *z)
{
ff_fft_dispatch_interleave_avx(z, s->nbits);
}
+#endif
void ff_fft_calc_sse(FFTContext *s, FFTComplex *z)
{
diff --git a/libavcodec/x86/h264_deblock_10bit.asm
b/libavcodec/x86/h264_deblock_10bit.asm
index f5a13f1..c373f65 100644
--- a/libavcodec/x86/h264_deblock_10bit.asm
+++ b/libavcodec/x86/h264_deblock_10bit.asm
@@ -418,10 +418,12 @@ cglobal deblock_h_luma_10_%1, 5,7,15
%endmacro
INIT_XMM
+%ifdef HAVE_AVX
DEBLOCK_LUMA_64 sse2
INIT_AVX
DEBLOCK_LUMA_64 avx
%endif
+%endif
%macro SWAPMOVA 2
%ifid %1
@@ -904,7 +906,9 @@ cglobal deblock_v_chroma_intra_10_%1,
4,6-(mmsize/16),8*(mmsize/16)
INIT_MMX
DEBLOCK_CHROMA mmxext
%endif
+%ifdef HAVE_AVX
INIT_XMM
DEBLOCK_CHROMA sse2
INIT_AVX
DEBLOCK_CHROMA avx
+%endif
diff --git a/libavcodec/x86/h264dsp_mmx.c b/libavcodec/x86/h264dsp_mmx.c
index 01b1116..aa30322 100644
--- a/libavcodec/x86/h264dsp_mmx.c
+++ b/libavcodec/x86/h264dsp_mmx.c
@@ -416,6 +416,7 @@ void ff_h264dsp_init_x86(H264DSPContext *c, const int
bit_depth)
c->h264_v_loop_filter_luma_intra =
ff_deblock_v_luma_intra_10_mmxext;
c->h264_h_loop_filter_luma_intra =
ff_deblock_h_luma_intra_10_mmxext;
#endif
+#if HAVE_AVX
if (mm_flags&AV_CPU_FLAG_SSE2) {
c->h264_v_loop_filter_chroma= ff_deblock_v_chroma_10_sse2;
c->h264_v_loop_filter_chroma_intra=
ff_deblock_v_chroma_intra_10_sse2;
@@ -436,6 +437,7 @@ void ff_h264dsp_init_x86(H264DSPContext *c, const int
bit_depth)
c->h264_h_loop_filter_luma_intra =
ff_deblock_h_luma_intra_10_avx;
#endif
}
+#endif /* HAVE_AVX */
}
}
#endif
--
1.7.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel