x86_64 always has SSE2, so skip compiling in SIMD-optimized functions
that will always be overridden by variants of the same function done
with more advanced SIMD optimization types.
---
libavcodec/x86/ac3dsp_init.c | 4 ++++
libavcodec/x86/dct_init.c | 2 ++
libavcodec/x86/dsputil_init.c | 14 ++++++++++++--
libavcodec/x86/dsputilenc_mmx.c | 19 ++++++++++++++-----
libavcodec/x86/fmtconvert_init.c | 4 ++++
libavcodec/x86/h264_intrapred_init.c | 20 ++++++++++++++++++--
libavcodec/x86/h264chroma_init.c | 2 ++
libavcodec/x86/h264dsp_init.c | 16 ++++++++++++----
libavcodec/x86/hpeldsp_init.c | 2 ++
libavcodec/x86/motion_est.c | 8 ++++++++
libavcodec/x86/mpegaudiodsp.c | 2 ++
libavcodec/x86/mpegvideo.c | 2 ++
libavcodec/x86/mpegvideoenc.c | 4 +++-
libavcodec/x86/rv34dsp_init.c | 2 ++
libavcodec/x86/rv40dsp_init.c | 8 ++++----
libavcodec/x86/vc1dsp_init.c | 2 ++
libavutil/x86/float_dsp_init.c | 2 ++
libswscale/x86/rgb2rgb.c | 2 ++
18 files changed, 97 insertions(+), 18 deletions(-)
diff --git a/libavcodec/x86/ac3dsp_init.c b/libavcodec/x86/ac3dsp_init.c
index ca10864..9d0a221 100644
--- a/libavcodec/x86/ac3dsp_init.c
+++ b/libavcodec/x86/ac3dsp_init.c
@@ -183,11 +183,14 @@ av_cold void ff_ac3dsp_init_x86(AC3DSPContext *c, int
bit_exact)
int cpu_flags = av_get_cpu_flags();
if (EXTERNAL_MMX(cpu_flags)) {
+#if ARCH_X86_32
c->ac3_exponent_min = ff_ac3_exponent_min_mmx;
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_mmx;
+#endif /* ARCH_X86_32 */
c->ac3_lshift_int16 = ff_ac3_lshift_int16_mmx;
c->ac3_rshift_int32 = ff_ac3_rshift_int32_mmx;
}
+#if ARCH_X86_32
if (EXTERNAL_AMD3DNOW(cpu_flags)) {
if (!bit_exact) {
c->float_to_fixed24 = ff_float_to_fixed24_3dnow;
@@ -200,6 +203,7 @@ av_cold void ff_ac3dsp_init_x86(AC3DSPContext *c, int
bit_exact)
if (EXTERNAL_SSE(cpu_flags)) {
c->float_to_fixed24 = ff_float_to_fixed24_sse;
}
+#endif /* ARCH_X86_32 */
if (EXTERNAL_SSE2(cpu_flags)) {
c->ac3_exponent_min = ff_ac3_exponent_min_sse2;
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_sse2;
diff --git a/libavcodec/x86/dct_init.c b/libavcodec/x86/dct_init.c
index 7bda5e8..16050cd 100644
--- a/libavcodec/x86/dct_init.c
+++ b/libavcodec/x86/dct_init.c
@@ -30,8 +30,10 @@ av_cold void ff_dct_init_x86(DCTContext *s)
{
int cpu_flags = av_get_cpu_flags();
+#if ARCH_X86_32
if (EXTERNAL_SSE(cpu_flags))
s->dct32 = ff_dct32_float_sse;
+#endif /* ARCH_X86_32 */
if (EXTERNAL_SSE2(cpu_flags))
s->dct32 = ff_dct32_float_sse2;
if (EXTERNAL_AVX(cpu_flags))
diff --git a/libavcodec/x86/dsputil_init.c b/libavcodec/x86/dsputil_init.c
index a38cf24..ff0def0 100644
--- a/libavcodec/x86/dsputil_init.c
+++ b/libavcodec/x86/dsputil_init.c
@@ -540,8 +540,10 @@ static av_cold void dsputil_init_mmx(DSPContext *c,
AVCodecContext *avctx,
c->add_pixels_clamped = ff_add_pixels_clamped_mmx;
if (!high_bit_depth) {
+#if ARCH_X86_32
c->clear_block = ff_clear_block_mmx;
c->clear_blocks = ff_clear_blocks_mmx;
+#endif /* ARCH_X86_32 */
c->draw_edges = ff_draw_edges_mmx;
switch (avctx->idct_algo) {
@@ -552,11 +554,13 @@ static av_cold void dsputil_init_mmx(DSPContext *c,
AVCodecContext *avctx,
c->idct = ff_simple_idct_mmx;
c->idct_permutation_type = FF_SIMPLE_IDCT_PERM;
break;
+#if ARCH_X86_32
case FF_IDCT_XVIDMMX:
c->idct_put = ff_idct_xvid_mmx_put;
c->idct_add = ff_idct_xvid_mmx_add;
c->idct = ff_idct_xvid_mmx;
break;
+#endif /* ARCH_X86_32 */
}
}
@@ -571,14 +575,16 @@ static av_cold void dsputil_init_mmx(DSPContext *c,
AVCodecContext *avctx,
c->h263_h_loop_filter = ff_h263_h_loop_filter_mmx;
}
+#if ARCH_X86_32
c->vector_clip_int32 = ff_vector_clip_int32_mmx;
+#endif /* ARCH_X86_32 */
#endif /* HAVE_MMX_EXTERNAL */
}
static av_cold void dsputil_init_mmxext(DSPContext *c, AVCodecContext *avctx,
int cpu_flags)
{
-#if HAVE_MMXEXT_INLINE
+#if HAVE_MMXEXT_INLINE && ARCH_X86_32
const int high_bit_depth = avctx->bits_per_raw_sample > 8;
if (!high_bit_depth && avctx->idct_algo == FF_IDCT_XVIDMMX) {
@@ -586,7 +592,7 @@ static av_cold void dsputil_init_mmxext(DSPContext *c,
AVCodecContext *avctx,
c->idct_add = ff_idct_xvid_mmxext_add;
c->idct = ff_idct_xvid_mmxext;
}
-#endif /* HAVE_MMXEXT_INLINE */
+#endif /* HAVE_MMXEXT_INLINE && ARCH_X86_32 */
#if HAVE_MMXEXT_EXTERNAL
SET_QPEL_FUNCS(avg_qpel, 0, 16, mmxext, );
@@ -601,11 +607,15 @@ static av_cold void dsputil_init_mmxext(DSPContext *c,
AVCodecContext *avctx,
if (!(cpu_flags & AV_CPU_FLAG_3DNOW))
c->add_hfyu_median_prediction = ff_add_hfyu_median_prediction_mmxext;
+#if ARCH_X86_32
c->scalarproduct_int16 = ff_scalarproduct_int16_mmxext;
c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_mmxext;
+#endif /* ARCH_X86_32 */
if (avctx->flags & CODEC_FLAG_BITEXACT) {
+#if ARCH_X86_32
c->apply_window_int16 = ff_apply_window_int16_mmxext;
+#endif /* ARCH_X86_32 */
} else {
c->apply_window_int16 = ff_apply_window_int16_round_mmxext;
}
diff --git a/libavcodec/x86/dsputilenc_mmx.c b/libavcodec/x86/dsputilenc_mmx.c
index a1f80af..b90ce7d 100644
--- a/libavcodec/x86/dsputilenc_mmx.c
+++ b/libavcodec/x86/dsputilenc_mmx.c
@@ -952,8 +952,10 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c,
AVCodecContext *avctx)
int bit_depth = avctx->bits_per_raw_sample;
if (EXTERNAL_MMX(cpu_flags)) {
+#if ARCH_X86_32
if (bit_depth <= 8)
c->get_pixels = ff_get_pixels_mmx;
+#endif /* ARCH_X86_32 */
c->diff_pixels = ff_diff_pixels_mmx;
c->pix_sum = ff_pix_sum16_mmx;
@@ -966,22 +968,25 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c,
AVCodecContext *avctx)
#if HAVE_INLINE_ASM
if (INLINE_MMX(cpu_flags)) {
+#if ARCH_X86_32
if (avctx->bits_per_raw_sample <= 8 &&
(dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX))
c->fdct = ff_fdct_mmx;
- c->diff_bytes= diff_bytes_mmx;
c->sum_abs_dctelem= sum_abs_dctelem_mmx;
+ c->vsad[4] = vsad_intra16_mmx;
+ if (!(avctx->flags & CODEC_FLAG_BITEXACT))
+ c->vsad[0] = vsad16_mmx;
+#endif /* ARCH_X86_32 */
+
+ c->diff_bytes = diff_bytes_mmx;
+
c->sse[0] = sse16_mmx;
c->sse[1] = sse8_mmx;
- c->vsad[4]= vsad_intra16_mmx;
c->nsse[0] = nsse16_mmx;
c->nsse[1] = nsse8_mmx;
- if(!(avctx->flags & CODEC_FLAG_BITEXACT)){
- c->vsad[0] = vsad16_mmx;
- }
if(!(avctx->flags & CODEC_FLAG_BITEXACT)){
c->try_8x8basis= try_8x8basis_mmx;
@@ -999,11 +1004,13 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c,
AVCodecContext *avctx)
}
if (INLINE_MMXEXT(cpu_flags)) {
+#if ARCH_X86_32
if (avctx->bits_per_raw_sample <= 8 &&
(dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX))
c->fdct = ff_fdct_mmxext;
c->sum_abs_dctelem = sum_abs_dctelem_mmxext;
+#endif /* ARCH_X86_32 */
c->vsad[4] = vsad_intra16_mmxext;
if (!(avctx->flags & CODEC_FLAG_BITEXACT)){
@@ -1032,6 +1039,7 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c,
AVCodecContext *avctx)
#endif
#endif /* HAVE_INLINE_ASM */
+#if ARCH_X86_32 || !HAVE_ALIGNED_STACK
if (EXTERNAL_MMX(cpu_flags)) {
c->hadamard8_diff[0] = ff_hadamard8_diff16_mmx;
c->hadamard8_diff[1] = ff_hadamard8_diff_mmx;
@@ -1041,6 +1049,7 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c,
AVCodecContext *avctx)
c->hadamard8_diff[0] = ff_hadamard8_diff16_mmxext;
c->hadamard8_diff[1] = ff_hadamard8_diff_mmxext;
}
+#endif /* ARCH_X86_32 || !HAVE_ALIGNED_STACK */
if (EXTERNAL_SSE2(cpu_flags)) {
c->sse[0] = ff_sse16_sse2;
diff --git a/libavcodec/x86/fmtconvert_init.c b/libavcodec/x86/fmtconvert_init.c
index 3d75df9..09bc566 100644
--- a/libavcodec/x86/fmtconvert_init.c
+++ b/libavcodec/x86/fmtconvert_init.c
@@ -118,6 +118,7 @@ av_cold void ff_fmt_convert_init_x86(FmtConvertContext *c,
AVCodecContext *avctx
#if HAVE_YASM
int cpu_flags = av_get_cpu_flags();
+#if ARCH_X86_32
if (EXTERNAL_MMX(cpu_flags)) {
c->float_interleave = float_interleave_mmx;
}
@@ -132,10 +133,13 @@ av_cold void ff_fmt_convert_init_x86(FmtConvertContext
*c, AVCodecContext *avctx
c->float_to_int16_interleave = float_to_int16_interleave_3dnowext;
}
}
+#endif /* ARCH_X86_32 */
if (EXTERNAL_SSE(cpu_flags)) {
+#if ARCH_X86_32
c->int32_to_float_fmul_scalar = ff_int32_to_float_fmul_scalar_sse;
c->float_to_int16 = ff_float_to_int16_sse;
c->float_to_int16_interleave = float_to_int16_interleave_sse;
+#endif /* ARCH_X86_32 */
c->float_interleave = float_interleave_sse;
}
if (EXTERNAL_SSE2(cpu_flags)) {
diff --git a/libavcodec/x86/h264_intrapred_init.c
b/libavcodec/x86/h264_intrapred_init.c
index 6dd98aa..35dfb59 100644
--- a/libavcodec/x86/h264_intrapred_init.c
+++ b/libavcodec/x86/h264_intrapred_init.c
@@ -190,11 +190,16 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h,
int codec_id,
if (bit_depth == 8) {
if (EXTERNAL_MMX(cpu_flags)) {
h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vertical_8_mmx;
+#if ARCH_X86_32
h->pred16x16[HOR_PRED8x8 ] =
ff_pred16x16_horizontal_8_mmx;
+#endif /* ARCH_X86_32 */
if (chroma_format_idc == 1) {
h->pred8x8 [VERT_PRED8x8 ] = ff_pred8x8_vertical_8_mmx;
+#if ARCH_X86_32
h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_8_mmx;
+#endif /* ARCH_X86_32 */
}
+#if ARCH_X86_32
if (codec_id == AV_CODEC_ID_VP8) {
h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_tm_vp8_8_mmx;
h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_8_mmx;
@@ -211,22 +216,27 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h,
int codec_id,
h->pred16x16[PLANE_PRED8x8] =
ff_pred16x16_plane_h264_8_mmx;
}
}
+#endif /* ARCH_X86_32 */
}
if (EXTERNAL_MMXEXT(cpu_flags)) {
h->pred16x16[HOR_PRED8x8 ] =
ff_pred16x16_horizontal_8_mmxext;
+#if ARCH_X86_32
h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_8_mmxext;
+#endif /* ARCH_X86_32 */
if (chroma_format_idc == 1)
h->pred8x8[HOR_PRED8x8 ] =
ff_pred8x8_horizontal_8_mmxext;
h->pred8x8l [TOP_DC_PRED ] =
ff_pred8x8l_top_dc_8_mmxext;
h->pred8x8l [DC_PRED ] = ff_pred8x8l_dc_8_mmxext;
h->pred8x8l [HOR_PRED ] =
ff_pred8x8l_horizontal_8_mmxext;
h->pred8x8l [VERT_PRED ] =
ff_pred8x8l_vertical_8_mmxext;
+#if ARCH_X86_32
h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] =
ff_pred8x8l_down_right_8_mmxext;
h->pred8x8l [VERT_RIGHT_PRED ] =
ff_pred8x8l_vertical_right_8_mmxext;
- h->pred8x8l [HOR_UP_PRED ] =
ff_pred8x8l_horizontal_up_8_mmxext;
h->pred8x8l [DIAG_DOWN_LEFT_PRED ] =
ff_pred8x8l_down_left_8_mmxext;
h->pred8x8l [HOR_DOWN_PRED ] =
ff_pred8x8l_horizontal_down_8_mmxext;
+#endif /* ARCH_X86_32 */
+ h->pred8x8l [HOR_UP_PRED ] =
ff_pred8x8l_horizontal_up_8_mmxext;
h->pred4x4 [DIAG_DOWN_RIGHT_PRED ] =
ff_pred4x4_down_right_8_mmxext;
h->pred4x4 [VERT_RIGHT_PRED ] =
ff_pred4x4_vertical_right_8_mmxext;
h->pred4x4 [HOR_DOWN_PRED ] =
ff_pred4x4_horizontal_down_8_mmxext;
@@ -247,12 +257,15 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h,
int codec_id,
}
}
if (codec_id == AV_CODEC_ID_VP8) {
+#if ARCH_X86_32
h->pred16x16[PLANE_PRED8x8 ] =
ff_pred16x16_tm_vp8_8_mmxext;
- h->pred8x8 [DC_PRED8x8 ] =
ff_pred8x8_dc_rv40_8_mmxext;
h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_8_mmxext;
+#endif /* ARCH_X86_32 */
+ h->pred8x8 [DC_PRED8x8 ] =
ff_pred8x8_dc_rv40_8_mmxext;
h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_8_mmxext;
h->pred4x4 [VERT_PRED ] =
ff_pred4x4_vertical_vp8_8_mmxext;
} else {
+#if ARCH_X86_32
if (chroma_format_idc == 1)
h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_plane_8_mmxext;
if (codec_id == AV_CODEC_ID_SVQ3) {
@@ -262,6 +275,7 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int
codec_id,
} else {
h->pred16x16[PLANE_PRED8x8 ] =
ff_pred16x16_plane_h264_8_mmxext;
}
+#endif /* ARCH_X86_32 */
}
}
@@ -327,6 +341,7 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int
codec_id,
h->pred4x4[DC_PRED ] = ff_pred4x4_dc_10_mmxext;
h->pred4x4[HOR_UP_PRED ] =
ff_pred4x4_horizontal_up_10_mmxext;
+#if ARCH_X86_32
if (chroma_format_idc == 1)
h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_10_mmxext;
@@ -338,6 +353,7 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int
codec_id,
h->pred16x16[LEFT_DC_PRED8x8 ] = ff_pred16x16_left_dc_10_mmxext;
h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vertical_10_mmxext;
h->pred16x16[HOR_PRED8x8 ] =
ff_pred16x16_horizontal_10_mmxext;
+#endif /* ARCH_X86_32 */
}
if (EXTERNAL_SSE2(cpu_flags)) {
h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_sse2;
diff --git a/libavcodec/x86/h264chroma_init.c b/libavcodec/x86/h264chroma_init.c
index eec1653..504be95 100644
--- a/libavcodec/x86/h264chroma_init.c
+++ b/libavcodec/x86/h264chroma_init.c
@@ -73,6 +73,7 @@ av_cold void ff_h264chroma_init_x86(H264ChromaContext *c, int
bit_depth)
int high_bit_depth = bit_depth > 8;
int cpu_flags = av_get_cpu_flags();
+#if ARCH_X86_32
if (EXTERNAL_MMX(cpu_flags) && !high_bit_depth) {
c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_rnd_mmx;
c->put_h264_chroma_pixels_tab[1] = ff_put_h264_chroma_mc4_mmx;
@@ -82,6 +83,7 @@ av_cold void ff_h264chroma_init_x86(H264ChromaContext *c, int
bit_depth)
c->avg_h264_chroma_pixels_tab[0] = ff_avg_h264_chroma_mc8_rnd_3dnow;
c->avg_h264_chroma_pixels_tab[1] = ff_avg_h264_chroma_mc4_3dnow;
}
+#endif /* ARCH_X86_32 */
if (EXTERNAL_MMXEXT(cpu_flags) && !high_bit_depth) {
c->avg_h264_chroma_pixels_tab[0] = ff_avg_h264_chroma_mc8_rnd_mmxext;
diff --git a/libavcodec/x86/h264dsp_init.c b/libavcodec/x86/h264dsp_init.c
index 4164b83..824872f 100644
--- a/libavcodec/x86/h264dsp_init.c
+++ b/libavcodec/x86/h264dsp_init.c
@@ -223,6 +223,7 @@ av_cold void ff_h264dsp_init_x86(H264DSPContext *c, const
int bit_depth,
c->h264_idct8_dc_add =
c->h264_idct8_add = ff_h264_idct8_add_8_mmx;
+#if ARCH_X86_32
c->h264_idct_add16 = ff_h264_idct_add16_8_mmx;
c->h264_idct8_add4 = ff_h264_idct8_add4_8_mmx;
if (chroma_format_idc == 1)
@@ -230,15 +231,18 @@ av_cold void ff_h264dsp_init_x86(H264DSPContext *c, const
int bit_depth,
c->h264_idct_add16intra = ff_h264_idct_add16intra_8_mmx;
if (cpu_flags & AV_CPU_FLAG_CMOV)
c->h264_luma_dc_dequant_idct =
ff_h264_luma_dc_dequant_idct_mmx;
+#endif /* ARCH_X86_32 */
}
if (EXTERNAL_MMXEXT(cpu_flags)) {
c->h264_idct_dc_add = ff_h264_idct_dc_add_8_mmxext;
c->h264_idct8_dc_add = ff_h264_idct8_dc_add_8_mmxext;
+#if ARCH_X86_32
c->h264_idct_add16 = ff_h264_idct_add16_8_mmxext;
c->h264_idct8_add4 = ff_h264_idct8_add4_8_mmxext;
if (chroma_format_idc == 1)
c->h264_idct_add8 = ff_h264_idct_add8_8_mmxext;
c->h264_idct_add16intra = ff_h264_idct_add16intra_8_mmxext;
+#endif /* ARCH_X86_32 */
c->h264_v_loop_filter_chroma = ff_deblock_v_chroma_8_mmxext;
c->h264_v_loop_filter_chroma_intra =
ff_deblock_v_chroma_intra_8_mmxext;
@@ -246,18 +250,22 @@ av_cold void ff_h264dsp_init_x86(H264DSPContext *c, const
int bit_depth,
c->h264_h_loop_filter_chroma =
ff_deblock_h_chroma_8_mmxext;
c->h264_h_loop_filter_chroma_intra =
ff_deblock_h_chroma_intra_8_mmxext;
}
-#if ARCH_X86_32 && HAVE_MMXEXT_EXTERNAL
+#if ARCH_X86_32
+#if HAVE_MMXEXT_EXTERNAL
c->h264_v_loop_filter_luma = deblock_v_luma_8_mmxext;
- c->h264_h_loop_filter_luma = ff_deblock_h_luma_8_mmxext;
c->h264_v_loop_filter_luma_intra = deblock_v_luma_intra_8_mmxext;
+#endif /* HAVE_MMXEXT_EXTERNAL */
+ c->h264_h_loop_filter_luma = ff_deblock_h_luma_8_mmxext;
c->h264_h_loop_filter_luma_intra =
ff_deblock_h_luma_intra_8_mmxext;
-#endif /* ARCH_X86_32 && HAVE_MMXEXT_EXTERNAL */
c->weight_h264_pixels_tab[0] = ff_h264_weight_16_mmxext;
c->weight_h264_pixels_tab[1] = ff_h264_weight_8_mmxext;
+#endif /* ARCH_X86_32 */
c->weight_h264_pixels_tab[2] = ff_h264_weight_4_mmxext;
+#if ARCH_X86_32
c->biweight_h264_pixels_tab[0] = ff_h264_biweight_16_mmxext;
c->biweight_h264_pixels_tab[1] = ff_h264_biweight_8_mmxext;
+#endif /* ARCH_X86_32 */
c->biweight_h264_pixels_tab[2] = ff_h264_biweight_4_mmxext;
}
if (EXTERNAL_SSE2(cpu_flags)) {
@@ -293,7 +301,7 @@ av_cold void ff_h264dsp_init_x86(H264DSPContext *c, const
int bit_depth,
}
} else if (bit_depth == 10) {
if (EXTERNAL_MMXEXT(cpu_flags)) {
-#if ARCH_X86_32
+#if ARCH_X86_32 || !HAVE_ALIGNED_STACK
c->h264_v_loop_filter_chroma = ff_deblock_v_chroma_10_mmxext;
c->h264_v_loop_filter_chroma_intra =
ff_deblock_v_chroma_intra_10_mmxext;
c->h264_v_loop_filter_luma = ff_deblock_v_luma_10_mmxext;
diff --git a/libavcodec/x86/hpeldsp_init.c b/libavcodec/x86/hpeldsp_init.c
index 3bc5601..3f803df 100644
--- a/libavcodec/x86/hpeldsp_init.c
+++ b/libavcodec/x86/hpeldsp_init.c
@@ -258,8 +258,10 @@ void ff_hpeldsp_init_x86(HpelDSPContext *c, int flags)
if (INLINE_MMX(cpu_flags))
hpeldsp_init_mmx(c, flags, cpu_flags);
+#if ARCH_X86_32
if (EXTERNAL_AMD3DNOW(cpu_flags))
hpeldsp_init_3dnow(c, flags, cpu_flags);
+#endif /* ARCH_X86_32 */
if (EXTERNAL_MMXEXT(cpu_flags))
hpeldsp_init_mmxext(c, flags, cpu_flags);
diff --git a/libavcodec/x86/motion_est.c b/libavcodec/x86/motion_est.c
index 41b9c5c..7f71546 100644
--- a/libavcodec/x86/motion_est.c
+++ b/libavcodec/x86/motion_est.c
@@ -439,23 +439,31 @@ av_cold void ff_dsputil_init_pix_mmx(DSPContext *c,
AVCodecContext *avctx)
int cpu_flags = av_get_cpu_flags();
if (INLINE_MMX(cpu_flags)) {
+#if ARCH_X86_32
c->pix_abs[0][0] = sad16_mmx;
+#endif /* ARCH_X86_32 */
c->pix_abs[0][1] = sad16_x2_mmx;
c->pix_abs[0][2] = sad16_y2_mmx;
c->pix_abs[0][3] = sad16_xy2_mmx;
+#if ARCH_X86_32
c->pix_abs[1][0] = sad8_mmx;
+#endif /* ARCH_X86_32 */
c->pix_abs[1][1] = sad8_x2_mmx;
c->pix_abs[1][2] = sad8_y2_mmx;
c->pix_abs[1][3] = sad8_xy2_mmx;
+#if ARCH_X86_32
c->sad[0]= sad16_mmx;
c->sad[1]= sad8_mmx;
+#endif /* ARCH_X86_32 */
}
if (INLINE_MMXEXT(cpu_flags)) {
c->pix_abs[0][0] = sad16_mmxext;
c->pix_abs[1][0] = sad8_mmxext;
+#if ARCH_X86_32
c->sad[0] = sad16_mmxext;
+#endif /* ARCH_X86_32 */
c->sad[1] = sad8_mmxext;
if(!(avctx->flags & CODEC_FLAG_BITEXACT)){
diff --git a/libavcodec/x86/mpegaudiodsp.c b/libavcodec/x86/mpegaudiodsp.c
index 3f0943c..9af3bca 100644
--- a/libavcodec/x86/mpegaudiodsp.c
+++ b/libavcodec/x86/mpegaudiodsp.c
@@ -249,9 +249,11 @@ av_cold void ff_mpadsp_init_x86(MPADSPContext *s)
#endif /* HAVE_SSE2_INLINE */
#if HAVE_YASM
+#if ARCH_X86_32
if (EXTERNAL_SSE(cpu_flags)) {
s->imdct36_blocks_float = imdct36_blocks_sse;
}
+#endif /* ARCH_X86_32 */
if (EXTERNAL_SSE2(cpu_flags)) {
s->imdct36_blocks_float = imdct36_blocks_sse2;
}
diff --git a/libavcodec/x86/mpegvideo.c b/libavcodec/x86/mpegvideo.c
index 07fd1e5..e7d982d 100644
--- a/libavcodec/x86/mpegvideo.c
+++ b/libavcodec/x86/mpegvideo.c
@@ -568,7 +568,9 @@ av_cold void ff_MPV_common_init_x86(MpegEncContext *s)
if(!(s->flags & CODEC_FLAG_BITEXACT))
s->dct_unquantize_mpeg2_intra = dct_unquantize_mpeg2_intra_mmx;
s->dct_unquantize_mpeg2_inter = dct_unquantize_mpeg2_inter_mmx;
+#if ARCH_X86_32
s->denoise_dct = denoise_dct_mmx;
+#endif /* ARCH_X86_32 */
}
if (INLINE_SSE2(cpu_flags)) {
s->denoise_dct = denoise_dct_sse2;
diff --git a/libavcodec/x86/mpegvideoenc.c b/libavcodec/x86/mpegvideoenc.c
index ca39a3b..ff540fb 100644
--- a/libavcodec/x86/mpegvideoenc.c
+++ b/libavcodec/x86/mpegvideoenc.c
@@ -86,8 +86,9 @@ av_cold void ff_MPV_encode_init_x86(MpegEncContext *s)
const int dct_algo = s->avctx->dct_algo;
if (dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX) {
-#if HAVE_MMX_INLINE
int cpu_flags = av_get_cpu_flags();
+#if ARCH_X86_32
+#if HAVE_MMX_INLINE
if (INLINE_MMX(cpu_flags))
s->dct_quantize = dct_quantize_MMX;
#endif
@@ -95,6 +96,7 @@ av_cold void ff_MPV_encode_init_x86(MpegEncContext *s)
if (INLINE_MMXEXT(cpu_flags))
s->dct_quantize = dct_quantize_MMXEXT;
#endif
+#endif /* ARCH_X86_32 */
#if HAVE_SSE2_INLINE
if (INLINE_SSE2(cpu_flags))
s->dct_quantize = dct_quantize_SSE2;
diff --git a/libavcodec/x86/rv34dsp_init.c b/libavcodec/x86/rv34dsp_init.c
index 5f284b8..91d0280 100644
--- a/libavcodec/x86/rv34dsp_init.c
+++ b/libavcodec/x86/rv34dsp_init.c
@@ -34,8 +34,10 @@ av_cold void ff_rv34dsp_init_x86(RV34DSPContext* c)
{
int cpu_flags = av_get_cpu_flags();
+#if ARCH_X86_32
if (EXTERNAL_MMX(cpu_flags))
c->rv34_idct_dc_add = ff_rv34_idct_dc_add_mmx;
+#endif /* ARCH_X86_32 */
if (EXTERNAL_MMXEXT(cpu_flags)) {
c->rv34_inv_transform_dc = ff_rv34_idct_dc_noround_mmxext;
c->rv34_idct_add = ff_rv34_idct_add_mmxext;
diff --git a/libavcodec/x86/rv40dsp_init.c b/libavcodec/x86/rv40dsp_init.c
index 781f467..0d75a00 100644
--- a/libavcodec/x86/rv40dsp_init.c
+++ b/libavcodec/x86/rv40dsp_init.c
@@ -232,23 +232,23 @@ av_cold void ff_rv40dsp_init_x86(RV34DSPContext *c)
QPEL_MC_SET(put_, _mmx)
#endif
}
+#if ARCH_X86_32
if (EXTERNAL_AMD3DNOW(cpu_flags)) {
c->avg_chroma_pixels_tab[0] = ff_avg_rv40_chroma_mc8_3dnow;
c->avg_chroma_pixels_tab[1] = ff_avg_rv40_chroma_mc4_3dnow;
-#if ARCH_X86_32
QPEL_MC_SET(avg_, _3dnow)
-#endif
}
+#endif /* ARCH_X86_32 */
if (EXTERNAL_MMXEXT(cpu_flags)) {
c->avg_chroma_pixels_tab[0] = ff_avg_rv40_chroma_mc8_mmxext;
c->avg_chroma_pixels_tab[1] = ff_avg_rv40_chroma_mc4_mmxext;
+#if ARCH_X86_32
c->rv40_weight_pixels_tab[0][0] = ff_rv40_weight_func_rnd_16_mmxext;
c->rv40_weight_pixels_tab[0][1] = ff_rv40_weight_func_rnd_8_mmxext;
c->rv40_weight_pixels_tab[1][0] = ff_rv40_weight_func_nornd_16_mmxext;
c->rv40_weight_pixels_tab[1][1] = ff_rv40_weight_func_nornd_8_mmxext;
-#if ARCH_X86_32
QPEL_MC_SET(avg_, _mmxext)
-#endif
+#endif /* ARCH_X86_32 */
}
if (EXTERNAL_SSE2(cpu_flags)) {
c->rv40_weight_pixels_tab[0][0] = ff_rv40_weight_func_rnd_16_sse2;
diff --git a/libavcodec/x86/vc1dsp_init.c b/libavcodec/x86/vc1dsp_init.c
index 9f18131..5f16659 100644
--- a/libavcodec/x86/vc1dsp_init.c
+++ b/libavcodec/x86/vc1dsp_init.c
@@ -103,9 +103,11 @@ av_cold void ff_vc1dsp_init_x86(VC1DSPContext *dsp)
if (EXTERNAL_MMX(cpu_flags)) {
dsp->put_no_rnd_vc1_chroma_pixels_tab[0] =
ff_put_vc1_chroma_mc8_nornd_mmx;
}
+#if ARCH_X86_32
if (EXTERNAL_AMD3DNOW(cpu_flags)) {
dsp->avg_no_rnd_vc1_chroma_pixels_tab[0] =
ff_avg_vc1_chroma_mc8_nornd_3dnow;
}
+#endif /* ARCH_X86_32 */
if (EXTERNAL_MMXEXT(cpu_flags)) {
ASSIGN_LF(mmxext);
dsp->avg_no_rnd_vc1_chroma_pixels_tab[0] =
ff_avg_vc1_chroma_mc8_nornd_mmxext;
diff --git a/libavutil/x86/float_dsp_init.c b/libavutil/x86/float_dsp_init.c
index a04d91c..50c4aca 100644
--- a/libavutil/x86/float_dsp_init.c
+++ b/libavutil/x86/float_dsp_init.c
@@ -127,9 +127,11 @@ av_cold void ff_float_dsp_init_x86(AVFloatDSPContext *fdsp)
int cpu_flags = av_get_cpu_flags();
#if HAVE_6REGS && HAVE_INLINE_ASM
+#if ARCH_X86_32
if (INLINE_AMD3DNOWEXT(cpu_flags)) {
fdsp->vector_fmul_window = vector_fmul_window_3dnowext;
}
+#endif /* ARCH_X86_32 */
if (INLINE_SSE(cpu_flags)) {
fdsp->vector_fmul_window = vector_fmul_window_sse;
}
diff --git a/libswscale/x86/rgb2rgb.c b/libswscale/x86/rgb2rgb.c
index d4f2580..7fb64c9 100644
--- a/libswscale/x86/rgb2rgb.c
+++ b/libswscale/x86/rgb2rgb.c
@@ -134,12 +134,14 @@ av_cold void rgb2rgb_init_x86(void)
#if HAVE_INLINE_ASM
int cpu_flags = av_get_cpu_flags();
+#if ARCH_X86_32
if (INLINE_MMX(cpu_flags))
rgb2rgb_init_MMX();
if (INLINE_AMD3DNOW(cpu_flags))
rgb2rgb_init_3DNOW();
if (INLINE_MMXEXT(cpu_flags))
rgb2rgb_init_MMXEXT();
+#endif /* ARCH_X86_32 */
if (INLINE_SSE2(cpu_flags))
rgb2rgb_init_SSE2();
#endif /* HAVE_INLINE_ASM */
--
1.7.9.5
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel