Robert Shearman <[EMAIL PROTECTED]> writes:

> +    unsigned char overflow;
> +#if defined(__i386__) && defined (__GNUC__)
> +    __asm__(
> +            "mull %3\n\t"
> +            "seto %%cl"
> +            : "=a" (ret), "=c" (overflow) /* outputs: eax, cl */
> +            : "%a" (a), "rm" (b) /* inputs: eax, any register or memory
> +                                  * address (params are interchangable) */
> +            : "edx" /* edx clobbered */);
> +#else
> +    ret = a * b;
> +    overflow = (b && (ret / b != a));
> +#endif

That asm seems really overkill. Something like:

  ULONGLONG ret = (ULONGLONG)a * b;
  if (ret > 0xffffffff)

will generate pretty much the same code with a recent gcc, and it's a
lot more readable.

BTW could you please add a sequence number in the subject line for
your patches?  It makes things a lot easier for me when the mails
arrive out of order. Thanks.

-- 
Alexandre Julliard
[EMAIL PROTECTED]


Reply via email to