1/* { dg-skip-if "" { ! "powerpc*-*-linux*" } { "*" } { "" } } */ 2 3/* Test decimal float conversions to and from IBM 128-bit long double. 4 Checks are skipped at runtime if long double is not 128 bits. 5 Don't force 128-bit long doubles because runtime support depends 6 on glibc. */ 7 8#include "convert.h" 9 10volatile _Decimal32 sd; 11volatile _Decimal64 dd; 12volatile _Decimal128 td; 13volatile float sf; 14volatile double df; 15volatile long double tf; 16 17/* A value slightly less than DEC32_MAX can be converted in both directions. */ 18CONVERT_VALID (101, sd, tf, 9.999998e96df, 9.999998e96L, 1.e+81L) 19CONVERT_VALID (102, tf, sd, 9.999998e96L, 9.999998e96df, 0.df) 20 21/* A value slightly less than DBL_MAX can be converted in both directions. */ 22CONVERT_VALID (201, tf, dd, 1.79768e+308l, 1.79768e+308dd, 0.dd) 23CONVERT_VALID (202, dd, tf, 1.79768e+308dd, 1.79768e+308l, 2.e292l) 24CONVERT_VALID (203, tf, td, 1.79768e+308l, 1.79768e+308dl, 1.e292dl) 25CONVERT_VALID (204, td, tf, 1.79768e+308dl, 1.79768e+308l, 2.e292l) 26 27/* Check values that are too large for the result type. */ 28CONVERT_TO_PINF (301, dd, tf, 1.8e+308dd, l) 29CONVERT_TO_PINF (302, dd, tf, 9.9e+384dd, l) 30CONVERT_TO_PINF (303, td, tf, 1.8e+308dl, l) 31CONVERT_TO_PINF (304, td, tf, 9.9e+384dl, l) 32 33CONVERT_TO_PINF (311, tf, sd, 1.0e+97L, d32) 34CONVERT_TO_PINF (312, tf, sd, 1.6e+308L, d32) 35 36int 37main () 38{ 39 if (sizeof (long double) != 16) 40 return 0; 41 42 convert_101 (); 43 convert_102 (); 44 45 convert_201 (); 46 convert_202 (); 47 convert_203 (); 48 convert_204 (); 49 50 convert_301 (); 51 convert_302 (); 52 convert_303 (); 53 convert_304 (); 54 convert_311 (); 55 convert_312 (); 56 57 FINISH 58} 59