Something
public text v1 · immutable;
; scale_frame( uint16_t *src, uint16_t *dst, int stride, int lshift, int rshift, int height )
;
INIT_XMM
cglobal scale_frame_sse2, 6,7
movd xmm2, r3d
movd xmm3, r4d
sub r1, r0
; dst[k] = (src[k] << lshift) + (src[k] >> rshift);
.heightloop
mov r6d, r2d
.widthloop
movdqa xmm0, [r0]
movdqa xmm1, xmm0
psllw xmm0, xmm2
psrlw xmm1, xmm3
paddw xmm0, xmm1
movdqa [r1+r0], xmm0
sub r6d, 16
lea r0, [r0+16]
jg .widthloop
sub r5d, 1
jg .heightloop
REP_RET