Mercurial > libavcodec.hg
comparison x86/h264_intrapred.asm @ 12004:2002ea7c06f6 libavcodec
MMXEXT version of vp8 4x4 vertical pred
author | darkshikari |
---|---|
date | Tue, 29 Jun 2010 00:23:52 +0000 |
parents | 3b761226ea35 |
children | 09705b027344 |
comparison
equal
deleted
inserted
replaced
12003:3b761226ea35 | 12004:2002ea7c06f6 |
---|---|
25 | 25 |
26 tm_shuf: times 8 db 0x03, 0x80 | 26 tm_shuf: times 8 db 0x03, 0x80 |
27 | 27 |
28 SECTION .text | 28 SECTION .text |
29 | 29 |
30 cextern pb_1 | |
30 cextern pb_3 | 31 cextern pb_3 |
31 | 32 |
32 ;----------------------------------------------------------------------------- | 33 ;----------------------------------------------------------------------------- |
33 ; void pred16x16_vertical(uint8_t *src, int stride) | 34 ; void pred16x16_vertical(uint8_t *src, int stride) |
34 ;----------------------------------------------------------------------------- | 35 ;----------------------------------------------------------------------------- |
570 movd [r0+r2*1], mm2 | 571 movd [r0+r2*1], mm2 |
571 movd [r0+r2*2], mm3 | 572 movd [r0+r2*2], mm3 |
572 movd [r1+r2*1], mm4 | 573 movd [r1+r2*1], mm4 |
573 movd [r1+r2*2], mm5 | 574 movd [r1+r2*2], mm5 |
574 RET | 575 RET |
576 | |
577 ; dest, left, right, src, tmp | |
578 ; output: %1 = (t[n-1] + t[n]*2 + t[n+1] + 2) >> 2 | |
579 %macro PRED4x4_LOWPASS 5 | |
580 mova %5, %2 | |
581 pavgb %2, %3 | |
582 pxor %3, %5 | |
583 mova %1, %4 | |
584 pand %3, [pb_1] | |
585 psubusb %2, %3 | |
586 pavgb %1, %2 | |
587 %endmacro | |
588 | |
589 ;----------------------------------------------------------------------------- | |
590 ; void pred4x4_vertical_vp8_mmxext(uint8_t *src, const uint8_t *topright, int stride) | |
591 ;----------------------------------------------------------------------------- | |
592 | |
593 INIT_MMX | |
594 cglobal pred4x4_vertical_vp8_mmxext, 3,3 | |
595 sub r0, r2 | |
596 movd m1, [r0-1] | |
597 movd m0, [r0] | |
598 mova m2, m0 ;t0 t1 t2 t3 | |
599 punpckldq m0, [r1] ;t0 t1 t2 t3 t4 t5 t6 t7 | |
600 lea r1, [r0+r2*2] | |
601 psrlq m0, 8 ;t1 t2 t3 t4 | |
602 PRED4x4_LOWPASS m3, m1, m0, m2, m4 | |
603 movd [r0+r2*1], m3 | |
604 movd [r0+r2*2], m3 | |
605 movd [r1+r2*1], m3 | |
606 movd [r1+r2*2], m3 | |
607 RET |