--- trunk/xvidcore/src/bitstream/ppc_asm/cbp_ppc.s 2002/03/22 11:32:47 55 +++ trunk/xvidcore/src/bitstream/ppc_asm/cbp_ppc.s 2002/03/22 13:05:45 58 @@ -15,13 +15,13 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # -# $Id: cbp_ppc.s,v 1.3 2002-03-22 11:32:47 canard Exp $ +# $Id: cbp_ppc.s,v 1.6 2002-03-22 13:05:45 canard Exp $ # $Source: /home/xvid/cvs_copy/cvs-server-root/xvid/xvidcore/src/bitstream/ppc_asm/cbp_ppc.s,v $ -# $Date: 2002-03-22 11:32:47 $ +# $Date: 2002-03-22 13:05:45 $ # $Author: canard $ # -# This is my first PPC ASM program. So I might do nasty things. -# Please send any comments to guillaume@morinfr.org +# This is my first PPC ASM attempt. So I might do nasty things. +# Please send any comments to # Returns a field of bits that indicates non zero ac blocks @@ -55,13 +55,14 @@ calc_cbp_ppc: # r9 will contain coeffs addr mr 9,3 - # r8 is the loop counter + # r8 is the loop counter (rows) li 8,5 # r3 contains the result, therefore we set it to 0 xor 3,3,3 .loop: - # r7 is the loop2 counter, FIXME: use CTR - li 7,14 + # CTR is the loop2 counter + li 4,15 + mtctr 4 # r6 is coeff pointer for this line mr 6,9 .loop2: @@ -77,12 +78,8 @@ # testing bit 2 (is zero) of CR0 bf 2,.cbp addi 6,6,8 - # subic. updates CR0 - subic. 7,7,1 - # testing bit 0 (is negative) of CR0 - bt 0,.lastcoeffs - b .loop2 -.lastcoeffs: + bdnz .loop2 + # latest line coeffs lha 4,2(6) lha 5,4(6) or 4,5,4 @@ -95,11 +92,9 @@ li 4,1 slw 4,4,8 or 3,3,4 - b .newline .newline: addi 9,9,128 # updates CR0, blabla subic. 8,8,1 bf 0,.loop -.end: blr