1  /* { dg-options "-std=gnu99" } */
       2  
       3  /* The preferred exponent of the result of a conversion from an
       4     integral type to a decimal float type is zero.  A conversion at
       5     either compile time or runtime should not change the number of
       6     trailing zeroes.  */
       7  
       8  #include "dfp-dbg.h"
       9  
      10  #define PASTE2(A,B) A ## B
      11  #define PASTE(A,B) PASTE2(A,B)
      12  
      13  #define TESTVAL_NEG(VAL,SUF,SIZE)					\
      14    x = PASTE(PASTE(VAL,.),SUF);						\
      15    si = VAL;								\
      16    sll = PASTE(VAL,LL);							\
      17    a = si;								\
      18    b = sll;								\
      19    c = VAL;								\
      20    d = PASTE(VAL,LL);							\
      21    if ((__builtin_memcmp ((void *)&x, (void *)&a, SIZE) != 0)		\
      22        || (__builtin_memcmp ((void *)&x, (void *)&b,SIZE) != 0)		\
      23        || (__builtin_memcmp ((void *)&x, (void *)&c,SIZE) != 0)		\
      24        || (__builtin_memcmp ((void *)&x, (void *)&d,SIZE) != 0))		\
      25      FAILURE
      26  
      27  #define TESTVAL_NEG_BIG(VAL,SUF,SIZE)					\
      28    x = PASTE(PASTE(VAL,.),SUF);						\
      29    sll = PASTE(VAL,LL);							\
      30    a = sll;								\
      31    b = PASTE(VAL,LL);							\
      32    if ((__builtin_memcmp ((void *)&x, (void *)&a, SIZE) != 0)		\
      33        || (__builtin_memcmp ((void *)&x, (void *)&b,SIZE) != 0))		\
      34      FAILURE
      35  
      36  #define TESTVAL_NONNEG(VAL,SUF,SIZE)					\
      37    x = PASTE(PASTE(VAL,.),SUF);						\
      38    si = VAL;								\
      39    ui = VAL;								\
      40    sll = PASTE(VAL,LL);							\
      41    ull = PASTE(VAL,ULL);							\
      42    a = si;								\
      43    b = sll;								\
      44    c = ui;								\
      45    d = ull;								\
      46    e = VAL;								\
      47    f = VAL;								\
      48    g = PASTE(VAL,LL);							\
      49    h = PASTE(VAL,ULL);							\
      50    if ((__builtin_memcmp ((void *)&x, (void *)&a, SIZE) != 0)		\
      51        || (__builtin_memcmp ((void *)&x, (void *)&b,SIZE) != 0)		\
      52        || (__builtin_memcmp ((void *)&x, (void *)&c,SIZE) != 0)		\
      53        || (__builtin_memcmp ((void *)&x, (void *)&d,SIZE) != 0)		\
      54        || (__builtin_memcmp ((void *)&x, (void *)&e,SIZE) != 0)		\
      55        || (__builtin_memcmp ((void *)&x, (void *)&f,SIZE) != 0)		\
      56        || (__builtin_memcmp ((void *)&x, (void *)&g,SIZE) != 0)		\
      57        || (__builtin_memcmp ((void *)&x, (void *)&h,SIZE) != 0))		\
      58      FAILURE
      59  
      60  #define TESTVAL_NONNEG_BIG(VAL,SUF,SIZE)				\
      61    x = PASTE(PASTE(VAL,.),SUF);						\
      62    sll = PASTE(VAL,LL);							\
      63    ull = PASTE(VAL,ULL);							\
      64    b = sll;								\
      65    d = ull;								\
      66    f = PASTE(VAL,LL);							\
      67    g = PASTE(VAL,ULL);							\
      68    if ((__builtin_memcmp ((void *)&x, (void *)&b, SIZE) != 0)		\
      69        || (__builtin_memcmp ((void *)&d, (void *)&d,SIZE) != 0)		\
      70        || (__builtin_memcmp ((void *)&f, (void *)&d,SIZE) != 0)		\
      71        || (__builtin_memcmp ((void *)&g, (void *)&d,SIZE) != 0))		\
      72      FAILURE
      73  
      74  #undef SUFFIX
      75  #define SUFFIX DF
      76  #undef TYPE
      77  #define TYPE _Decimal32
      78    
      79  void
      80  zeroes_32 (void)
      81  {
      82    volatile TYPE x, a, b, c, d, e, f, g, h;
      83    volatile int si;
      84    volatile unsigned int ui;
      85    volatile long long sll;
      86    volatile unsigned long long ull;
      87  
      88    TESTVAL_NONNEG (0, SUFFIX, sizeof (TYPE));
      89    TESTVAL_NONNEG (1, SUFFIX, sizeof (TYPE));
      90    TESTVAL_NONNEG (5, SUFFIX, sizeof (TYPE));
      91    TESTVAL_NONNEG (9, SUFFIX, sizeof (TYPE));
      92    TESTVAL_NONNEG (10, SUFFIX, sizeof (TYPE));
      93    TESTVAL_NONNEG (50, SUFFIX, sizeof (TYPE));
      94    TESTVAL_NONNEG (90, SUFFIX, sizeof (TYPE));
      95    TESTVAL_NONNEG (100, SUFFIX, sizeof (TYPE));
      96    TESTVAL_NONNEG (500, SUFFIX, sizeof (TYPE));
      97    TESTVAL_NONNEG (900, SUFFIX, sizeof (TYPE));
      98    TESTVAL_NONNEG (1000, SUFFIX, sizeof (TYPE));
      99    TESTVAL_NONNEG (5000, SUFFIX, sizeof (TYPE));
     100    TESTVAL_NONNEG (9000, SUFFIX, sizeof (TYPE));
     101    TESTVAL_NONNEG (10000, SUFFIX, sizeof (TYPE));
     102    TESTVAL_NONNEG (50000, SUFFIX, sizeof (TYPE));
     103    TESTVAL_NONNEG (90000, SUFFIX, sizeof (TYPE));
     104    TESTVAL_NONNEG (100000, SUFFIX, sizeof (TYPE));
     105    TESTVAL_NONNEG (500000, SUFFIX, sizeof (TYPE));
     106    TESTVAL_NONNEG (900000, SUFFIX, sizeof (TYPE));
     107    TESTVAL_NONNEG (1000000, SUFFIX, sizeof (TYPE));
     108    TESTVAL_NONNEG (5000000, SUFFIX, sizeof (TYPE));
     109    TESTVAL_NONNEG (9000000, SUFFIX, sizeof (TYPE));
     110    TESTVAL_NONNEG (10000000, SUFFIX, sizeof (TYPE));
     111    TESTVAL_NONNEG (50000000, SUFFIX, sizeof (TYPE));
     112    TESTVAL_NONNEG (90000000, SUFFIX, sizeof (TYPE));
     113    TESTVAL_NONNEG (100000000, SUFFIX, sizeof (TYPE));
     114    TESTVAL_NONNEG (500000000, SUFFIX, sizeof (TYPE));
     115    TESTVAL_NONNEG (900000000, SUFFIX, sizeof (TYPE));
     116    TESTVAL_NONNEG (1000000000, SUFFIX, sizeof (TYPE));
     117    TESTVAL_NONNEG_BIG (5000000000, SUFFIX, sizeof (TYPE));
     118    TESTVAL_NONNEG_BIG (9000000000, SUFFIX, sizeof (TYPE));
     119    TESTVAL_NONNEG_BIG (10000000000, SUFFIX, sizeof (TYPE));
     120    TESTVAL_NONNEG_BIG (50000000000, SUFFIX, sizeof (TYPE));
     121    TESTVAL_NONNEG_BIG (90000000000, SUFFIX, sizeof (TYPE));
     122    TESTVAL_NONNEG_BIG (100000000000, SUFFIX, sizeof (TYPE));
     123    TESTVAL_NONNEG_BIG (500000000000, SUFFIX, sizeof (TYPE));
     124    TESTVAL_NONNEG_BIG (900000000000, SUFFIX, sizeof (TYPE));
     125    TESTVAL_NONNEG_BIG (1000000000000, SUFFIX, sizeof (TYPE));
     126    TESTVAL_NONNEG_BIG (5000000000000, SUFFIX, sizeof (TYPE));
     127    TESTVAL_NONNEG_BIG (9000000000000, SUFFIX, sizeof (TYPE));
     128    TESTVAL_NONNEG_BIG (10000000000000, SUFFIX, sizeof (TYPE));
     129    TESTVAL_NONNEG_BIG (50000000000000, SUFFIX, sizeof (TYPE));
     130    TESTVAL_NONNEG_BIG (90000000000000, SUFFIX, sizeof (TYPE));
     131    TESTVAL_NONNEG_BIG (100000000000000, SUFFIX, sizeof (TYPE));
     132    TESTVAL_NONNEG_BIG (500000000000000, SUFFIX, sizeof (TYPE));
     133    TESTVAL_NONNEG_BIG (900000000000000, SUFFIX, sizeof (TYPE));
     134    TESTVAL_NONNEG_BIG (1000000000000000, SUFFIX, sizeof (TYPE));
     135    TESTVAL_NONNEG_BIG (5000000000000000, SUFFIX, sizeof (TYPE));
     136    TESTVAL_NONNEG_BIG (9000000000000000, SUFFIX, sizeof (TYPE));
     137    TESTVAL_NONNEG_BIG (10000000000000000, SUFFIX, sizeof (TYPE));
     138    TESTVAL_NONNEG_BIG (50000000000000000, SUFFIX, sizeof (TYPE));
     139    TESTVAL_NONNEG_BIG (90000000000000000, SUFFIX, sizeof (TYPE));
     140    TESTVAL_NONNEG_BIG (100000000000000000, SUFFIX, sizeof (TYPE));
     141    TESTVAL_NONNEG_BIG (500000000000000000, SUFFIX, sizeof (TYPE));
     142    TESTVAL_NONNEG_BIG (900000000000000000, SUFFIX, sizeof (TYPE));
     143    TESTVAL_NONNEG_BIG (1000000000000000000, SUFFIX, sizeof (TYPE));
     144    TESTVAL_NONNEG_BIG (5000000000000000000, SUFFIX, sizeof (TYPE));
     145    TESTVAL_NONNEG_BIG (9000000000000000000, SUFFIX, sizeof (TYPE));
     146  
     147    TESTVAL_NEG (0, SUFFIX, sizeof (TYPE));
     148    TESTVAL_NEG (-1, SUFFIX, sizeof (TYPE));
     149    TESTVAL_NEG (-5, SUFFIX, sizeof (TYPE));
     150    TESTVAL_NEG (-9, SUFFIX, sizeof (TYPE));
     151    TESTVAL_NEG (-10, SUFFIX, sizeof (TYPE));
     152    TESTVAL_NEG (-50, SUFFIX, sizeof (TYPE));
     153    TESTVAL_NEG (-90, SUFFIX, sizeof (TYPE));
     154    TESTVAL_NEG (-100, SUFFIX, sizeof (TYPE));
     155    TESTVAL_NEG (-500, SUFFIX, sizeof (TYPE));
     156    TESTVAL_NEG (-900, SUFFIX, sizeof (TYPE));
     157    TESTVAL_NEG (-1000, SUFFIX, sizeof (TYPE));
     158    TESTVAL_NEG (-5000, SUFFIX, sizeof (TYPE));
     159    TESTVAL_NEG (-9000, SUFFIX, sizeof (TYPE));
     160    TESTVAL_NEG (-10000, SUFFIX, sizeof (TYPE));
     161    TESTVAL_NEG (-50000, SUFFIX, sizeof (TYPE));
     162    TESTVAL_NEG (-90000, SUFFIX, sizeof (TYPE));
     163    TESTVAL_NEG (-100000, SUFFIX, sizeof (TYPE));
     164    TESTVAL_NEG (-500000, SUFFIX, sizeof (TYPE));
     165    TESTVAL_NEG (-900000, SUFFIX, sizeof (TYPE));
     166    TESTVAL_NEG (-1000000, SUFFIX, sizeof (TYPE));
     167    TESTVAL_NEG (-5000000, SUFFIX, sizeof (TYPE));
     168    TESTVAL_NEG (-9000000, SUFFIX, sizeof (TYPE));
     169    TESTVAL_NEG (-10000000, SUFFIX, sizeof (TYPE));
     170    TESTVAL_NEG (-50000000, SUFFIX, sizeof (TYPE));
     171    TESTVAL_NEG (-90000000, SUFFIX, sizeof (TYPE));
     172    TESTVAL_NEG (-100000000, SUFFIX, sizeof (TYPE));
     173    TESTVAL_NEG (-500000000, SUFFIX, sizeof (TYPE));
     174    TESTVAL_NEG (-900000000, SUFFIX, sizeof (TYPE));
     175    TESTVAL_NEG (-1000000000, SUFFIX, sizeof (TYPE));
     176    TESTVAL_NEG_BIG (-5000000000, SUFFIX, sizeof (TYPE));
     177    TESTVAL_NEG_BIG (-9000000000, SUFFIX, sizeof (TYPE));
     178    TESTVAL_NEG_BIG (-10000000000, SUFFIX, sizeof (TYPE));
     179    TESTVAL_NEG_BIG (-50000000000, SUFFIX, sizeof (TYPE));
     180    TESTVAL_NEG_BIG (-90000000000, SUFFIX, sizeof (TYPE));
     181    TESTVAL_NEG_BIG (-100000000000, SUFFIX, sizeof (TYPE));
     182    TESTVAL_NEG_BIG (-500000000000, SUFFIX, sizeof (TYPE));
     183    TESTVAL_NEG_BIG (-900000000000, SUFFIX, sizeof (TYPE));
     184    TESTVAL_NEG_BIG (-1000000000000, SUFFIX, sizeof (TYPE));
     185    TESTVAL_NEG_BIG (-5000000000000, SUFFIX, sizeof (TYPE));
     186    TESTVAL_NEG_BIG (-9000000000000, SUFFIX, sizeof (TYPE));
     187    TESTVAL_NEG_BIG (-10000000000000, SUFFIX, sizeof (TYPE));
     188    TESTVAL_NEG_BIG (-50000000000000, SUFFIX, sizeof (TYPE));
     189    TESTVAL_NEG_BIG (-90000000000000, SUFFIX, sizeof (TYPE));
     190    TESTVAL_NEG_BIG (-100000000000000, SUFFIX, sizeof (TYPE));
     191    TESTVAL_NEG_BIG (-500000000000000, SUFFIX, sizeof (TYPE));
     192    TESTVAL_NEG_BIG (-900000000000000, SUFFIX, sizeof (TYPE));
     193    TESTVAL_NEG_BIG (-1000000000000000, SUFFIX, sizeof (TYPE));
     194    TESTVAL_NEG_BIG (-5000000000000000, SUFFIX, sizeof (TYPE));
     195    TESTVAL_NEG_BIG (-9000000000000000, SUFFIX, sizeof (TYPE));
     196    TESTVAL_NEG_BIG (-10000000000000000, SUFFIX, sizeof (TYPE));
     197    TESTVAL_NEG_BIG (-50000000000000000, SUFFIX, sizeof (TYPE));
     198    TESTVAL_NEG_BIG (-90000000000000000, SUFFIX, sizeof (TYPE));
     199    TESTVAL_NEG_BIG (-100000000000000000, SUFFIX, sizeof (TYPE));
     200    TESTVAL_NEG_BIG (-500000000000000000, SUFFIX, sizeof (TYPE));
     201    TESTVAL_NEG_BIG (-900000000000000000, SUFFIX, sizeof (TYPE));
     202    TESTVAL_NEG_BIG (-1000000000000000000, SUFFIX, sizeof (TYPE));
     203    TESTVAL_NEG_BIG (-5000000000000000000, SUFFIX, sizeof (TYPE));
     204    TESTVAL_NEG_BIG (-9000000000000000000, SUFFIX, sizeof (TYPE));
     205  }
     206    
     207  void
     208  round_32 (void)
     209  {
     210    volatile TYPE x, a, b, c, d, e, f, g, h;
     211    volatile int si;
     212    volatile unsigned int ui;
     213    volatile long long sll;
     214    volatile unsigned long long ull;
     215  
     216    TESTVAL_NONNEG (10000049, SUFFIX, sizeof (TYPE));
     217    TESTVAL_NONNEG (10000050, SUFFIX, sizeof (TYPE));
     218    TESTVAL_NONNEG (10000051, SUFFIX, sizeof (TYPE));
     219    TESTVAL_NONNEG (10000000, SUFFIX, sizeof (TYPE));
     220    TESTVAL_NONNEG (10000001, SUFFIX, sizeof (TYPE));
     221    TESTVAL_NONNEG (10000002, SUFFIX, sizeof (TYPE));
     222    TESTVAL_NONNEG (10000003, SUFFIX, sizeof (TYPE));
     223    TESTVAL_NONNEG (10000004, SUFFIX, sizeof (TYPE));
     224    TESTVAL_NONNEG (100000049, SUFFIX, sizeof (TYPE));
     225    TESTVAL_NONNEG (100000051, SUFFIX, sizeof (TYPE));
     226    TESTVAL_NONNEG (10000006, SUFFIX, sizeof (TYPE));
     227    TESTVAL_NONNEG (10000007, SUFFIX, sizeof (TYPE));
     228    TESTVAL_NONNEG (10000008, SUFFIX, sizeof (TYPE));
     229    TESTVAL_NONNEG (10000009, SUFFIX, sizeof (TYPE));
     230    TESTVAL_NONNEG (10000010, SUFFIX, sizeof (TYPE));
     231  
     232    TESTVAL_NEG (-10000049, SUFFIX, sizeof (TYPE));
     233    TESTVAL_NEG (-10000050, SUFFIX, sizeof (TYPE));
     234    TESTVAL_NEG (-10000051, SUFFIX, sizeof (TYPE));
     235    TESTVAL_NEG (-10000000, SUFFIX, sizeof (TYPE));
     236    TESTVAL_NEG (-10000001, SUFFIX, sizeof (TYPE));
     237    TESTVAL_NEG (-10000002, SUFFIX, sizeof (TYPE));
     238    TESTVAL_NEG (-10000003, SUFFIX, sizeof (TYPE));
     239    TESTVAL_NEG (-10000004, SUFFIX, sizeof (TYPE));
     240    TESTVAL_NEG (-100000049, SUFFIX, sizeof (TYPE));
     241    TESTVAL_NEG (-100000051, SUFFIX, sizeof (TYPE));
     242    TESTVAL_NEG (-10000006, SUFFIX, sizeof (TYPE));
     243    TESTVAL_NEG (-10000007, SUFFIX, sizeof (TYPE));
     244    TESTVAL_NEG (-10000008, SUFFIX, sizeof (TYPE));
     245    TESTVAL_NEG (-10000009, SUFFIX, sizeof (TYPE));
     246    TESTVAL_NEG (-10000010, SUFFIX, sizeof (TYPE));
     247  }
     248  
     249  #undef SUFFIX
     250  #define SUFFIX DD
     251  #undef TYPE
     252  #define TYPE _Decimal64
     253    
     254  void
     255  zeroes_64 (void)
     256  {
     257    volatile TYPE x, a, b, c, d, e, f, g, h;
     258    volatile int si;
     259    volatile unsigned int ui;
     260    volatile long long sll;
     261    volatile unsigned long long ull;
     262  
     263    TESTVAL_NONNEG (0, SUFFIX, sizeof (TYPE));
     264    TESTVAL_NONNEG (1, SUFFIX, sizeof (TYPE));
     265    TESTVAL_NONNEG (5, SUFFIX, sizeof (TYPE));
     266    TESTVAL_NONNEG (9, SUFFIX, sizeof (TYPE));
     267    TESTVAL_NONNEG (10, SUFFIX, sizeof (TYPE));
     268    TESTVAL_NONNEG (50, SUFFIX, sizeof (TYPE));
     269    TESTVAL_NONNEG (90, SUFFIX, sizeof (TYPE));
     270    TESTVAL_NONNEG (100, SUFFIX, sizeof (TYPE));
     271    TESTVAL_NONNEG (500, SUFFIX, sizeof (TYPE));
     272    TESTVAL_NONNEG (900, SUFFIX, sizeof (TYPE));
     273    TESTVAL_NONNEG (1000, SUFFIX, sizeof (TYPE));
     274    TESTVAL_NONNEG (5000, SUFFIX, sizeof (TYPE));
     275    TESTVAL_NONNEG (9000, SUFFIX, sizeof (TYPE));
     276    TESTVAL_NONNEG (10000, SUFFIX, sizeof (TYPE));
     277    TESTVAL_NONNEG (50000, SUFFIX, sizeof (TYPE));
     278    TESTVAL_NONNEG (90000, SUFFIX, sizeof (TYPE));
     279    TESTVAL_NONNEG (100000, SUFFIX, sizeof (TYPE));
     280    TESTVAL_NONNEG (500000, SUFFIX, sizeof (TYPE));
     281    TESTVAL_NONNEG (900000, SUFFIX, sizeof (TYPE));
     282    TESTVAL_NONNEG (1000000, SUFFIX, sizeof (TYPE));
     283    TESTVAL_NONNEG (5000000, SUFFIX, sizeof (TYPE));
     284    TESTVAL_NONNEG (9000000, SUFFIX, sizeof (TYPE));
     285    TESTVAL_NONNEG (10000000, SUFFIX, sizeof (TYPE));
     286    TESTVAL_NONNEG (50000000, SUFFIX, sizeof (TYPE));
     287    TESTVAL_NONNEG (90000000, SUFFIX, sizeof (TYPE));
     288    TESTVAL_NONNEG (100000000, SUFFIX, sizeof (TYPE));
     289    TESTVAL_NONNEG (500000000, SUFFIX, sizeof (TYPE));
     290    TESTVAL_NONNEG (900000000, SUFFIX, sizeof (TYPE));
     291    TESTVAL_NONNEG (1000000000, SUFFIX, sizeof (TYPE));
     292    TESTVAL_NONNEG_BIG (5000000000, SUFFIX, sizeof (TYPE));
     293    TESTVAL_NONNEG_BIG (9000000000, SUFFIX, sizeof (TYPE));
     294    TESTVAL_NONNEG_BIG (10000000000, SUFFIX, sizeof (TYPE));
     295    TESTVAL_NONNEG_BIG (50000000000, SUFFIX, sizeof (TYPE));
     296    TESTVAL_NONNEG_BIG (90000000000, SUFFIX, sizeof (TYPE));
     297    TESTVAL_NONNEG_BIG (100000000000, SUFFIX, sizeof (TYPE));
     298    TESTVAL_NONNEG_BIG (500000000000, SUFFIX, sizeof (TYPE));
     299    TESTVAL_NONNEG_BIG (900000000000, SUFFIX, sizeof (TYPE));
     300    TESTVAL_NONNEG_BIG (1000000000000, SUFFIX, sizeof (TYPE));
     301    TESTVAL_NONNEG_BIG (5000000000000, SUFFIX, sizeof (TYPE));
     302    TESTVAL_NONNEG_BIG (9000000000000, SUFFIX, sizeof (TYPE));
     303    TESTVAL_NONNEG_BIG (10000000000000, SUFFIX, sizeof (TYPE));
     304    TESTVAL_NONNEG_BIG (50000000000000, SUFFIX, sizeof (TYPE));
     305    TESTVAL_NONNEG_BIG (90000000000000, SUFFIX, sizeof (TYPE));
     306    TESTVAL_NONNEG_BIG (100000000000000, SUFFIX, sizeof (TYPE));
     307    TESTVAL_NONNEG_BIG (500000000000000, SUFFIX, sizeof (TYPE));
     308    TESTVAL_NONNEG_BIG (900000000000000, SUFFIX, sizeof (TYPE));
     309    TESTVAL_NONNEG_BIG (1000000000000000, SUFFIX, sizeof (TYPE));
     310    TESTVAL_NONNEG_BIG (5000000000000000, SUFFIX, sizeof (TYPE));
     311    TESTVAL_NONNEG_BIG (9000000000000000, SUFFIX, sizeof (TYPE));
     312    TESTVAL_NONNEG_BIG (10000000000000000, SUFFIX, sizeof (TYPE));
     313    TESTVAL_NONNEG_BIG (50000000000000000, SUFFIX, sizeof (TYPE));
     314    TESTVAL_NONNEG_BIG (90000000000000000, SUFFIX, sizeof (TYPE));
     315    TESTVAL_NONNEG_BIG (100000000000000000, SUFFIX, sizeof (TYPE));
     316    TESTVAL_NONNEG_BIG (500000000000000000, SUFFIX, sizeof (TYPE));
     317    TESTVAL_NONNEG_BIG (900000000000000000, SUFFIX, sizeof (TYPE));
     318    TESTVAL_NONNEG_BIG (1000000000000000000, SUFFIX, sizeof (TYPE));
     319    TESTVAL_NONNEG_BIG (5000000000000000000, SUFFIX, sizeof (TYPE));
     320    TESTVAL_NONNEG_BIG (9000000000000000000, SUFFIX, sizeof (TYPE));
     321  
     322    TESTVAL_NEG (0, SUFFIX, sizeof (TYPE));
     323    TESTVAL_NEG (-1, SUFFIX, sizeof (TYPE));
     324    TESTVAL_NEG (-5, SUFFIX, sizeof (TYPE));
     325    TESTVAL_NEG (-9, SUFFIX, sizeof (TYPE));
     326    TESTVAL_NEG (-10, SUFFIX, sizeof (TYPE));
     327    TESTVAL_NEG (-50, SUFFIX, sizeof (TYPE));
     328    TESTVAL_NEG (-90, SUFFIX, sizeof (TYPE));
     329    TESTVAL_NEG (-100, SUFFIX, sizeof (TYPE));
     330    TESTVAL_NEG (-500, SUFFIX, sizeof (TYPE));
     331    TESTVAL_NEG (-900, SUFFIX, sizeof (TYPE));
     332    TESTVAL_NEG (-1000, SUFFIX, sizeof (TYPE));
     333    TESTVAL_NEG (-5000, SUFFIX, sizeof (TYPE));
     334    TESTVAL_NEG (-9000, SUFFIX, sizeof (TYPE));
     335    TESTVAL_NEG (-10000, SUFFIX, sizeof (TYPE));
     336    TESTVAL_NEG (-50000, SUFFIX, sizeof (TYPE));
     337    TESTVAL_NEG (-90000, SUFFIX, sizeof (TYPE));
     338    TESTVAL_NEG (-100000, SUFFIX, sizeof (TYPE));
     339    TESTVAL_NEG (-500000, SUFFIX, sizeof (TYPE));
     340    TESTVAL_NEG (-900000, SUFFIX, sizeof (TYPE));
     341    TESTVAL_NEG (-1000000, SUFFIX, sizeof (TYPE));
     342    TESTVAL_NEG (-5000000, SUFFIX, sizeof (TYPE));
     343    TESTVAL_NEG (-9000000, SUFFIX, sizeof (TYPE));
     344    TESTVAL_NEG (-10000000, SUFFIX, sizeof (TYPE));
     345    TESTVAL_NEG (-50000000, SUFFIX, sizeof (TYPE));
     346    TESTVAL_NEG (-90000000, SUFFIX, sizeof (TYPE));
     347    TESTVAL_NEG (-100000000, SUFFIX, sizeof (TYPE));
     348    TESTVAL_NEG (-500000000, SUFFIX, sizeof (TYPE));
     349    TESTVAL_NEG (-900000000, SUFFIX, sizeof (TYPE));
     350    TESTVAL_NEG (-1000000000, SUFFIX, sizeof (TYPE));
     351    TESTVAL_NEG_BIG (-5000000000, SUFFIX, sizeof (TYPE));
     352    TESTVAL_NEG_BIG (-9000000000, SUFFIX, sizeof (TYPE));
     353    TESTVAL_NEG_BIG (-10000000000, SUFFIX, sizeof (TYPE));
     354    TESTVAL_NEG_BIG (-50000000000, SUFFIX, sizeof (TYPE));
     355    TESTVAL_NEG_BIG (-90000000000, SUFFIX, sizeof (TYPE));
     356    TESTVAL_NEG_BIG (-100000000000, SUFFIX, sizeof (TYPE));
     357    TESTVAL_NEG_BIG (-500000000000, SUFFIX, sizeof (TYPE));
     358    TESTVAL_NEG_BIG (-900000000000, SUFFIX, sizeof (TYPE));
     359    TESTVAL_NEG_BIG (-1000000000000, SUFFIX, sizeof (TYPE));
     360    TESTVAL_NEG_BIG (-5000000000000, SUFFIX, sizeof (TYPE));
     361    TESTVAL_NEG_BIG (-9000000000000, SUFFIX, sizeof (TYPE));
     362    TESTVAL_NEG_BIG (-10000000000000, SUFFIX, sizeof (TYPE));
     363    TESTVAL_NEG_BIG (-50000000000000, SUFFIX, sizeof (TYPE));
     364    TESTVAL_NEG_BIG (-90000000000000, SUFFIX, sizeof (TYPE));
     365    TESTVAL_NEG_BIG (-100000000000000, SUFFIX, sizeof (TYPE));
     366    TESTVAL_NEG_BIG (-500000000000000, SUFFIX, sizeof (TYPE));
     367    TESTVAL_NEG_BIG (-900000000000000, SUFFIX, sizeof (TYPE));
     368    TESTVAL_NEG_BIG (-1000000000000000, SUFFIX, sizeof (TYPE));
     369    TESTVAL_NEG_BIG (-5000000000000000, SUFFIX, sizeof (TYPE));
     370    TESTVAL_NEG_BIG (-9000000000000000, SUFFIX, sizeof (TYPE));
     371    TESTVAL_NEG_BIG (-10000000000000000, SUFFIX, sizeof (TYPE));
     372    TESTVAL_NEG_BIG (-50000000000000000, SUFFIX, sizeof (TYPE));
     373    TESTVAL_NEG_BIG (-90000000000000000, SUFFIX, sizeof (TYPE));
     374    TESTVAL_NEG_BIG (-100000000000000000, SUFFIX, sizeof (TYPE));
     375    TESTVAL_NEG_BIG (-500000000000000000, SUFFIX, sizeof (TYPE));
     376    TESTVAL_NEG_BIG (-900000000000000000, SUFFIX, sizeof (TYPE));
     377    TESTVAL_NEG_BIG (-1000000000000000000, SUFFIX, sizeof (TYPE));
     378    TESTVAL_NEG_BIG (-5000000000000000000, SUFFIX, sizeof (TYPE));
     379    TESTVAL_NEG_BIG (-9000000000000000000, SUFFIX, sizeof (TYPE));
     380  }
     381    
     382  void
     383  round_64 (void)
     384  {
     385    volatile TYPE x, a, b, c, d, e, f, g, h;
     386    volatile int si;
     387    volatile unsigned int ui;
     388    volatile long long sll;
     389    volatile unsigned long long ull;
     390  
     391    TESTVAL_NONNEG_BIG (10000000000000000, SUFFIX, sizeof (TYPE));
     392    TESTVAL_NONNEG_BIG (10000000000000001, SUFFIX, sizeof (TYPE));
     393    TESTVAL_NONNEG_BIG (10000000000000002, SUFFIX, sizeof (TYPE));
     394    TESTVAL_NONNEG_BIG (10000000000000003, SUFFIX, sizeof (TYPE));
     395    TESTVAL_NONNEG_BIG (10000000000000004, SUFFIX, sizeof (TYPE));
     396    TESTVAL_NONNEG_BIG (100000000000000049, SUFFIX, sizeof (TYPE));
     397    TESTVAL_NONNEG_BIG (100000000000000051, SUFFIX, sizeof (TYPE));
     398    TESTVAL_NONNEG_BIG (10000000000000006, SUFFIX, sizeof (TYPE));
     399    TESTVAL_NONNEG_BIG (10000000000000007, SUFFIX, sizeof (TYPE));
     400    TESTVAL_NONNEG_BIG (10000000000000008, SUFFIX, sizeof (TYPE));
     401    TESTVAL_NONNEG_BIG (10000000000000009, SUFFIX, sizeof (TYPE));
     402    TESTVAL_NONNEG_BIG (10000000000000010, SUFFIX, sizeof (TYPE));
     403  
     404    TESTVAL_NEG_BIG (-10000000000000000, SUFFIX, sizeof (TYPE));
     405    TESTVAL_NEG_BIG (-10000000000000001, SUFFIX, sizeof (TYPE));
     406    TESTVAL_NEG_BIG (-10000000000000002, SUFFIX, sizeof (TYPE));
     407    TESTVAL_NEG_BIG (-10000000000000003, SUFFIX, sizeof (TYPE));
     408    TESTVAL_NEG_BIG (-10000000000000004, SUFFIX, sizeof (TYPE));
     409    TESTVAL_NEG_BIG (-100000000000000049, SUFFIX, sizeof (TYPE));
     410    TESTVAL_NEG_BIG (-100000000000000051, SUFFIX, sizeof (TYPE));
     411    TESTVAL_NEG_BIG (-10000000000000006, SUFFIX, sizeof (TYPE));
     412    TESTVAL_NEG_BIG (-10000000000000007, SUFFIX, sizeof (TYPE));
     413    TESTVAL_NEG_BIG (-10000000000000008, SUFFIX, sizeof (TYPE));
     414    TESTVAL_NEG_BIG (-10000000000000009, SUFFIX, sizeof (TYPE));
     415    TESTVAL_NEG_BIG (-10000000000000010, SUFFIX, sizeof (TYPE));
     416  }
     417  
     418  #undef SUFFIX
     419  #define SUFFIX DL
     420  #undef TYPE
     421  #define TYPE _Decimal128
     422    
     423  void
     424  zeroes_128 (void)
     425  {
     426    volatile TYPE x, a, b, c, d, e, f, g, h;
     427    volatile int si;
     428    volatile unsigned int ui;
     429    volatile long long sll;
     430    volatile unsigned long long ull;
     431  
     432    TESTVAL_NONNEG (0, SUFFIX, sizeof (TYPE));
     433    TESTVAL_NONNEG (1, SUFFIX, sizeof (TYPE));
     434    TESTVAL_NONNEG (5, SUFFIX, sizeof (TYPE));
     435    TESTVAL_NONNEG (9, SUFFIX, sizeof (TYPE));
     436    TESTVAL_NONNEG (10, SUFFIX, sizeof (TYPE));
     437    TESTVAL_NONNEG (50, SUFFIX, sizeof (TYPE));
     438    TESTVAL_NONNEG (90, SUFFIX, sizeof (TYPE));
     439    TESTVAL_NONNEG (100, SUFFIX, sizeof (TYPE));
     440    TESTVAL_NONNEG (500, SUFFIX, sizeof (TYPE));
     441    TESTVAL_NONNEG (900, SUFFIX, sizeof (TYPE));
     442    TESTVAL_NONNEG (1000, SUFFIX, sizeof (TYPE));
     443    TESTVAL_NONNEG (5000, SUFFIX, sizeof (TYPE));
     444    TESTVAL_NONNEG (9000, SUFFIX, sizeof (TYPE));
     445    TESTVAL_NONNEG (10000, SUFFIX, sizeof (TYPE));
     446    TESTVAL_NONNEG (50000, SUFFIX, sizeof (TYPE));
     447    TESTVAL_NONNEG (90000, SUFFIX, sizeof (TYPE));
     448    TESTVAL_NONNEG (100000, SUFFIX, sizeof (TYPE));
     449    TESTVAL_NONNEG (500000, SUFFIX, sizeof (TYPE));
     450    TESTVAL_NONNEG (900000, SUFFIX, sizeof (TYPE));
     451    TESTVAL_NONNEG (1000000, SUFFIX, sizeof (TYPE));
     452    TESTVAL_NONNEG (5000000, SUFFIX, sizeof (TYPE));
     453    TESTVAL_NONNEG (9000000, SUFFIX, sizeof (TYPE));
     454    TESTVAL_NONNEG (10000000, SUFFIX, sizeof (TYPE));
     455    TESTVAL_NONNEG (50000000, SUFFIX, sizeof (TYPE));
     456    TESTVAL_NONNEG (90000000, SUFFIX, sizeof (TYPE));
     457    TESTVAL_NONNEG (100000000, SUFFIX, sizeof (TYPE));
     458    TESTVAL_NONNEG (500000000, SUFFIX, sizeof (TYPE));
     459    TESTVAL_NONNEG (900000000, SUFFIX, sizeof (TYPE));
     460    TESTVAL_NONNEG (1000000000, SUFFIX, sizeof (TYPE));
     461    TESTVAL_NONNEG_BIG (5000000000, SUFFIX, sizeof (TYPE));
     462    TESTVAL_NONNEG_BIG (9000000000, SUFFIX, sizeof (TYPE));
     463    TESTVAL_NONNEG_BIG (10000000000, SUFFIX, sizeof (TYPE));
     464    TESTVAL_NONNEG_BIG (50000000000, SUFFIX, sizeof (TYPE));
     465    TESTVAL_NONNEG_BIG (90000000000, SUFFIX, sizeof (TYPE));
     466    TESTVAL_NONNEG_BIG (100000000000, SUFFIX, sizeof (TYPE));
     467    TESTVAL_NONNEG_BIG (500000000000, SUFFIX, sizeof (TYPE));
     468    TESTVAL_NONNEG_BIG (900000000000, SUFFIX, sizeof (TYPE));
     469    TESTVAL_NONNEG_BIG (1000000000000, SUFFIX, sizeof (TYPE));
     470    TESTVAL_NONNEG_BIG (5000000000000, SUFFIX, sizeof (TYPE));
     471    TESTVAL_NONNEG_BIG (9000000000000, SUFFIX, sizeof (TYPE));
     472    TESTVAL_NONNEG_BIG (10000000000000, SUFFIX, sizeof (TYPE));
     473    TESTVAL_NONNEG_BIG (50000000000000, SUFFIX, sizeof (TYPE));
     474    TESTVAL_NONNEG_BIG (90000000000000, SUFFIX, sizeof (TYPE));
     475    TESTVAL_NONNEG_BIG (100000000000000, SUFFIX, sizeof (TYPE));
     476    TESTVAL_NONNEG_BIG (500000000000000, SUFFIX, sizeof (TYPE));
     477    TESTVAL_NONNEG_BIG (900000000000000, SUFFIX, sizeof (TYPE));
     478    TESTVAL_NONNEG_BIG (1000000000000000, SUFFIX, sizeof (TYPE));
     479    TESTVAL_NONNEG_BIG (5000000000000000, SUFFIX, sizeof (TYPE));
     480    TESTVAL_NONNEG_BIG (9000000000000000, SUFFIX, sizeof (TYPE));
     481    TESTVAL_NONNEG_BIG (10000000000000000, SUFFIX, sizeof (TYPE));
     482    TESTVAL_NONNEG_BIG (50000000000000000, SUFFIX, sizeof (TYPE));
     483    TESTVAL_NONNEG_BIG (90000000000000000, SUFFIX, sizeof (TYPE));
     484    TESTVAL_NONNEG_BIG (100000000000000000, SUFFIX, sizeof (TYPE));
     485    TESTVAL_NONNEG_BIG (500000000000000000, SUFFIX, sizeof (TYPE));
     486    TESTVAL_NONNEG_BIG (900000000000000000, SUFFIX, sizeof (TYPE));
     487    TESTVAL_NONNEG_BIG (1000000000000000000, SUFFIX, sizeof (TYPE));
     488    TESTVAL_NONNEG_BIG (5000000000000000000, SUFFIX, sizeof (TYPE));
     489    TESTVAL_NONNEG_BIG (9000000000000000000, SUFFIX, sizeof (TYPE));
     490  
     491    TESTVAL_NEG (0, SUFFIX, sizeof (TYPE));
     492    TESTVAL_NEG (-1, SUFFIX, sizeof (TYPE));
     493    TESTVAL_NEG (-5, SUFFIX, sizeof (TYPE));
     494    TESTVAL_NEG (-9, SUFFIX, sizeof (TYPE));
     495    TESTVAL_NEG (-10, SUFFIX, sizeof (TYPE));
     496    TESTVAL_NEG (-50, SUFFIX, sizeof (TYPE));
     497    TESTVAL_NEG (-90, SUFFIX, sizeof (TYPE));
     498    TESTVAL_NEG (-100, SUFFIX, sizeof (TYPE));
     499    TESTVAL_NEG (-500, SUFFIX, sizeof (TYPE));
     500    TESTVAL_NEG (-900, SUFFIX, sizeof (TYPE));
     501    TESTVAL_NEG (-1000, SUFFIX, sizeof (TYPE));
     502    TESTVAL_NEG (-5000, SUFFIX, sizeof (TYPE));
     503    TESTVAL_NEG (-9000, SUFFIX, sizeof (TYPE));
     504    TESTVAL_NEG (-10000, SUFFIX, sizeof (TYPE));
     505    TESTVAL_NEG (-50000, SUFFIX, sizeof (TYPE));
     506    TESTVAL_NEG (-90000, SUFFIX, sizeof (TYPE));
     507    TESTVAL_NEG (-100000, SUFFIX, sizeof (TYPE));
     508    TESTVAL_NEG (-500000, SUFFIX, sizeof (TYPE));
     509    TESTVAL_NEG (-900000, SUFFIX, sizeof (TYPE));
     510    TESTVAL_NEG (-1000000, SUFFIX, sizeof (TYPE));
     511    TESTVAL_NEG (-5000000, SUFFIX, sizeof (TYPE));
     512    TESTVAL_NEG (-9000000, SUFFIX, sizeof (TYPE));
     513    TESTVAL_NEG (-10000000, SUFFIX, sizeof (TYPE));
     514    TESTVAL_NEG (-50000000, SUFFIX, sizeof (TYPE));
     515    TESTVAL_NEG (-90000000, SUFFIX, sizeof (TYPE));
     516    TESTVAL_NEG (-100000000, SUFFIX, sizeof (TYPE));
     517    TESTVAL_NEG (-500000000, SUFFIX, sizeof (TYPE));
     518    TESTVAL_NEG (-900000000, SUFFIX, sizeof (TYPE));
     519    TESTVAL_NEG (-1000000000, SUFFIX, sizeof (TYPE));
     520    TESTVAL_NEG_BIG (-5000000000, SUFFIX, sizeof (TYPE));
     521    TESTVAL_NEG_BIG (-9000000000, SUFFIX, sizeof (TYPE));
     522    TESTVAL_NEG_BIG (-10000000000, SUFFIX, sizeof (TYPE));
     523    TESTVAL_NEG_BIG (-50000000000, SUFFIX, sizeof (TYPE));
     524    TESTVAL_NEG_BIG (-90000000000, SUFFIX, sizeof (TYPE));
     525    TESTVAL_NEG_BIG (-100000000000, SUFFIX, sizeof (TYPE));
     526    TESTVAL_NEG_BIG (-500000000000, SUFFIX, sizeof (TYPE));
     527    TESTVAL_NEG_BIG (-900000000000, SUFFIX, sizeof (TYPE));
     528    TESTVAL_NEG_BIG (-1000000000000, SUFFIX, sizeof (TYPE));
     529    TESTVAL_NEG_BIG (-5000000000000, SUFFIX, sizeof (TYPE));
     530    TESTVAL_NEG_BIG (-9000000000000, SUFFIX, sizeof (TYPE));
     531    TESTVAL_NEG_BIG (-10000000000000, SUFFIX, sizeof (TYPE));
     532    TESTVAL_NEG_BIG (-50000000000000, SUFFIX, sizeof (TYPE));
     533    TESTVAL_NEG_BIG (-90000000000000, SUFFIX, sizeof (TYPE));
     534    TESTVAL_NEG_BIG (-100000000000000, SUFFIX, sizeof (TYPE));
     535    TESTVAL_NEG_BIG (-500000000000000, SUFFIX, sizeof (TYPE));
     536    TESTVAL_NEG_BIG (-900000000000000, SUFFIX, sizeof (TYPE));
     537    TESTVAL_NEG_BIG (-1000000000000000, SUFFIX, sizeof (TYPE));
     538    TESTVAL_NEG_BIG (-5000000000000000, SUFFIX, sizeof (TYPE));
     539    TESTVAL_NEG_BIG (-9000000000000000, SUFFIX, sizeof (TYPE));
     540    TESTVAL_NEG_BIG (-10000000000000000, SUFFIX, sizeof (TYPE));
     541    TESTVAL_NEG_BIG (-50000000000000000, SUFFIX, sizeof (TYPE));
     542    TESTVAL_NEG_BIG (-90000000000000000, SUFFIX, sizeof (TYPE));
     543    TESTVAL_NEG_BIG (-100000000000000000, SUFFIX, sizeof (TYPE));
     544    TESTVAL_NEG_BIG (-500000000000000000, SUFFIX, sizeof (TYPE));
     545    TESTVAL_NEG_BIG (-900000000000000000, SUFFIX, sizeof (TYPE));
     546    TESTVAL_NEG_BIG (-1000000000000000000, SUFFIX, sizeof (TYPE));
     547    TESTVAL_NEG_BIG (-5000000000000000000, SUFFIX, sizeof (TYPE));
     548    TESTVAL_NEG_BIG (-9000000000000000000, SUFFIX, sizeof (TYPE));
     549  }
     550  
     551  
     552  int
     553  main ()
     554  {
     555    zeroes_32 ();
     556    zeroes_64 ();
     557    zeroes_128 ();
     558    round_32 ();
     559    round_64 ();
     560  
     561    FINISH
     562  }