Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!ucbvax!decwrl!49.1009.enet!neideck From: neideck@49.1009.enet (Burkhard Neidecker-Lutz) Newsgroups: comp.unix.wizards Subject: Re: Optimal for loop on the 68020 Message-ID: <8906080642.AA15947@decwrl.dec.com> Date: 8 Jun 89 06:42:38 GMT Organization: Digital Equipment Corporation Lines: 56 Freshly off a DecStation 3100 with a MIPS 1.31 compiler: #define COUNT 127 int main() { int i; for ( i = 0; i < COUNT; ++i ); move v1,zero addiu v1,v1,1 L1: slti at,v1,127 # 3 cycle loop bne at,zero,L1 addiu v1,v1,1 for ( i = 0; ++i <= COUNT; ); li v1,1 addiu v1,v1,1 L2: slti at,v1,128 # 3 cycle loop bne at,zero,L2 addiu v1,v1,1 for ( i = 0; i++ < COUNT; ); li v1,1 L3: slti v0,v1,127 # 3 cycle loop bne v0,zero,L3 addiu v1,v1,1 for ( i = COUNT; i > 0; i-- ); li v1,127 addiu v1,v1,-1 L4: bgtz v1,L4 # 2 cycle loop addiu v1,v1,-1 for ( i = COUNT; i > 0; --i ); li v1,127 addiu v1,v1,-1 L5: bgtz v1,L5 # 2 cycle loop addiu v1,v1,-1 for ( i = COUNT; --i >= 0; ); li v1,126 addiu v1,v1,-1 L6: bgez v1,L6 # 2 cycle loop addiu v1,v1,-1 for ( i = COUNT; i-- > 0; ); li v1,126 move v0,v1 L7: bgtz v0,L7 # 2 cycle loop addiu v1,v1,-1 return(i); jr ra move v0,v1 } As usual, counting towards zero is more efficient than the upward direction, but we knew that already, don't we ? Burkhard Neidecker-Lutz, Digital CEC Karlsruhe, Project NESTOR Disclaimer: I don't speak for Digital, etc. ...