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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [arith-rand-ll.c] - Diff between revs 149 and 154

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

Rev 149 Rev 154
long long
long long
simple_rand ()
simple_rand ()
{
{
  static unsigned long long seed = 47114711;
  static unsigned long long seed = 47114711;
  unsigned long long this = seed * 1103515245 + 12345;
  unsigned long long this = seed * 1103515245 + 12345;
  seed = this;
  seed = this;
  return this >> 8;
  return this >> 8;
}
}
 
 
unsigned long long int
unsigned long long int
random_bitstring ()
random_bitstring ()
{
{
  unsigned long long int x;
  unsigned long long int x;
  int n_bits;
  int n_bits;
  long long ran;
  long long ran;
  int tot_bits = 0;
  int tot_bits = 0;
 
 
  x = 0;
  x = 0;
  for (;;)
  for (;;)
    {
    {
      ran = simple_rand ();
      ran = simple_rand ();
      n_bits = (ran >> 1) % 16;
      n_bits = (ran >> 1) % 16;
      tot_bits += n_bits;
      tot_bits += n_bits;
 
 
      if (n_bits == 0)
      if (n_bits == 0)
        return x;
        return x;
      else
      else
        {
        {
          x <<= n_bits;
          x <<= n_bits;
          if (ran & 1)
          if (ran & 1)
            x |= (1 << n_bits) - 1;
            x |= (1 << n_bits) - 1;
 
 
          if (tot_bits > 8 * sizeof (long long) + 6)
          if (tot_bits > 8 * sizeof (long long) + 6)
            return x;
            return x;
        }
        }
    }
    }
}
}
 
 
#define ABS(x) ((x) >= 0 ? (x) : -(x))
#define ABS(x) ((x) >= 0 ? (x) : -(x))
 
 
main ()
main ()
{
{
  long long int i;
  long long int i;
 
 
  for (i = 0; i < 10000; i++)
  for (i = 0; i < 10000; i++)
    {
    {
      unsigned long long x, y;
      unsigned long long x, y;
      x = random_bitstring ();
      x = random_bitstring ();
      y = random_bitstring ();
      y = random_bitstring ();
 
 
      if (sizeof (int) == sizeof (long long))
      if (sizeof (int) == sizeof (long long))
        goto save_time;
        goto save_time;
 
 
      { unsigned long long xx = x, yy = y, r1, r2;
      { unsigned long long xx = x, yy = y, r1, r2;
        if (yy == 0) continue;
        if (yy == 0) continue;
        r1 = xx / yy;
        r1 = xx / yy;
        r2 = xx % yy;
        r2 = xx % yy;
        if (r2 >= yy || r1 * yy + r2 != xx)
        if (r2 >= yy || r1 * yy + r2 != xx)
          abort ();
          abort ();
      }
      }
      { signed long long xx = x, yy = y, r1, r2;
      { signed long long xx = x, yy = y, r1, r2;
        if ((unsigned long long) xx << 1 == 0 && yy == -1)
        if ((unsigned long long) xx << 1 == 0 && yy == -1)
          continue;
          continue;
        r1 = xx / yy;
        r1 = xx / yy;
        r2 = xx % yy;
        r2 = xx % yy;
        if (ABS (r2) >= (unsigned long long) ABS (yy) || (signed long long) (r1 * yy + r2) != xx)
        if (ABS (r2) >= (unsigned long long) ABS (yy) || (signed long long) (r1 * yy + r2) != xx)
          abort ();
          abort ();
      }
      }
    save_time:
    save_time:
      { unsigned int xx = x, yy = y, r1, r2;
      { unsigned int xx = x, yy = y, r1, r2;
        if (yy == 0) continue;
        if (yy == 0) continue;
        r1 = xx / yy;
        r1 = xx / yy;
        r2 = xx % yy;
        r2 = xx % yy;
        if (r2 >= yy || r1 * yy + r2 != xx)
        if (r2 >= yy || r1 * yy + r2 != xx)
          abort ();
          abort ();
      }
      }
      { signed int xx = x, yy = y, r1, r2;
      { signed int xx = x, yy = y, r1, r2;
        if ((unsigned int) xx << 1 == 0 && yy == -1)
        if ((unsigned int) xx << 1 == 0 && yy == -1)
          continue;
          continue;
        r1 = xx / yy;
        r1 = xx / yy;
        r2 = xx % yy;
        r2 = xx % yy;
        if (ABS (r2) >= (unsigned int) ABS (yy) || (signed int) (r1 * yy + r2) != xx)
        if (ABS (r2) >= (unsigned int) ABS (yy) || (signed int) (r1 * yy + r2) != xx)
          abort ();
          abort ();
      }
      }
      { unsigned short xx = x, yy = y, r1, r2;
      { unsigned short xx = x, yy = y, r1, r2;
        if (yy == 0) continue;
        if (yy == 0) continue;
        r1 = xx / yy;
        r1 = xx / yy;
        r2 = xx % yy;
        r2 = xx % yy;
        if (r2 >= yy || r1 * yy + r2 != xx)
        if (r2 >= yy || r1 * yy + r2 != xx)
          abort ();
          abort ();
      }
      }
      { signed short xx = x, yy = y, r1, r2;
      { signed short xx = x, yy = y, r1, r2;
        r1 = xx / yy;
        r1 = xx / yy;
        r2 = xx % yy;
        r2 = xx % yy;
        if (ABS (r2) >= (unsigned short) ABS (yy) || (signed short) (r1 * yy + r2) != xx)
        if (ABS (r2) >= (unsigned short) ABS (yy) || (signed short) (r1 * yy + r2) != xx)
          abort ();
          abort ();
      }
      }
      { unsigned char xx = x, yy = y, r1, r2;
      { unsigned char xx = x, yy = y, r1, r2;
        if (yy == 0) continue;
        if (yy == 0) continue;
        r1 = xx / yy;
        r1 = xx / yy;
        r2 = xx % yy;
        r2 = xx % yy;
        if (r2 >= yy || r1 * yy + r2 != xx)
        if (r2 >= yy || r1 * yy + r2 != xx)
          abort ();
          abort ();
      }
      }
      { signed char xx = x, yy = y, r1, r2;
      { signed char xx = x, yy = y, r1, r2;
        r1 = xx / yy;
        r1 = xx / yy;
        r2 = xx % yy;
        r2 = xx % yy;
        if (ABS (r2) >= (unsigned char) ABS (yy) || (signed char) (r1 * yy + r2) != xx)
        if (ABS (r2) >= (unsigned char) ABS (yy) || (signed char) (r1 * yy + r2) != xx)
          abort ();
          abort ();
      }
      }
    }
    }
 
 
  exit (0);
  exit (0);
}
}
 
 

powered by: WebSVN 2.1.0

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