------- Comment #17 from belyshev at depni dot sinp dot msu dot ru 2007-09-27 08:01 ------- (In reply to comment #16) something like this (for gcc.target/i386):
/* { dg-do run } */ /* { dg-require-effective-target lp64 } */ /* { dg-options "-O2"} */ unsigned long a [100]; int main (void) { unsigned long v = 0x500000000UL, c = 13, low, high; long j; a [0] = 0x200000000UL; a [1] = 0x300000000UL; for (j = 0; j < 100; j++) { asm ("mulq %3" : "=a" (low), "=d" (high) : "0" (a [j]), "rm" (v)); asm ("addq %5,%q1\n\tadcq %3,%q0" : "=r" (c), "=&r" (a [j]) : "0" (high), "rme" (0), "1" (low), "rme" (c)); } if (a [0] != 13 || a [1] != 10 || a [2] != 15 || a [3] != 0) __builtin_abort (); return 0; } -- belyshev at depni dot sinp dot msu dot ru changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |belyshev at depni dot sinp | |dot msu dot ru http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33552