OSDN Git Service

* gcc.dg/20001013-1.c: Add -mcpu=ultrasparc. Only run on
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / 20001013-1.c
1 /* ??? It'd be nice to run this for sparc32 as well, if we could know
2    for sure that we're on an ultrasparc, rather than an older cpu.  */
3 /* { dg-do run { target sparcv9-*-* sparc64-*-* } } */
4 /* { dg-options "-O2 -m32 -mcpu=ultrasparc -mvis" } */
5
6 int l;
7
8 int baz (double x)
9 {
10   return l == 0;
11 }
12
13 double bar (double x)
14 {
15   return 1.0;
16 }
17
18 double foo (double x)
19 {
20   if (l == -1 || baz (x)) return x;
21   if (x < 0.0)
22     return bar (x);
23   else
24     return 0.0;
25 }
26
27 union {
28   double d;
29   long long l;
30 } x = { l: 0x7ff8000000000000LL }, y;
31
32 main ()
33 {
34   unsigned int fsr = 0;
35   __asm __volatile ("ld %0, %%fsr" : : "m" (fsr));
36   y.d = foo (x.d);
37   __asm __volatile ("st %%fsr, %0" : "=m" (fsr));
38   if (x.l != y.l || (fsr & 0x3ff))
39     abort ();
40   exit (0);
41 }