Something
public text v1 · immutable%include "x86inc.asm"
%include "x86util.asm"
;
; 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);
.loop
mov r6, r2
movdqa xmm0, [r0]
movdqa xmm1, xmm0
psllw xmm0, xmm2
psrlw xmm1, xmm3
paddw xmm0, xmm1
movdqa [r1+r0], xmm0 ;FIXME
sub r6d, 8
lea r0, [r0+16]
jg .loop
sub r5d, 1
jg .loop
REP_RET