SECTION_RODATA v210_mask: times 4 dd 0x3ff SECTION .text %macro v210_planar_unpack 1 ; decode_words( const uint32_t *src, uint16_t *y, uint16_t *u, uint16_t *v ) cglobal v210_planar_unpack_%1, 4, 4 mova m3, [v210_mask] movu m0, [r0] psrld m1, m0, 10 psrld m2, m0, 20 pand m0, m3 pand m1, m3 pand m2, m3 pextrw [r1], m1, 0 pextrw [r1+2], m0, 2 pextrw [r1+4], m2, 2 pextrw [r1+6], m1, 4 pextrw [r1+8], m0, 6 pextrw [r1+10], m2, 6 pextrw [r2], m0, 0 pextrw [r2+2], m1, 2 pextrw [r2+4], m2, 4 pextrw [r3], m2, 0 pextrw [r3+2], m0, 4 pextrw [r3+4], m1, 6 RET %endmacro INIT_XMM v210_planar_unpack sse2 INIT_AVX v210_planar_unpack avx