OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.c-torture/] [unsorted/] [udivmod4.c] - Diff between revs 297 and 338

Only display areas with differences | Details | Blame | View Log

Rev 297 Rev 338
long long
long long
xlrandom ()
xlrandom ()
{
{
  long long x;
  long long x;
  unsigned a;
  unsigned a;
  int bits = 64;
  int bits = 64;
  unsigned b;
  unsigned b;
 
 
  do
  do
    {
    {
      a = random ();
      a = random ();
      b = (a & 15) + 1;
      b = (a & 15) + 1;
      x <<= b;                          /* shift up 1-16 steps */
      x <<= b;                          /* shift up 1-16 steps */
      a = (a >> 18) & 1;
      a = (a >> 18) & 1;
      if (a)
      if (a)
        x |= (unsigned) (1 << b) - 1;
        x |= (unsigned) (1 << b) - 1;
      bits -= b;
      bits -= b;
    }
    }
  while (bits >= 0);
  while (bits >= 0);
  return x;
  return x;
}
}
 
 
 
 
unsigned long long __udivmoddi4();
unsigned long long __udivmoddi4();
 
 
main ()
main ()
{
{
  int i;
  int i;
  unsigned long long n, d, q, r, rr;
  unsigned long long n, d, q, r, rr;
 
 
  for (i = 0; ;i++)
  for (i = 0; ;i++)
    {
    {
      n = xlrandom ();
      n = xlrandom ();
      d = xlrandom ();
      d = xlrandom ();
      if (d == 0)
      if (d == 0)
        continue;
        continue;
 
 
      q = __udivmoddi4 (n, d, &r);
      q = __udivmoddi4 (n, d, &r);
 
 
      if (i % 1000000 == 0)
      if (i % 1000000 == 0)
        printf ("Testing udivmoddi4: %d iterations made\n", i);
        printf ("Testing udivmoddi4: %d iterations made\n", i);
 
 
      rr = n - q * d;
      rr = n - q * d;
      if (rr != r || r >= d)
      if (rr != r || r >= d)
        {
        {
          printf ("Testing udivmoddi4: failure after %d iterations\n", i);
          printf ("Testing udivmoddi4: failure after %d iterations\n", i);
          printf ("n=%lX%08lX\n", (unsigned) (n >> 32), (unsigned) n);
          printf ("n=%lX%08lX\n", (unsigned) (n >> 32), (unsigned) n);
          printf ("d=%lX%08lX\n", (unsigned) (d >> 32), (unsigned) d);
          printf ("d=%lX%08lX\n", (unsigned) (d >> 32), (unsigned) d);
          printf ("q=%lX%08lX\n", (unsigned) (q >> 32), (unsigned) q);
          printf ("q=%lX%08lX\n", (unsigned) (q >> 32), (unsigned) q);
          printf ("r=%lX%08lX\n", (unsigned) (r >> 32), (unsigned) r);
          printf ("r=%lX%08lX\n", (unsigned) (r >> 32), (unsigned) r);
          printf ("rr=%lX%08lX\n", (unsigned) (rr >> 32), (unsigned) rr);
          printf ("rr=%lX%08lX\n", (unsigned) (rr >> 32), (unsigned) rr);
          abort ();
          abort ();
        }
        }
    }
    }
 
 
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.