--- libavcodec/x86/vc1dsp_yasm.asm | 3 --- libavutil/x86/x86util.asm | 22 ++++++++++------------ 2 files changed, 10 insertions(+), 15 deletions(-)
diff --git a/libavcodec/x86/vc1dsp_yasm.asm b/libavcodec/x86/vc1dsp_yasm.asm index a1962c5..2023ff3 100644 --- a/libavcodec/x86/vc1dsp_yasm.asm +++ b/libavcodec/x86/vc1dsp_yasm.asm @@ -268,7 +268,6 @@ cglobal vc1_h_loop_filter8, 3, 5, 0 %endmacro INIT_MMX mmxext -%define PABSW PABSW_MMXEXT VC1_LF INIT_XMM sse2 @@ -284,8 +283,6 @@ cglobal vc1_h_loop_filter8, 3, 6, 8 VC1_H_LOOP_FILTER 8, r5 RET -%define PABSW PABSW_SSSE3 - INIT_MMX ssse3 ; void ff_vc1_v_loop_filter4_ssse3(uint8_t *src, int stride, int pq) cglobal vc1_v_loop_filter4, 3, 5, 0 diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm index 18c804c..b844131 100644 --- a/libavutil/x86/x86util.asm +++ b/libavutil/x86/x86util.asm @@ -143,13 +143,21 @@ %endif %endmacro -; PABSW macros assume %1 != %2, while ABS1/2 macros work in-place -%macro PABSW_MMX 2 +; PABSW macro assumes %1 != %2, while ABS1/2 macros work in-place +%macro PABSW 2 +%if cpuflag(ssse3) + pabsw %1, %2 +%elif cpuflag(mmxext) + pxor %1, %1 + psubw %1, %2 + pmaxsw %1, %2 +%else pxor %1, %1 pcmpgtw %1, %2 pxor %2, %1 psubw %2, %1 SWAP %1, %2 +%endif %endmacro %macro PSIGNW_MMX 2 @@ -157,16 +165,6 @@ psubw %1, %2 %endmacro -%macro PABSW_MMXEXT 2 - pxor %1, %1 - psubw %1, %2 - pmaxsw %1, %2 -%endmacro - -%macro PABSW_SSSE3 2 - pabsw %1, %2 -%endmacro - %macro PSIGNW_SSSE3 2 psignw %1, %2 %endmacro -- 1.7.2.5 _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel