# HG changeset patch # User michaelni # Date 1035710448 0 # Node ID 311ac50375e4461f296e47cf5e071dd4e2e53a9e # Parent d4cc92144266fbd8310e93cb96cd5ac4f875b408 dsputil mmi cleanup patch by (Leon van Stuivenberg ) diff -r d4cc92144266 -r 311ac50375e4 ps2/dsputil_mmi.c --- a/ps2/dsputil_mmi.c Sun Oct 27 00:02:23 2002 +0000 +++ b/ps2/dsputil_mmi.c Sun Oct 27 09:20:48 2002 +0000 @@ -22,10 +22,6 @@ #include "../dsputil.h" #include "mmi.h" -/* the provided 'as' in binutils 2.9EE doesn't support -the EE's mips3 instructions properly */ -#define AS_BUGGY - static void clear_blocks_mmi(DCTELEM * blocks) { @@ -49,19 +45,15 @@ { int i; for(i=0;i<8;i++) { -#ifdef AS_BUGGY - ld3(5, 0, 8); asm volatile( - "add %1, %1, %2 \n\t" - "pextlb $8, $0, $8 \n\t" - "sq $8, 0(%0) \n\t" :: "r" (block), "r" (pixels), "r" (line_size) : "$8", "memory" ); -#else - asm volatile( + ".set push \n\t" + ".set mips3 \n\t" "ld $8, 0(%1) \n\t" "add %1, %1, %2 \n\t" "pextlb $8, $0, $8 \n\t" - "sq $8, 0(%0) \n\t" :: "r" (block), "r" (pixels), "r" (line_size) : "$8", "memory" ); -#endif + "sq $8, 0(%0) \n\t" + ".set pop \n\t" + :: "r" (block), "r" (pixels), "r" (line_size) : "$8", "memory" ); block += 8; } } @@ -71,20 +63,16 @@ { int i; for(i=0; i>2); i++) { asm volatile ( - "ldr $8, 0(%1) \n\t" - "ldl $8, 7(%1) \n\t" - "ldr $9, 8(%1) \n\t" - "ldl $9, 15(%1) \n\t" - "add %1, %1, %2 \n\t" - "pcpyld $8, $9, $8 \n\t" - "sq $8, 0(%0) \n\t" - "add %0, %0, %2 \n\t" :: "r" (block), "r" (pixels), "r" (line_size) : "$8", "$9", "memory" ); -#endif + ".set push \n\t" + ".set mips3 \n\t" +#define PUTPIX16 \ + "ldr $8, 0(%1) \n\t" \ + "ldl $8, 7(%1) \n\t" \ + "ldr $9, 8(%1) \n\t" \ + "ldl $9, 15(%1) \n\t" \ + "add %1, %1, %2 \n\t" \ + "pcpyld $8, $9, $8 \n\t" \ + "sq $8, 0(%0) \n\t" \ + "add %0, %0, %2 \n\t" + PUTPIX16 + PUTPIX16 + PUTPIX16 + PUTPIX16 + ".set pop \n\t" + :: "r" (block), "r" (pixels), "r" (line_size) : "$8", "$9", "memory" ); } }