aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Kurshev <nickols_k@mail.ru>2001-11-11 17:55:54 +0000
committerNick Kurshev <nickols_k@mail.ru>2001-11-11 17:55:54 +0000
commitf12e206b4737b84afa6071f4b464664a50b0c916 (patch)
tree02062a0e3e90b2041b9ecd38276f7fce6c74bec5
parent815cbfe71eabe508378d705ad42c05ef6265ff82 (diff)
downloadffmpeg-f12e206b4737b84afa6071f4b464664a50b0c916.tar.gz
Let loops will be aligned
Originally committed as revision 213 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/i386/mpegvideo_mmx.c41
1 files changed, 2 insertions, 39 deletions
diff --git a/libavcodec/i386/mpegvideo_mmx.c b/libavcodec/i386/mpegvideo_mmx.c
index e797cc311d..b34d4eb038 100644
--- a/libavcodec/i386/mpegvideo_mmx.c
+++ b/libavcodec/i386/mpegvideo_mmx.c
@@ -105,6 +105,7 @@ asm volatile(
"packssdw %%mm5, %%mm5 \n\t"
"psubw %%mm5, %%mm7 \n\t"
"pxor %%mm4, %%mm4 \n\t"
+ ".balign 16\n\t"
"1: \n\t"
"movq (%0, %3), %%mm0 \n\t"
"movq 8(%0, %3), %%mm1 \n\t"
@@ -264,6 +265,7 @@ asm volatile(
"movd %2, %%mm6 \n\t"
"packssdw %%mm6, %%mm6 \n\t"
"packssdw %%mm6, %%mm6 \n\t"
+ ".balign 16\n\t"
"1: \n\t"
"movq (%0, %3), %%mm0 \n\t"
"movq 8(%0, %3), %%mm1 \n\t"
@@ -310,45 +312,6 @@ asm volatile(
::"r" (block), "r"(quant_matrix), "g" (qscale), "r" (2*i)
: "memory"
);
-
-#if 0
- __asm __volatile(
- "movd %0, %%mm6\n\t" /* mm6 = qscale | 0 */
- "punpckldq %%mm6, %%mm6\n\t" /* mm6 = qscale | qscale */
- "movq %2, %%mm4\n\t"
- "movq %%mm6, %%mm7\n\t"
- "movq %1, %%mm5\n\t"
- "packssdw %%mm6, %%mm7\n\t" /* mm7 = qscale | qscale | qscale | qscale */
- "pxor %%mm6, %%mm6\n\t"
- ::"g"(qscale),"m"(mm_wone),"m"(mm_wabs));
- for(;i<64;i+=4) {
- __asm __volatile(
- "movq %1, %%mm0\n\t"
- "movq %%mm7, %%mm1\n\t"
- "movq %%mm0, %%mm2\n\t"
- "movq %%mm0, %%mm3\n\t"
- "pcmpgtw %%mm6, %%mm2\n\t"
- "pmullw %2, %%mm1\n\t"
- "pandn %%mm4, %%mm2\n\t"
- "por %%mm5, %%mm2\n\t"
- "pmullw %%mm2, %%mm0\n\t" /* mm0 = abs(block[i]). */
- "psllw $1, %%mm0\n\t" /* block[i] <<= 1 */
- "paddw %%mm5, %%mm0\n\t" /* block[i] ++ */
-
- "pmullw %%mm0, %%mm1\n\t"
- "psraw $4, %%mm1\n\t"
- "pcmpeqw %%mm6, %%mm3\n\t"
- "psubw %%mm5, %%mm1\n\t" /* block[i] --; */
- "pandn %%mm4, %%mm3\n\t" /* fake of pcmpneqw : mm0 != 0 then mm1 = -1 */
- "por %%mm5, %%mm1\n\t" /* block[i] |= 1 */
- "pmullw %%mm2, %%mm1\n\t" /* change signs again */
-
- "pand %%mm3, %%mm1\n\t" /* nullify if was zero */
- "movq %%mm1, %0"
- :"=m"(block[i])
- :"m"(block[i]), "m"(quant_matrix[i]));
- }
-#endif
}
}