Commit 5688fd77 authored by James Almer's avatar James Almer

x86/vf_limiter: make limiter functions work on x86_32

Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
parent 6f205a42
...@@ -20,23 +20,21 @@ ...@@ -20,23 +20,21 @@
%include "libavutil/x86/x86util.asm" %include "libavutil/x86/x86util.asm"
%if ARCH_X86_64
SECTION_RODATA
pb_0: times 16 db 0
SECTION .text SECTION .text
INIT_XMM sse2 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 movsxdifnidn wq, wd
add srcq, wq add srcq, wq
add dstq, wq add dstq, wq
neg wq neg wq
SPLATB_REG m1, min, [pb_0] movd m1, r6m
SPLATB_REG m2, max, [pb_0] punpcklbw m1, m1
SPLATW m1, m1
movd m2, r7m
punpcklbw m2, m2
SPLATW m2, m2
.nextrow: .nextrow:
mov xq, wq mov xq, wq
...@@ -51,18 +49,18 @@ cglobal limiter_8bit, 8, 9, 3, src, dst, slinesize, dlinesize, w, h, min, max, x ...@@ -51,18 +49,18 @@ cglobal limiter_8bit, 8, 9, 3, src, dst, slinesize, dlinesize, w, h, min, max, x
add dstq, dlinesizeq add dstq, dlinesizeq
sub hd, 1 sub hd, 1
jg .nextrow jg .nextrow
ret RET
INIT_XMM sse4 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 shl wd, 1
add srcq, wq add srcq, wq
add dstq, wq add dstq, wq
neg wq neg wq
movd m1, mind movd m1, r6m
SPLATW m1, m1 SPLATW m1, m1
movd m2, maxd movd m2, r7m
SPLATW m2, m2 SPLATW m2, m2
.nextrow: .nextrow:
mov xq, wq mov xq, wq
...@@ -79,6 +77,4 @@ cglobal limiter_16bit, 8, 9, 3, src, dst, slinesize, dlinesize, w, h, min, max, ...@@ -79,6 +77,4 @@ cglobal limiter_16bit, 8, 9, 3, src, dst, slinesize, dlinesize, w, h, min, max,
add dstq, dlinesizeq add dstq, dlinesizeq
sub hd, 1 sub hd, 1
jg .nextrow jg .nextrow
ret RET
%endif
...@@ -31,12 +31,12 @@ void ff_limiter_init_x86(LimiterDSPContext *dsp, int bpp) ...@@ -31,12 +31,12 @@ void ff_limiter_init_x86(LimiterDSPContext *dsp, int bpp)
{ {
int cpu_flags = av_get_cpu_flags(); int cpu_flags = av_get_cpu_flags();
if (ARCH_X86_64 && EXTERNAL_SSE2(cpu_flags)) { if (EXTERNAL_SSE2(cpu_flags)) {
if (bpp <= 8) { if (bpp <= 8) {
dsp->limiter = ff_limiter_8bit_sse2; dsp->limiter = ff_limiter_8bit_sse2;
} }
} }
if (ARCH_X86_64 && EXTERNAL_SSE4(cpu_flags)) { if (EXTERNAL_SSE4(cpu_flags)) {
if (bpp > 8) { if (bpp > 8) {
dsp->limiter = ff_limiter_16bit_sse4; dsp->limiter = ff_limiter_16bit_sse4;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment