Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;----------------------------------------------------------------------------
- ; static int pixel_vsad( pixel *src(r0), int stride(r1), int height(r2))
- ;----------------------------------------------------------------------------
- %macro PIXEL_VSAD 0
- cglobal pixel_vsad, 3,3
- mova m0, [r0]
- mova m1, [r0+r1]
- lea r0, [r0+r1*2]
- psubw m0, m1
- pabsw m0, m1
- paddw m0, m1
- sub r2d, 2
- je .end
- .loop:
- mova m2, [r0]
- mova m3, [r0+r1]
- lea r0, [r0+r1*2]
- psubw m1, m2
- pabsw m1, m2
- paddw m1, m2
- psubw m2, m3
- pabsw m2, m3
- paddw m2, m3
- paddw m0, m1
- paddw m0, m2
- mova m1, m3
- sub r2d, 2
- jg .loop
- .end:
- movhlps m1, m0
- paddw m0, m1
- movd eax, m0
- RET
- %endmacro
- INIT_XMM sse2
- PIXEL_VSAD
Add Comment
Please, Sign In to add comment