i dunno. On Wednesday 27 August 2003 20:27, Takahashi, Chris wrote: > no; I _do_ _not_ want to unroll anything it but it gets unrolled(part way) > any way. Attached is the makefile and .c file which will make an asm list > with source. > > As you can see it unrolls the loop and processes 64bytes per loop instead > of 2(1 word) also if it _is_ going to do this why isn't it using the auto > increment addressing mode. > > -Chris Takahashi > > COMPILED WITH: -g -c -Os -mmcu=msp430x437 -fno-force-mem -fno-unroll-loops > -----------C----------- > for (addr = (int *)0x8000; addr != 0x0000; addr++) { > sum += *addr; > } > -----------ASM--------- > for (addr = (int *)0x8000; addr != 0x0000; addr++) { > 2: 3e 40 00 80 mov #-32768,r14 ;#0x8000 > sum += *addr; > 6: 2f 5e add @r14, r15 ; > 8: 1f 5e 02 00 add 2(r14), r15 ; > c: 1f 5e 04 00 add 4(r14), r15 ; > 10: 1f 5e 06 00 add 6(r14), r15 ; > 14: 1f 5e 08 00 add 8(r14), r15 ; > 18: 1f 5e 0a 00 add 10(r14),r15 ; > 1c: 1f 5e 0c 00 add 12(r14),r15 ; > 20: 1f 5e 0e 00 add 14(r14),r15 ; > 24: 1f 5e 10 00 add 16(r14),r15 ; > 28: 1f 5e 12 00 add 18(r14),r15 ; > 2c: 1f 5e 14 00 add 20(r14),r15 ; > 30: 1f 5e 16 00 add 22(r14),r15 ; > 34: 1f 5e 18 00 add 24(r14),r15 ; > 38: 1f 5e 1a 00 add 26(r14),r15 ; > 3c: 1f 5e 1c 00 add 28(r14),r15 ; > 40: 1f 5e 1e 00 add 30(r14),r15 ; > 44: 1f 5e 20 00 add 32(r14),r15 ; > 48: 1f 5e 22 00 add 34(r14),r15 ; > 4c: 1f 5e 24 00 add 36(r14),r15 ; > 50: 1f 5e 26 00 add 38(r14),r15 ; > 54: 1f 5e 28 00 add 40(r14),r15 ; > 58: 1f 5e 2a 00 add 42(r14),r15 ; > 5c: 1f 5e 2c 00 add 44(r14),r15 ; > 60: 1f 5e 2e 00 add 46(r14),r15 ; > 64: 1f 5e 30 00 add 48(r14),r15 ; > 68: 1f 5e 32 00 add 50(r14),r15 ; > 6c: 1f 5e 34 00 add 52(r14),r15 ; > 70: 1f 5e 36 00 add 54(r14),r15 ; > 74: 1f 5e 38 00 add 56(r14),r15 ; > 78: 1f 5e 3a 00 add 58(r14),r15 ; > 7c: 1f 5e 3c 00 add 60(r14),r15 ; > 80: 1f 5e 3e 00 add 62(r14),r15 ; > 84: 3e 50 40 00 add #64, r14 ;#0x0040 > 88: be 23 jnz $-130 ;abs 0x6 > } > > > > -----Original Message----- > From: Dmitry [mailto:di...@mail.ru] > Sent: Wednesday, August 27, 2003 9:18 AM > To: mspgcc-users@lists.sourceforge.net > Subject: Re: [Mspgcc-users] partial loop unrolling. > > > well, > you want to unroll whole loop? > try to use -funroll-all-loops > ~d > > On Wednesday 27 August 2003 20:05, Takahashi, Chris wrote: > > I've tried that. No change. When using -Os or -O2 (or I think even -O3) > > loop unrolling isn't turned on (according to what I've found by looking > > in gcc-3.2.3/gcc/toplev.c) > > > > -Chris Takahashi > > > > > > > > -----Original Message----- > > From: Dmitry [mailto:di...@mail.ru] > > Sent: Wednesday, August 27, 2003 3:13 AM > > To: mspgcc-users@lists.sourceforge.net > > Subject: Re: [Mspgcc-users] partial loop unrolling. > > > > > > use -fno-unroll-loops > > ~d > > > > On Wednesday 27 August 2003 03:01, Takahashi, Chris wrote: > > > The following code creates some interesting asm with the following > > flags: > > > -g -c -Os -fno-force-mem -mmcu=msp430x437 > > > > > > It looks like it unrolled the loop in 64 byte chunks and is instead > > > iterating over that. While this is faster this would hardly ever get > > run > > > > so I would rather have it small. > > > > > > attached are list files with the -fno-force-mem on and off and the C > > > file. > > > > > > If I change the span it iterates over to a nonmultiple of 64 I get the > > > expected asm. > > > > > > My question is what does no-force-mem have to do with this and why > > > isn't auto increment addressing being used? In this case it would save > > > quite > > a > > > > bit here. > > > > > > -Chris > > > > > > --- > > > > > > #include <msp430x44x.h> > > > > > > int test() > > > { > > > unsigned int sum = 0; > > > unsigned int *addr; > > > > > > for (addr = (int *)0x8000; addr != 0x0000; addr++) { > > > sum += *addr; > > > } > > > > > > return sum; > > > } > > > > > > ------- > > > > > > for (addr = (int *)0x8000; addr != 0x0000; addr++) {^M > > > 2: 3e 40 00 80 mov #-32768,r14 ;#0x8000 > > > sum += *addr;^M > > > 6: 2f 5e add @r14, r15 ; > > > 8: 1f 5e 02 00 add 2(r14), r15 ; > > > c: 1f 5e 04 00 add 4(r14), r15 ; > > > 10: 1f 5e 06 00 add 6(r14), r15 ; > > > 14: 1f 5e 08 00 add 8(r14), r15 ; > > > 18: 1f 5e 0a 00 add 10(r14),r15 ; > > > 1c: 1f 5e 0c 00 add 12(r14),r15 ; > > > 20: 1f 5e 0e 00 add 14(r14),r15 ; > > > 24: 1f 5e 10 00 add 16(r14),r15 ; > > > 28: 1f 5e 12 00 add 18(r14),r15 ; > > > 2c: 1f 5e 14 00 add 20(r14),r15 ; > > > 30: 1f 5e 16 00 add 22(r14),r15 ; > > > 34: 1f 5e 18 00 add 24(r14),r15 ; > > > 38: 1f 5e 1a 00 add 26(r14),r15 ; > > > 3c: 1f 5e 1c 00 add 28(r14),r15 ; > > > 40: 1f 5e 1e 00 add 30(r14),r15 ; > > > 44: 1f 5e 20 00 add 32(r14),r15 ; > > > 48: 1f 5e 22 00 add 34(r14),r15 ; > > > 4c: 1f 5e 24 00 add 36(r14),r15 ; > > > 50: 1f 5e 26 00 add 38(r14),r15 ; > > > 54: 1f 5e 28 00 add 40(r14),r15 ; > > > 58: 1f 5e 2a 00 add 42(r14),r15 ; > > > 5c: 1f 5e 2c 00 add 44(r14),r15 ; > > > 60: 1f 5e 2e 00 add 46(r14),r15 ; > > > 64: 1f 5e 30 00 add 48(r14),r15 ; > > > 68: 1f 5e 32 00 add 50(r14),r15 ; > > > 6c: 1f 5e 34 00 add 52(r14),r15 ; > > > 70: 1f 5e 36 00 add 54(r14),r15 ; > > > 74: 1f 5e 38 00 add 56(r14),r15 ; > > > 78: 1f 5e 3a 00 add 58(r14),r15 ; > > > 7c: 1f 5e 3c 00 add 60(r14),r15 ; > > > 80: 1f 5e 3e 00 add 62(r14),r15 ; > > > 84: 3e 50 40 00 add #64, r14 ;#0x0040 > > > 88: be 23 jnz $-130 ;abs 0x6 > > > }
-- /***************************************************************** ("`-''-/").___..--''"`-._ (\ Dimmy the Wild UA1ACZ `6_ 6 ) `-. ( ).`-.__.`) State Polytechnical Univ. (_Y_.)' ._ ) `._ `. ``-..-' Radio-Physics Departament _..`--'_..-_/ /--'_.' ,' Saint Petersburg, Russia (il),-'' (li),' ((!.-' +7 (812) 5403923, 5585314 *****************************************************************/