]>
git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.target/powerpc/pack02.c
1 /* { dg-do run { target { powerpc*-*-linux* } } } */
2 /* { dg-skip-if "" { powerpc*-*-darwin* } } */
3 /* { dg-skip-if "" { powerpc*-*-*spe* } } */
4 /* { dg-require-effective-target powerpc_fprs } */
5 /* { dg-require-effective-target longdouble128 } */
6 /* { dg-options "-O2 -mhard-float" } */
19 double high
= pow (2.0, 60);
21 long double a
= ((long double)high
) + ((long double)low
);
22 double x0
= __builtin_unpack_longdouble (a
, 0);
23 double x1
= __builtin_unpack_longdouble (a
, 1);
24 long double b
= __builtin_pack_longdouble (x0
, x1
);
32 unsigned char uc
[sizeof (long double)];
33 char c
[sizeof (long double)];
38 for (i
= 0; i
< sizeof (long double); i
++)
39 printf ("%.2x", u
.uc
[i
]);
41 printf (", %Lg\n", a
);
45 for (i
= 0; i
< sizeof (long double); i
++)
46 printf ("%.2x", u
.uc
[i
]);
48 printf (", %Lg\n", b
);
52 for (i
= 0; i
< sizeof (double); i
++)
53 printf ("%.2x", u
.uc
[i
]);
55 printf (",%*s %g\n", (int)(2 * (sizeof (long double) - sizeof (double))), "", high
);
59 for (i
= 0; i
< sizeof (double); i
++)
60 printf ("%.2x", u
.uc
[i
]);
62 printf (",%*s %g\n", (int)(2 * (sizeof (long double) - sizeof (double))), "", low
);
66 for (i
= 0; i
< sizeof (double); i
++)
67 printf ("%.2x", u
.uc
[i
]);
69 printf (",%*s %g\n", (int)(2 * (sizeof (long double) - sizeof (double))), "", x0
);
73 for (i
= 0; i
< sizeof (double); i
++)
74 printf ("%.2x", u
.uc
[i
]);
76 printf (",%*s %g\n", (int)(2 * (sizeof (long double) - sizeof (double))), "", x1
);