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.target/] [ia64/] [20030811-1.c] - Diff between revs 319 and 338

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

Rev 319 Rev 338
/* Origin: PR target/11693 from Andreas Schwab <schwab@suse.de> */
/* Origin: PR target/11693 from Andreas Schwab <schwab@suse.de> */
/* { dg-do compile } */
/* { dg-do compile } */
/* { dg-options "-O2 -frename-registers" } */
/* { dg-options "-O2 -frename-registers" } */
 
 
static inline unsigned long long
static inline unsigned long long
foo (void)
foo (void)
{
{
  unsigned long long x;
  unsigned long long x;
  __asm__ __volatile__ ("" : "=r" (x) :: "memory");
  __asm__ __volatile__ ("" : "=r" (x) :: "memory");
  return x;
  return x;
}
}
 
 
static inline void
static inline void
bar (unsigned long long x, unsigned long long y)
bar (unsigned long long x, unsigned long long y)
{
{
  __asm__ __volatile__ ("" :: "r"(x), "r"(y) : "memory");
  __asm__ __volatile__ ("" :: "r"(x), "r"(y) : "memory");
}
}
 
 
static inline void
static inline void
baz (unsigned long long x, unsigned long long y, unsigned long long z,
baz (unsigned long long x, unsigned long long y, unsigned long long z,
     unsigned long long p, unsigned long long q)
     unsigned long long p, unsigned long long q)
{
{
  __asm__ __volatile__ ("" :: "r" (q << 2) : "memory");
  __asm__ __volatile__ ("" :: "r" (q << 2) : "memory");
  __asm__ __volatile__ ("" :: "r" (z) : "memory");
  __asm__ __volatile__ ("" :: "r" (z) : "memory");
  if (x & 0x1)
  if (x & 0x1)
    __asm__ __volatile__ ("" :: "r" (y), "r" (p) : "memory");
    __asm__ __volatile__ ("" :: "r" (y), "r" (p) : "memory");
  if (x & 0x2)
  if (x & 0x2)
    __asm__ __volatile__ ("" :: "r" (y), "r" (p) : "memory");
    __asm__ __volatile__ ("" :: "r" (y), "r" (p) : "memory");
}
}
 
 
static inline unsigned long long
static inline unsigned long long
ffz (unsigned long long x)
ffz (unsigned long long x)
{
{
  unsigned long long r;
  unsigned long long r;
  __asm__ ("" : "=r" (r) : "r" (x & (~x - 1)));
  __asm__ ("" : "=r" (r) : "r" (x & (~x - 1)));
  return r;
  return r;
}
}
 
 
void die (const char *, ...) __attribute__ ((noreturn));
void die (const char *, ...) __attribute__ ((noreturn));
 
 
void
void
test (void *x)
test (void *x)
{
{
  unsigned long long a, c;
  unsigned long long a, c;
 
 
  a = foo ();
  a = foo ();
  bar (0xc000000000000000LL, 0x660);
  bar (0xc000000000000000LL, 0x660);
  bar (0xa00000000000c000LL, 0x539);
  bar (0xa00000000000c000LL, 0x539);
  baz (2, 1, 0xa000000000008000LL,
  baz (2, 1, 0xa000000000008000LL,
       ({ unsigned long long b;
       ({ unsigned long long b;
          b = ({ unsigned long long d; __asm__ ("" : "=r" (d) : "r" (x)); d; })
          b = ({ unsigned long long d; __asm__ ("" : "=r" (d) : "r" (x)); d; })
              + 0x10000000000661LL;
              + 0x10000000000661LL;
          b;
          b;
        }),
        }),
       14);
       14);
  c = ffz (0x1fffffffffffffffLL);
  c = ffz (0x1fffffffffffffffLL);
  if (c < 51 || c > 61)
  if (c < 51 || c > 61)
    die ("die", c - 1);
    die ("die", c - 1);
}
}
 
 

powered by: WebSVN 2.1.0

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