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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.target/] [powerpc/] [pr41175.c] - Rev 801

Go to most recent revision | Compare with Previous | Blame | View Log

/* PR target/41175 */
/* { dg-do run } */
/* { dg-options "-Os" } */
 
#define X2(n) X1(n##0) X1(n##1)
#define X4(n) X2(n##0) X2(n##1)
#define X8(n) X4(n##0) X4(n##1)
 
#ifndef __SPE__
#define FLOAT_REG_CONSTRAINT "f"
#else
#define FLOAT_REG_CONSTRAINT "r"
#endif
 
volatile int ll;
 
__attribute__((noinline)) void
foo (void)
{
  asm volatile ("" : : : "memory");
}
 
__attribute__((noinline)) void
bar (char *p)
{
  asm volatile ("" : : "r" (p) : "memory");
}
 
__attribute__((noinline)) void
f1 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X8(c)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
  foo ();
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f2 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X8(c)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
  char *pp = __builtin_alloca (ll);
  bar (pp);
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f3 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X8(c)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
}
 
#ifndef __NO_FPRS__
__attribute__((noinline)) void
f4 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X8(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X4(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X4(d) "=m" (mem) : : "memory");
  foo ();
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X4(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f5 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X8(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X4(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X4(d) "=m" (mem) : : "memory");
  char *pp = __builtin_alloca (ll);
  bar (pp);
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X4(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f6 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X8(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X4(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X4(d) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X4(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f7 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X8(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X2(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X2(d) "=m" (mem) : : "memory");
  foo ();
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X2(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f8 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X8(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X2(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X2(d) "=m" (mem) : : "memory");
  char *pp = __builtin_alloca (ll);
  bar (pp);
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X2(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f9 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X8(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X2(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X2(d) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X2(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f10 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X4(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X1(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X4(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X1(d) "=m" (mem) : : "memory");
  foo ();
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X4(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X1(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f11 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X4(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X1(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X4(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X1(d) "=m" (mem) : : "memory");
  char *pp = __builtin_alloca (ll);
  bar (pp);
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X4(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X1(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f12 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X4(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X1(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X4(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X1(d) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X4(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X1(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f13 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X2(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X8(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X2(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X8(d) "=m" (mem) : : "memory");
  foo ();
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X2(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X8(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f14 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X2(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X8(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X2(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X8(d) "=m" (mem) : : "memory");
  char *pp = __builtin_alloca (ll);
  bar (pp);
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X2(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X8(d) "m" (mem) : "memory");
}
 
__attribute__((noinline)) void
f15 (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X2(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X8(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X2(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X8(d) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X2(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : : X8(d) "m" (mem) : "memory");
}
#endif
 
int
main ()
{
  ll = 60;
  f1 ();
  f2 ();
  f3 ();
#ifndef __NO_FPRS__
  f4 ();
  f5 ();
  f6 ();
  f7 ();
  f8 ();
  f9 ();
  f10 ();
  f11 ();
  f12 ();
  f13 ();
  f14 ();
  f15 ();
#endif
  return 0;
}
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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