|
|
|
@ -19,11 +19,13 @@ |
|
|
|
#if defined(__i386__) && defined(__GNUC__) |
|
|
|
|
|
|
|
#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ |
|
|
|
long __tmpvar; \ |
|
|
|
__asm__ ("imul %3,%0\n" \ |
|
|
|
"adc $0,%1" \ |
|
|
|
: "=r"(lval),"=r"(usedval) \ |
|
|
|
: "=r"(__tmpvar),"=r"(usedval) \ |
|
|
|
: "0"(a), "r"(b), "1"(0)); \ |
|
|
|
if (usedval) (dval) = (double) (a) * (double) (b); \ |
|
|
|
else (lval) = __tmpvar; \ |
|
|
|
} while (0) |
|
|
|
|
|
|
|
#else |
|
|
|
|