On Thursday 08 February 2007 16:02, Graham Stott wrote:
> All,
>
> Not a bug in GCC the result is correct as you've only asked for a 32-bit
> multiply.

Ok, thanks. But really I don't want to do "((int64_t)a) * b", which I know 
works, hence that is very much slower than "a * b" on intel processors, hence 
the "mull" instruction will be used instead of "imul".

I found the following option by googling:
-mwide-multiply multiplies of 32 bits are 64

Is there an __attribute__() that I can use that will enable this for one 
multiplication, and not all ? Or something similar ?

>
> --- Hans Petter Selasky <[EMAIL PROTECTED]> wrote:
> > Test program:
> >
> > #include <stdio.h>
> > #include <sys/types.h>
> >
> > int main() {
> >
> >         int32_t a = 0x40000000;
> >         int16_t b = 0x4000;
> >         int64_t c = a * b;
>
>                       ^^^^^ this is a 32-bit multiply with the result
> widened to 64-bit,
>
> >         printf("0x%016llx\n", c);
> >
> >         return 0;
> > }

--HPS

Reply via email to