From 87af05c575791406090272b6a37b50d51e85490c Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Sun, 15 Jul 2012 18:33:59 +0200 Subject: [PATCH 1/2] x86: SPLATD: port to cpuflags --- libavcodec/x86/dsputil.asm | 2 -- libavcodec/x86/fmtconvert.asm | 3 --- libavutil/x86/x86util.asm | 22 ++++++---------------- libswscale/x86/output.asm | 2 +- 4 files changed, 7 insertions(+), 22 deletions(-) diff --git a/libavcodec/x86/dsputil.asm b/libavcodec/x86/dsputil.asm index de54540818..726d4c6362 100644 --- a/libavcodec/x86/dsputil.asm +++ b/libavcodec/x86/dsputil.asm @@ -1124,11 +1124,9 @@ cglobal vector_clip_int32%5, 5,5,%1, dst, src, min, max, len %endmacro INIT_MMX mmx -%define SPLATD SPLATD_MMX %define CLIPD CLIPD_MMX VECTOR_CLIP_INT32 0, 1, 0, 0 INIT_XMM sse2 -%define SPLATD SPLATD_SSE2 VECTOR_CLIP_INT32 6, 1, 0, 0, _int %define CLIPD CLIPD_SSE2 VECTOR_CLIP_INT32 6, 2, 0, 1 diff --git a/libavcodec/x86/fmtconvert.asm b/libavcodec/x86/fmtconvert.asm index 77b8bd7069..8267bd47dc 100644 --- a/libavcodec/x86/fmtconvert.asm +++ b/libavcodec/x86/fmtconvert.asm @@ -72,12 +72,9 @@ cglobal int32_to_float_fmul_scalar, 4, 4, %1, dst, src, mul, len %endmacro INIT_XMM sse -%define SPLATD SPLATD_SSE INT32_TO_FLOAT_FMUL_SCALAR 5 INIT_XMM sse2 -%define SPLATD SPLATD_SSE2 INT32_TO_FLOAT_FMUL_SCALAR 3 -%undef SPLATD ;------------------------------------------------------------------------------ diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm index 40d87639fe..d3c0d86056 100644 --- a/libavutil/x86/x86util.asm +++ b/libavutil/x86/x86util.asm @@ -574,24 +574,14 @@ %endif %endmacro -%macro SPLATD 2-3 0 -%if mmsize == 16 - pshufd %1, %2, (%3)*0x55 -%else - pshufw %1, %2, (%3)*0x11 + ((%3)+1)*0x44 -%endif -%endmacro - -%macro SPLATD_MMX 1 +%macro SPLATD 1 +%if mmsize == 8 punpckldq %1, %1 -%endmacro - -%macro SPLATD_SSE 1 - shufps %1, %1, 0 -%endmacro - -%macro SPLATD_SSE2 1 +%elif cpuflag(sse2) pshufd %1, %1, 0 +%elif cpuflag(sse) + shufps %1, %1, 0 +%endif %endmacro %macro CLIPW 3 ;(dst, min, max) diff --git a/libswscale/x86/output.asm b/libswscale/x86/output.asm index d137e6ece2..e1ceded756 100644 --- a/libswscale/x86/output.asm +++ b/libswscale/x86/output.asm @@ -187,7 +187,7 @@ cglobal yuv2planeX_%1, %3, 8, %2, filter, fltsize, src, dst, w, dither, offset %else ; %1 == 10/9/8 punpcklwd m5, m3, m4 punpckhwd m3, m4 - SPLATD m0, m0 + SPLATD m0 pmaddwd m5, m0 pmaddwd m3, m0 From 89923fce7006d0a42859360068c486aeb7e9b582 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Wed, 14 Nov 2012 01:47:11 +0100 Subject: [PATCH 2/2] x86: h264_intrapred: Fix C function names in comments Function names changed after switching to declaration with PRED4x4/8x8/8x8L/16x16 macros in the C code. --- libavcodec/x86/h264_intrapred.asm | 62 +++++++++++++++---------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/libavcodec/x86/h264_intrapred.asm b/libavcodec/x86/h264_intrapred.asm index c687249aea..b9db3f450f 100644 --- a/libavcodec/x86/h264_intrapred.asm +++ b/libavcodec/x86/h264_intrapred.asm @@ -49,7 +49,7 @@ cextern pw_17 cextern pw_32 ;----------------------------------------------------------------------------- -; void pred16x16_vertical(uint8_t *src, int stride) +; void pred16x16_vertical_8(uint8_t *src, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmx @@ -85,7 +85,7 @@ cglobal pred16x16_vertical_8, 2,3 REP_RET ;----------------------------------------------------------------------------- -; void pred16x16_horizontal(uint8_t *src, int stride) +; void pred16x16_horizontal_8(uint8_t *src, int stride) ;----------------------------------------------------------------------------- %macro PRED16x16_H 0 @@ -126,7 +126,7 @@ INIT_XMM ssse3 PRED16x16_H ;----------------------------------------------------------------------------- -; void pred16x16_dc(uint8_t *src, int stride) +; void pred16x16_dc_8(uint8_t *src, int stride) ;----------------------------------------------------------------------------- %macro PRED16x16_DC 0 @@ -188,7 +188,7 @@ INIT_XMM ssse3 PRED16x16_DC ;----------------------------------------------------------------------------- -; void pred16x16_tm_vp8(uint8_t *src, int stride) +; void pred16x16_tm_vp8_8(uint8_t *src, int stride) ;----------------------------------------------------------------------------- %macro PRED16x16_TM 0 @@ -269,7 +269,7 @@ cglobal pred16x16_tm_vp8_8, 2,6,6 REP_RET ;----------------------------------------------------------------------------- -; void pred16x16_plane(uint8_t *src, int stride) +; void pred16x16_plane_*_8(uint8_t *src, int stride) ;----------------------------------------------------------------------------- %macro H264_PRED16x16_PLANE 1 @@ -550,7 +550,7 @@ H264_PRED16x16_PLANE rv40 H264_PRED16x16_PLANE svq3 ;----------------------------------------------------------------------------- -; void pred8x8_plane(uint8_t *src, int stride) +; void pred8x8_plane_8(uint8_t *src, int stride) ;----------------------------------------------------------------------------- %macro H264_PRED8x8_PLANE 0 @@ -724,7 +724,7 @@ INIT_XMM ssse3 H264_PRED8x8_PLANE ;----------------------------------------------------------------------------- -; void pred8x8_vertical(uint8_t *src, int stride) +; void pred8x8_vertical_8(uint8_t *src, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmx @@ -741,7 +741,7 @@ cglobal pred8x8_vertical_8, 2,2 RET ;----------------------------------------------------------------------------- -; void pred8x8_horizontal(uint8_t *src, int stride) +; void pred8x8_horizontal_8(uint8_t *src, int stride) ;----------------------------------------------------------------------------- %macro PRED8x8_H 0 @@ -769,7 +769,7 @@ INIT_MMX ssse3 PRED8x8_H ;----------------------------------------------------------------------------- -; void pred8x8_top_dc_mmxext(uint8_t *src, int stride) +; void pred8x8_top_dc_8_mmxext(uint8_t *src, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext cglobal pred8x8_top_dc_8, 2,5 @@ -803,7 +803,7 @@ cglobal pred8x8_top_dc_8, 2,5 RET ;----------------------------------------------------------------------------- -; void pred8x8_dc_mmxext(uint8_t *src, int stride) +; void pred8x8_dc_8_mmxext(uint8_t *src, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -864,7 +864,7 @@ cglobal pred8x8_dc_8, 2,5 RET ;----------------------------------------------------------------------------- -; void pred8x8_dc_rv40(uint8_t *src, int stride) +; void pred8x8_dc_rv40_8(uint8_t *src, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -901,7 +901,7 @@ cglobal pred8x8_dc_rv40_8, 2,7 REP_RET ;----------------------------------------------------------------------------- -; void pred8x8_tm_vp8(uint8_t *src, int stride) +; void pred8x8_tm_vp8_8(uint8_t *src, int stride) ;----------------------------------------------------------------------------- %macro PRED8x8_TM 0 @@ -1013,7 +1013,7 @@ cglobal pred8x8_tm_vp8_8, 2,3,6 %endmacro ;----------------------------------------------------------------------------- -; void pred8x8l_top_dc(uint8_t *src, int has_topleft, int has_topright, int stride) +; void pred8x8l_top_dc_8(uint8_t *src, int has_topleft, int has_topright, int stride) ;----------------------------------------------------------------------------- %macro PRED8x8L_TOP_DC 0 cglobal pred8x8l_top_dc_8, 4,4 @@ -1068,7 +1068,7 @@ INIT_MMX ssse3 PRED8x8L_TOP_DC ;----------------------------------------------------------------------------- -;void pred8x8l_dc(uint8_t *src, int has_topleft, int has_topright, int stride) +;void pred8x8l_dc_8(uint8_t *src, int has_topleft, int has_topright, int stride) ;----------------------------------------------------------------------------- %macro PRED8x8L_DC 0 @@ -1171,7 +1171,7 @@ INIT_MMX ssse3 PRED8x8L_DC ;----------------------------------------------------------------------------- -; void pred8x8l_horizontal(uint8_t *src, int has_topleft, int has_topright, int stride) +; void pred8x8l_horizontal_8(uint8_t *src, int has_topleft, int has_topright, int stride) ;----------------------------------------------------------------------------- %macro PRED8x8L_HORIZONTAL 0 @@ -1242,7 +1242,7 @@ INIT_MMX ssse3 PRED8x8L_HORIZONTAL ;----------------------------------------------------------------------------- -; void pred8x8l_vertical(uint8_t *src, int has_topleft, int has_topright, int stride) +; void pred8x8l_vertical_8(uint8_t *src, int has_topleft, int has_topright, int stride) ;----------------------------------------------------------------------------- %macro PRED8x8L_VERTICAL 0 @@ -1292,7 +1292,7 @@ INIT_MMX ssse3 PRED8x8L_VERTICAL ;----------------------------------------------------------------------------- -;void pred8x8l_down_left(uint8_t *src, int has_topleft, int has_topright, int stride) +;void pred8x8l_down_left_8(uint8_t *src, int has_topleft, int has_topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -1492,7 +1492,7 @@ INIT_MMX ssse3 PRED8x8L_DOWN_LEFT ;----------------------------------------------------------------------------- -;void pred8x8l_down_right_mmxext(uint8_t *src, int has_topleft, int has_topright, int stride) +;void pred8x8l_down_right_8_mmxext(uint8_t *src, int has_topleft, int has_topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -1743,7 +1743,7 @@ INIT_MMX ssse3 PRED8x8L_DOWN_RIGHT ;----------------------------------------------------------------------------- -; void pred8x8l_vertical_right(uint8_t *src, int has_topleft, int has_topright, int stride) +; void pred8x8l_vertical_right_8(uint8_t *src, int has_topleft, int has_topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -1970,7 +1970,7 @@ INIT_MMX ssse3 PRED8x8L_VERTICAL_RIGHT ;----------------------------------------------------------------------------- -;void pred8x8l_vertical_left(uint8_t *src, int has_topleft, int has_topright, int stride) +;void pred8x8l_vertical_left_8(uint8_t *src, int has_topleft, int has_topright, int stride) ;----------------------------------------------------------------------------- %macro PRED8x8L_VERTICAL_LEFT 0 @@ -2059,7 +2059,7 @@ INIT_MMX ssse3 PRED8x8L_VERTICAL_LEFT ;----------------------------------------------------------------------------- -; void pred8x8l_horizontal_up(uint8_t *src, int has_topleft, int has_topright, int stride) +; void pred8x8l_horizontal_up_8(uint8_t *src, int has_topleft, int has_topright, int stride) ;----------------------------------------------------------------------------- %macro PRED8x8L_HORIZONTAL_UP 0 @@ -2146,7 +2146,7 @@ INIT_MMX ssse3 PRED8x8L_HORIZONTAL_UP ;----------------------------------------------------------------------------- -;void pred8x8l_horizontal_down(uint8_t *src, int has_topleft, int has_topright, int stride) +;void pred8x8l_horizontal_down_8(uint8_t *src, int has_topleft, int has_topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -2394,7 +2394,7 @@ INIT_MMX ssse3 PRED8x8L_HORIZONTAL_DOWN ;----------------------------------------------------------------------------- -; void pred4x4_dc_mmxext(uint8_t *src, const uint8_t *topright, int stride) +; void pred4x4_dc_8_mmxext(uint8_t *src, const uint8_t *topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -2424,7 +2424,7 @@ cglobal pred4x4_dc_8, 3,5 RET ;----------------------------------------------------------------------------- -; void pred4x4_tm_vp8_mmxext(uint8_t *src, const uint8_t *topright, int stride) +; void pred4x4_tm_vp8_8_mmxext(uint8_t *src, const uint8_t *topright, int stride) ;----------------------------------------------------------------------------- %macro PRED4x4_TM 0 @@ -2505,7 +2505,7 @@ cglobal pred4x4_tm_vp8_8, 3,3 RET ;----------------------------------------------------------------------------- -; void pred4x4_vertical_vp8_mmxext(uint8_t *src, const uint8_t *topright, int stride) +; void pred4x4_vertical_vp8_8_mmxext(uint8_t *src, const uint8_t *topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -2525,7 +2525,7 @@ cglobal pred4x4_vertical_vp8_8, 3,3 RET ;----------------------------------------------------------------------------- -; void pred4x4_down_left_mmxext(uint8_t *src, const uint8_t *topright, int stride) +; void pred4x4_down_left_8_mmxext(uint8_t *src, const uint8_t *topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext cglobal pred4x4_down_left_8, 3,3 @@ -2551,7 +2551,7 @@ cglobal pred4x4_down_left_8, 3,3 RET ;----------------------------------------------------------------------------- -; void pred4x4_vertical_left_mmxext(uint8_t *src, const uint8_t *topright, int stride) +; void pred4x4_vertical_left_8_mmxext(uint8_t *src, const uint8_t *topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -2576,7 +2576,7 @@ cglobal pred4x4_vertical_left_8, 3,3 RET ;----------------------------------------------------------------------------- -; void pred4x4_horizontal_up_mmxext(uint8_t *src, const uint8_t *topright, int stride) +; void pred4x4_horizontal_up_8_mmxext(uint8_t *src, const uint8_t *topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -2609,7 +2609,7 @@ cglobal pred4x4_horizontal_up_8, 3,3 RET ;----------------------------------------------------------------------------- -; void pred4x4_horizontal_down_mmxext(uint8_t *src, const uint8_t *topright, int stride) +; void pred4x4_horizontal_down_8_mmxext(uint8_t *src, const uint8_t *topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -2644,7 +2644,7 @@ cglobal pred4x4_horizontal_down_8, 3,3 RET ;----------------------------------------------------------------------------- -; void pred4x4_vertical_right_mmxext(uint8_t *src, const uint8_t *topright, int stride) +; void pred4x4_vertical_right_8_mmxext(uint8_t *src, const uint8_t *topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext @@ -2674,7 +2674,7 @@ cglobal pred4x4_vertical_right_8, 3,3 RET ;----------------------------------------------------------------------------- -; void pred4x4_down_right_mmxext(uint8_t *src, const uint8_t *topright, int stride) +; void pred4x4_down_right_8_mmxext(uint8_t *src, const uint8_t *topright, int stride) ;----------------------------------------------------------------------------- INIT_MMX mmxext