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