blob: 9537d215b99977e1b8b3534cd019c30c70776f5b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
/* { dg-options "-msoft-float -mips2" } */
typedef long int __int32_t;
typedef long unsigned int __uint32_t;
typedef union
{
double value;
struct
{
__uint32_t msw;
__uint32_t lsw;
}
parts;
}
ieee_double_shape_type;
double
__ieee754_fmod (double x, double y, int z, int xx)
{
__int32_t n, hx, hy, hz, ix, iy, sx, i;
__uint32_t lx, ly, lz;
ieee_double_shape_type ew_u;
ew_u.value = (x);
(lx) = ew_u.parts.lsw;
ew_u.value = (y);
(hy) = ew_u.parts.msw;
(ly) = ew_u.parts.lsw;
if (hy == 0 || hx >= 0x7ff00000)
return (x * y);
if (z)
{
if ((hx < hy) || (lx < ly))
return x;
lz = lx - ly;
lx = lz + lz;
}
ieee_double_shape_type iw_u;
iw_u.parts.lsw = (lx);
return iw_u.value;
}
|