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
 *****************************************************************/

Attachment: test.c
Description: Binary data

Attachment: Makefile
Description: Binary data

Reply via email to