[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-gcc-list] optimizing multiplies with mixed sizes
From: |
Galen Seitz |
Subject: |
[avr-gcc-list] optimizing multiplies with mixed sizes |
Date: |
Fri, 27 Aug 2004 08:55:40 -0700 |
Has any work been done on optimizing multiplies involving mixed sizes?
It seems that gcc could do a better job. The extra clr, mul, and add
are kind of painful to see.
galen
int
mul(unsigned char x, int y)
{
return x * y;
}
avr-gcc-3.3.2 -g -O3 -Wall -mmcu=atmega48 -Wa,-ahls=foo.lst -c -o foo.o foo.c
1:foo.c **** int
2:foo.c **** mul(unsigned char x, int y)
3:foo.c **** {
46 0000 AB01 movw r20,r22
4:foo.c **** return x * y;
49 0002 9927 clr r25
50 0004 849F mul r24,r20
51 0006 B001 movw r22,r0
52 0008 859F mul r24,r21
53 000a 700D add r23,r0
54 000c 949F mul r25,r20
55 000e 700D add r23,r0
56 0010 1124 clr r1
57 0012 CB01 movw r24,r22
5:foo.c **** }
61 0014 0895 ret
- [avr-gcc-list] optimizing multiplies with mixed sizes,
Galen Seitz <=