------- 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

Reply via email to