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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.target/] [i386/] [fpprec-1.c] - Blame information for rev 691

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 691 jeremybenn
/* { dg-do run } */
2
/* { dg-options "-O2 -fno-math-errno -fno-trapping-math -msse2 -mfpmath=sse" } */
3
/* { dg-require-effective-target sse2 } */
4
 
5
#include "sse2-check.h"
6
 
7
double x[] = { __builtin_nan(""), __builtin_inf(), -__builtin_inf(),
8
        -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,  /* +-DBL_MAX */
9
        -0x1p-52, 0x1p-52,                                  /* +-DBL_EPSILON */
10
        /* nextafter/before 0.5, 1.0 and 1.5 */
11
        0x1.0000000000001p-1, 0x1.fffffffffffffp-2,
12
        0x1.0000000000001p+0, 0x1.fffffffffffffp-1,
13
        0x1.8000000000001p+0, 0x1.7ffffffffffffp+0,
14
        -0.0, 0.0, -0.5, 0.5, -1.0, 1.0, -1.5, 1.5, -2.0, 2.0,
15
        -2.5, 2.5 };
16
#define NUM (sizeof(x)/sizeof(double))
17
 
18
double expect_round[] = { __builtin_nan(""), __builtin_inf(), -__builtin_inf(),
19
        -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,
20
        -0.0, 0.0,
21
        1.0, 0.0, 1.0, 1.0, 2.0, 1.0,
22
        -0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -2.0, 2.0, -2.0, 2.0,
23
        -3.0, 3.0 };
24
 
25
double expect_rint[] = { __builtin_nan(""), __builtin_inf(), -__builtin_inf(),
26
        -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,
27
        -0.0, 0.0,
28
        1.0, 0.0, 1.0, 1.0, 2.0, 1.0,
29
        -0.0, 0.0, -0.0, 0.0, -1.0, 1.0, -2.0, 2.0, -2.0, 2.0,
30
        -2.0, 2.0 };
31
 
32
double expect_floor[] = { __builtin_nan(""), __builtin_inf(), -__builtin_inf(),
33
        -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,
34
        -1.0, 0.0,
35
        0.0, 0.0, 1.0, 0.0, 1.0, 1.0,
36
        -0.0, 0.0, -1.0, 0.0, -1.0, 1.0, -2.0, 1.0, -2.0, 2.0,
37
        -3.0, 2.0 };
38
 
39
double expect_ceil[] = { __builtin_nan(""), __builtin_inf(), -__builtin_inf(),
40
        -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,
41
        -0.0, 1.0,
42
        1.0, 1.0, 2.0, 1.0, 2.0, 2.0,
43
        -0.0, 0.0, -0.0, 1.0, -1.0, 1.0, -1.0, 2.0, -2.0, 2.0,
44
        -2.0, 3.0 };
45
 
46
double expect_trunc[] = { __builtin_nan(""), __builtin_inf(), -__builtin_inf(),
47
        -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023,
48
        -0.0, 0.0,
49
        0.0, 0.0, 1.0, 0.0, 1.0, 1.0,
50
        -0.0, 0.0, -0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -2.0, 2.0,
51
        -2.0, 2.0 };
52
 
53
 
54
#define CHECK(fn) \
55
void check_ ## fn (void) \
56
{ \
57
  int i; \
58
  for (i = 0; i < NUM; ++i) \
59
    { \
60
      double res = __builtin_ ## fn (x[i]); \
61
      if (__builtin_memcmp (&res, &expect_ ## fn [i], sizeof(double)) != 0) \
62
        printf( # fn " [%i]: %.18e %.18e\n", i, expect_ ## fn [i], res), abort (); \
63
    } \
64
}
65
 
66
CHECK(round)
67
CHECK(rint)
68
CHECK(floor)
69
CHECK(ceil)
70
CHECK(trunc)
71
 
72
static void
73
sse2_test (void)
74
{
75
  check_round ();
76
  check_rint ();
77
  check_floor ();
78
  check_ceil ();
79
  check_trunc ();
80
}

powered by: WebSVN 2.1.0

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