diff options
author | James Almer <jamrial@gmail.com> | 2017-07-08 11:33:54 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2017-07-13 18:17:17 -0300 |
commit | 5688fd77b57f1dd454990dc6fe48c6a3a1729eca (patch) | |
tree | c061e094bf7e05c6aad9a54ee339b1c78e656cfe | |
parent | 6f205a42d76a080d10e768f66ae2cf5c2c8b9f6d (diff) | |
download | ffmpeg-5688fd77b57f1dd454990dc6fe48c6a3a1729eca.tar.gz |
x86/vf_limiter: make limiter functions work on x86_32
Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r-- | libavfilter/x86/vf_limiter.asm | 28 | ||||
-rw-r--r-- | libavfilter/x86/vf_limiter_init.c | 4 |
2 files changed, 14 insertions, 18 deletions
diff --git a/libavfilter/x86/vf_limiter.asm b/libavfilter/x86/vf_limiter.asm index 9e7271be76..c5b9b0a64d 100644 --- a/libavfilter/x86/vf_limiter.asm +++ b/libavfilter/x86/vf_limiter.asm @@ -20,23 +20,21 @@ %include "libavutil/x86/x86util.asm" -%if ARCH_X86_64 - -SECTION_RODATA - -pb_0: times 16 db 0 - SECTION .text INIT_XMM sse2 -cglobal limiter_8bit, 8, 9, 3, src, dst, slinesize, dlinesize, w, h, min, max, x +cglobal limiter_8bit, 6, 7, 3, src, dst, slinesize, dlinesize, w, h, x movsxdifnidn wq, wd add srcq, wq add dstq, wq neg wq - SPLATB_REG m1, min, [pb_0] - SPLATB_REG m2, max, [pb_0] + movd m1, r6m + punpcklbw m1, m1 + SPLATW m1, m1 + movd m2, r7m + punpcklbw m2, m2 + SPLATW m2, m2 .nextrow: mov xq, wq @@ -51,18 +49,18 @@ cglobal limiter_8bit, 8, 9, 3, src, dst, slinesize, dlinesize, w, h, min, max, x add dstq, dlinesizeq sub hd, 1 jg .nextrow - ret + RET INIT_XMM sse4 -cglobal limiter_16bit, 8, 9, 3, src, dst, slinesize, dlinesize, w, h, min, max, x +cglobal limiter_16bit, 6, 7, 3, src, dst, slinesize, dlinesize, w, h, x shl wd, 1 add srcq, wq add dstq, wq neg wq - movd m1, mind + movd m1, r6m SPLATW m1, m1 - movd m2, maxd + movd m2, r7m SPLATW m2, m2 .nextrow: mov xq, wq @@ -79,6 +77,4 @@ cglobal limiter_16bit, 8, 9, 3, src, dst, slinesize, dlinesize, w, h, min, max, add dstq, dlinesizeq sub hd, 1 jg .nextrow - ret - -%endif + RET diff --git a/libavfilter/x86/vf_limiter_init.c b/libavfilter/x86/vf_limiter_init.c index ef7d20a1a0..07c733dc21 100644 --- a/libavfilter/x86/vf_limiter_init.c +++ b/libavfilter/x86/vf_limiter_init.c @@ -31,12 +31,12 @@ void ff_limiter_init_x86(LimiterDSPContext *dsp, int bpp) { int cpu_flags = av_get_cpu_flags(); - if (ARCH_X86_64 && EXTERNAL_SSE2(cpu_flags)) { + if (EXTERNAL_SSE2(cpu_flags)) { if (bpp <= 8) { dsp->limiter = ff_limiter_8bit_sse2; } } - if (ARCH_X86_64 && EXTERNAL_SSE4(cpu_flags)) { + if (EXTERNAL_SSE4(cpu_flags)) { if (bpp > 8) { dsp->limiter = ff_limiter_16bit_sse4; } |