avcodec/x86/hpeldsp: Avoid constant in {avg,put}_pixels16_xy2_ssse3

No difference in benchmarks here.

Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt
2026-04-11 12:55:24 +02:00
parent f5c26ccf93
commit 5d277e8c7c
+24 -28
View File
@@ -27,11 +27,9 @@
%include "libavutil/x86/x86util.asm"
SECTION_RODATA
cextern pb_1
cextern pw_1
cextern pw_2
pb_interleave16: db 0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15
cextern pw_8192
@@ -503,51 +501,49 @@ SET_PIXELS_XY2 avg, pw_1, _no_rnd
%macro SSSE3_PIXELS_XY2 1-2
cglobal %1_pixels16_xy2, 4,5,%2
mova m4, [pb_interleave16]
mova m5, [pb_1]
movu m0, [r1]
movu m1, [r1+1]
pmaddubsw m0, m5
movu m0, [r1]
mova m5, [pb_1]
mova m4, [pw_8192]
pmaddubsw m1, m5
pmaddubsw m0, m5
xor r4, r4
add r1, r2
.loop:
movu m2, [r1+r4]
movu m3, [r1+r4+1]
pmaddubsw m2, m5
movu m2, [r1+r4]
pmaddubsw m3, m5
paddw m0, m2
paddw m1, m3
pmulhrsw m0, [pw_8192]
pmulhrsw m1, [pw_8192]
pmaddubsw m2, m5
%ifidn %1, avg
mova m6, [r0+r4]
packuswb m0, m1
pshufb m0, m4
%endif
paddw m1, m3
paddw m0, m2
pmulhrsw m1, m4
pmulhrsw m0, m4
pslldq m1, 1
por m0, m1
%ifidn %1, avg
pavgb m0, m6
%else
packuswb m0, m1
pshufb m0, m4
%endif
mova [r0+r4], m0
add r4, r2
movu m0, [r1+r4]
movu m1, [r1+r4+1]
pmaddubsw m0, m5
movu m0, [r1+r4]
pmaddubsw m1, m5
paddw m2, m0
paddw m3, m1
pmulhrsw m2, [pw_8192]
pmulhrsw m3, [pw_8192]
pmaddubsw m0, m5
%ifidn %1, avg
mova m6, [r0+r4]
packuswb m2, m3
pshufb m2, m4
%endif
paddw m3, m1
paddw m2, m0
pmulhrsw m3, m4
pmulhrsw m2, m4
pslldq m3, 1
por m2, m3
%ifidn %1, avg
pavgb m2, m6
%else
packuswb m2, m3
pshufb m2, m4
%endif
mova [r0+r4], m2
add r4, r2