diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2012-03-12 05:11:40 +0400 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2012-03-15 07:09:53 +0400 |
commit | aba7a827aaf08e8b48d1673a24773f395632af53 (patch) | |
tree | 1937f38c62fc03eabf5791eca29f9bc3dba3e740 /libswscale | |
parent | e0febda22d0e0fab094a9c886b0e0f0f662df1ef (diff) |
swscale: convert hscale to cpuflags().
Diffstat (limited to 'libswscale')
-rw-r--r-- | libswscale/x86/scale.asm | 72 |
1 files changed, 37 insertions, 35 deletions
diff --git a/libswscale/x86/scale.asm b/libswscale/x86/scale.asm index 2387d0266b..4e6d9c3762 100644 --- a/libswscale/x86/scale.asm +++ b/libswscale/x86/scale.asm @@ -48,9 +48,9 @@ SECTION .text ; the first pixel is given in filterPos[nOutputPixel]. ;----------------------------------------------------------------------------- -; SCALE_FUNC source_width, intermediate_nbits, filtersize, filtersuffix, opt, n_args, n_xmm -%macro SCALE_FUNC 7 -cglobal hscale%1to%2_%4_%5, %6, 7, %7 +; SCALE_FUNC source_width, intermediate_nbits, filtersize, filtersuffix, n_args, n_xmm +%macro SCALE_FUNC 6 +cglobal hscale%1to%2_%4, %5, 7, %6 %if ARCH_X86_64 movsxd r2, r2d %define mov32 movsxd @@ -60,7 +60,7 @@ cglobal hscale%1to%2_%4_%5, %6, 7, %7 %if %2 == 19 %if mmsize == 8 ; mmx mova m2, [max_19bit_int] -%elifidn %5, sse4 +%elif cpuflag(sse4) mova m2, [max_19bit_int] %else ; ssse3/sse2 mova m2, [max_19bit_flt] @@ -124,7 +124,7 @@ cglobal hscale%1to%2_%4_%5, %6, 7, %7 movd m5, [r3+r6*srcmul] ; src[filterPos[3] + {0,1,2,3}] punpckldq m0, m4 punpckldq m1, m5 -%endif ; %1 == 8 && %5 <= ssse +%endif ; %1 == 8 %endif ; mmsize == 8/16 %if %1 == 8 punpcklbw m0, m3 ; byte -> word @@ -146,7 +146,7 @@ cglobal hscale%1to%2_%4_%5, %6, 7, %7 punpckldq m0, m1 punpckhdq m4, m1 paddd m0, m4 -%elifidn %5, sse2 +%elif notcpuflag(ssse3) ; sse2 mova m4, m0 shufps m0, m1, 10001000b shufps m4, m1, 11011101b @@ -201,7 +201,7 @@ cglobal hscale%1to%2_%4_%5, %6, 7, %7 punpckldq m0, m4 punpckhdq m1, m4 paddd m0, m1 -%elifidn %5, sse2 +%elif notcpuflag(ssse3) ; sse2 %if %1 == 8 %define mex m6 %else @@ -304,7 +304,7 @@ cglobal hscale%1to%2_%4_%5, %6, 7, %7 %else ; %1 == 8 movd m1, [src_reg+(r1x+r6sub)*srcmul] punpckldq m0, m1 -%endif ; %1 == 8 && %5 <= ssse +%endif ; %1 == 8 %if %1 == 8 punpcklbw m0, m3 %endif ; %1 == 8 @@ -323,7 +323,7 @@ cglobal hscale%1to%2_%4_%5, %6, 7, %7 punpckhdq m0, m5 paddd m0, m4 %else ; mmsize == 16 -%ifidn %5, sse2 +%if notcpuflag(ssse3) ; sse2 mova m1, m4 punpcklqdq m4, m5 punpckhqdq m1, m5 @@ -334,7 +334,7 @@ cglobal hscale%1to%2_%4_%5, %6, 7, %7 %ifidn %4, X4 paddd m4, m0 %endif ; %3 == X4 -%ifidn %5, sse2 +%if notcpuflag(ssse3) ; sse2 pshufd m4, m4, 11011000b movhlps m0, m4 paddd m0, m4 @@ -364,7 +364,7 @@ cglobal hscale%1to%2_%4_%5, %6, 7, %7 %else ; %2 == 19 %if mmsize == 8 PMINSD_MMX m0, m2, m4 -%elifidn %5, sse4 +%elif cpuflag(sse4) pminsd m0, m2 %else ; sse2/ssse3 cvtdq2ps m0, m0 @@ -396,37 +396,39 @@ cglobal hscale%1to%2_%4_%5, %6, 7, %7 %endif ; %3 ==/!= X %endmacro -; SCALE_FUNCS source_width, intermediate_nbits, opt, n_xmm -%macro SCALE_FUNCS 4 -SCALE_FUNC %1, %2, 4, 4, %3, 6, %4 -SCALE_FUNC %1, %2, 8, 8, %3, 6, %4 +; SCALE_FUNCS source_width, intermediate_nbits, n_xmm +%macro SCALE_FUNCS 3 +SCALE_FUNC %1, %2, 4, 4, 6, %3 +SCALE_FUNC %1, %2, 8, 8, 6, %3 %if mmsize == 8 -SCALE_FUNC %1, %2, X, X, %3, 7, %4 +SCALE_FUNC %1, %2, X, X, 7, %3 %else -SCALE_FUNC %1, %2, X, X4, %3, 7, %4 -SCALE_FUNC %1, %2, X, X8, %3, 7, %4 +SCALE_FUNC %1, %2, X, X4, 7, %3 +SCALE_FUNC %1, %2, X, X8, 7, %3 %endif %endmacro -; SCALE_FUNCS2 opt, 8_xmm_args, 9to10_xmm_args, 16_xmm_args -%macro SCALE_FUNCS2 4 -%ifnidn %1, sse4 -SCALE_FUNCS 8, 15, %1, %2 -SCALE_FUNCS 9, 15, %1, %3 -SCALE_FUNCS 10, 15, %1, %3 -SCALE_FUNCS 16, 15, %1, %4 +; SCALE_FUNCS2 8_xmm_args, 9to10_xmm_args, 16_xmm_args +%macro SCALE_FUNCS2 3 +%if notcpuflag(sse4) +SCALE_FUNCS 8, 15, %1 +SCALE_FUNCS 9, 15, %2 +SCALE_FUNCS 10, 15, %2 +SCALE_FUNCS 16, 15, %3 %endif ; !sse4 -SCALE_FUNCS 8, 19, %1, %2 -SCALE_FUNCS 9, 19, %1, %3 -SCALE_FUNCS 10, 19, %1, %3 -SCALE_FUNCS 16, 19, %1, %4 +SCALE_FUNCS 8, 19, %1 +SCALE_FUNCS 9, 19, %2 +SCALE_FUNCS 10, 19, %2 +SCALE_FUNCS 16, 19, %3 %endmacro %if ARCH_X86_32 -INIT_MMX -SCALE_FUNCS2 mmx, 0, 0, 0 +INIT_MMX mmx +SCALE_FUNCS2 0, 0, 0 %endif -INIT_XMM -SCALE_FUNCS2 sse2, 6, 7, 8 -SCALE_FUNCS2 ssse3, 6, 6, 8 -SCALE_FUNCS2 sse4, 6, 6, 8 +INIT_XMM sse2 +SCALE_FUNCS2 6, 7, 8 +INIT_XMM ssse3 +SCALE_FUNCS2 6, 6, 8 +INIT_XMM sse4 +SCALE_FUNCS2 6, 6, 8 |