Re: Runaway cron task on 2.5.63/4 bk?

Andrew Morton
2003-03-11T23:03:30Z

Linus Torvalds <torvalds@transmeta.com> wrote:
>
>
> On Tue, 11 Mar 2003, Andrew Morton wrote:
> >
> > gcc will generate 64bit * 64bit multiplies without resorting to
> > any library code
>
> However, gcc is unable to do-the-right-thing and generate 32x32->64
> multiplies, or 32x64->64 multiplies, even though those are both a _lot_
> faster than the full 64x64->64 case.

2.95.3 and 3.2.1 seem to do it right?

long a;
long b;
long long c;

void foo(void)
{
c = a * b;
}

.file "t.c"
.version "01.01"
gcc2_compiled.:
.text
.align 4
.globl foo
.type foo,@function
foo:
pushl %ebp
movl %esp,%ebp
movl a,%eax
imull b,%eax
movl %eax,c
cltd
movl %edx,c+4
.L2:
movl %ebp,%esp
popl %ebp
ret
.Lfe1:
.size foo,.Lfe1-foo
.comm a,4,4
.comm b,4,4
.comm c,8,4
.ident "GCC: (GNU) 2.95.3 20010315 (release)"