(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
fixed-point/
convert.h
       1  /* Check conversions involving fixed-point.
       2   * Break up use-site into into manageable parts so that even embedded
       3   * targets with restrictive resources can run them.  */
       4  
       5  /* Fixed-point to fixed-point.  */
       6  #define CONV(TYPE1,POSTFIX1,TYPE2,POSTFIX2) \
       7    { \
       8      TYPE1 a = 0.5 ## POSTFIX1; \
       9      TYPE2 b = a; \
      10      if (b != 0.5 ## POSTFIX2) \
      11        abort(); \
      12    }
      13  
      14  /* TYPE1 with VALUE1 to TYPE2 with VALUE2.  */
      15  #define CONV2(TYPE1,VALUE1,TYPE2,VALUE2) \
      16    { \
      17      TYPE1 a = VALUE1; \
      18      TYPE2 b = a; \
      19      if (b != VALUE2) \
      20        abort(); \
      21    }
      22  
      23  /* Fixed-point to integer, and integer to fixed-point.  */
      24  #define CONV_INT(TYPE1,POSTFIX1,TYPE2) \
      25    { \
      26      TYPE1 a = 0.5 ## POSTFIX1; \
      27      TYPE2 b = a; \
      28      TYPE2 c = 0; \
      29      TYPE1 d = c; \
      30      if (b != 0) \
      31        abort(); \
      32      if (d != 0.0 ## POSTFIX1) \
      33        abort(); \
      34    }
      35  
      36  /* Signed fixed-point to integer.  */
      37  #define CONV_INT2(TYPE1,POSTFIX1,TYPE2) \
      38    { \
      39      TYPE1 a = -0.5 ## POSTFIX1; \
      40      TYPE2 b = a; \
      41      if (b != 0) \
      42        abort(); \
      43      a = -0.0 ## POSTFIX1; \
      44      b = a; \
      45      if (b != 0) \
      46        abort(); \
      47      a = +0.0 ## POSTFIX1; \
      48      b = a; \
      49      if (b != 0) \
      50        abort(); \
      51      a = +0.1 ## POSTFIX1; \
      52      b = a; \
      53      if (b != 0) \
      54        abort(); \
      55      a = -0.1 ## POSTFIX1; \
      56      b = a; \
      57      if (b != 0) \
      58        abort(); \
      59    }
      60  
      61  /* Signed fixed-point to signed integer.  */
      62  #define CONV_INT3(TYPE1,POSTFIX1,TYPE2) \
      63    { \
      64      TYPE1 a = -0.5 ## POSTFIX1 - 0.5 ## POSTFIX1; \
      65      TYPE2 b = a; \
      66      if (b != -1) \
      67        abort(); \
      68    }
      69  
      70  /* Fixed-point to floating-point, and floating-point to fixed-point.  */
      71  #define CONV_FLOAT(TYPE1,POSTFIX1,TYPE2) \
      72    { \
      73      TYPE1 a = 0.5 ## POSTFIX1; \
      74      TYPE2 b = a; \
      75      TYPE2 c = 0.25; \
      76      TYPE1 d = c; \
      77      if (b != 0.5) \
      78        abort(); \
      79      if (d != 0.25 ## POSTFIX1) \
      80        abort(); \
      81    }
      82  
      83  /* Accum to integer, and integer to accum.  */
      84  #define CONV_ACCUM_INT(TYPE1,POSTFIX1,TYPE2) \
      85    { \
      86      TYPE1 a = 99.12345 ## POSTFIX1; \
      87      TYPE2 b = a; \
      88      TYPE2 c = 123; \
      89      TYPE1 d = c; \
      90      if (b != 99) \
      91        abort(); \
      92      if (d != 123.0 ## POSTFIX1) \
      93        abort(); \
      94    }
      95  
      96  #define ALL_CONV(TYPE,POSTFIX) \
      97    CONV(TYPE, POSTFIX, short _Fract, hr) \
      98    CONV(TYPE, POSTFIX, _Fract, r) \
      99    CONV(TYPE, POSTFIX, long _Fract, lr) \
     100    CONV(TYPE, POSTFIX, long long _Fract, llr) \
     101    CONV(TYPE, POSTFIX, unsigned short _Fract, uhr) \
     102    CONV(TYPE, POSTFIX, unsigned _Fract, ur) \
     103    CONV(TYPE, POSTFIX, unsigned long _Fract, ulr) \
     104    CONV(TYPE, POSTFIX, unsigned long long _Fract, ullr) \
     105    CONV(TYPE, POSTFIX, short _Accum, hk) \
     106    CONV(TYPE, POSTFIX, _Accum, k) \
     107    CONV(TYPE, POSTFIX, long _Accum, lk) \
     108    CONV(TYPE, POSTFIX, long long _Accum, llk) \
     109    CONV(TYPE, POSTFIX, unsigned short _Accum, uhk) \
     110    CONV(TYPE, POSTFIX, unsigned _Accum, uk) \
     111    CONV(TYPE, POSTFIX, unsigned long _Accum, ulk) \
     112    CONV(TYPE, POSTFIX, unsigned long long _Accum, ullk) \
     113    CONV(_Sat TYPE, POSTFIX, short _Fract, hr) \
     114    CONV(_Sat TYPE, POSTFIX, _Fract, r) \
     115    CONV(_Sat TYPE, POSTFIX, long _Fract, lr) \
     116    CONV(_Sat TYPE, POSTFIX, long long _Fract, llr) \
     117    CONV(_Sat TYPE, POSTFIX, unsigned short _Fract, uhr) \
     118    CONV(_Sat TYPE, POSTFIX, unsigned _Fract, ur) \
     119    CONV(_Sat TYPE, POSTFIX, unsigned long _Fract, ulr) \
     120    CONV(_Sat TYPE, POSTFIX, unsigned long long _Fract, ullr) \
     121    CONV(_Sat TYPE, POSTFIX, short _Accum, hk) \
     122    CONV(_Sat TYPE, POSTFIX, _Accum, k) \
     123    CONV(_Sat TYPE, POSTFIX, long _Accum, lk) \
     124    CONV(_Sat TYPE, POSTFIX, long long _Accum, llk) \
     125    CONV(_Sat TYPE, POSTFIX, unsigned short _Accum, uhk) \
     126    CONV(_Sat TYPE, POSTFIX, unsigned _Accum, uk) \
     127    CONV(_Sat TYPE, POSTFIX, unsigned long _Accum, ulk) \
     128    CONV(_Sat TYPE, POSTFIX, unsigned long long _Accum, ullk) \
     129    CONV(TYPE, POSTFIX, _Sat short _Fract, hr)                \
     130    CONV(TYPE, POSTFIX, _Sat _Fract, r) \
     131    CONV(TYPE, POSTFIX, _Sat long _Fract, lr) \
     132    CONV(TYPE, POSTFIX, _Sat long long _Fract, llr) \
     133    CONV(TYPE, POSTFIX, _Sat unsigned short _Fract, uhr) \
     134    CONV(TYPE, POSTFIX, _Sat unsigned _Fract, ur) \
     135    CONV(TYPE, POSTFIX, _Sat unsigned long _Fract, ulr) \
     136    CONV(TYPE, POSTFIX, _Sat unsigned long long _Fract, ullr) \
     137    CONV(TYPE, POSTFIX, _Sat short _Accum, hk) \
     138    CONV(TYPE, POSTFIX, _Sat _Accum, k) \
     139    CONV(TYPE, POSTFIX, _Sat long _Accum, lk) \
     140    CONV(TYPE, POSTFIX, _Sat long long _Accum, llk) \
     141    CONV(TYPE, POSTFIX, _Sat unsigned short _Accum, uhk) \
     142    CONV(TYPE, POSTFIX, _Sat unsigned _Accum, uk) \
     143    CONV(TYPE, POSTFIX, _Sat unsigned long _Accum, ulk) \
     144    CONV(TYPE, POSTFIX, _Sat unsigned long long _Accum, ullk) \
     145    CONV_INT(TYPE, POSTFIX, signed char)                      \
     146    CONV_INT(TYPE, POSTFIX, short) \
     147    CONV_INT(TYPE, POSTFIX, int) \
     148    CONV_INT(TYPE, POSTFIX, long) \
     149    CONV_INT(TYPE, POSTFIX, long long) \
     150    CONV_INT(TYPE, POSTFIX, unsigned char) \
     151    CONV_INT(TYPE, POSTFIX, unsigned short) \
     152    CONV_INT(TYPE, POSTFIX, unsigned int) \
     153    CONV_INT(TYPE, POSTFIX, unsigned long) \
     154    CONV_INT(TYPE, POSTFIX, unsigned long long) \
     155    CONV_INT(_Sat TYPE, POSTFIX, signed char) \
     156    CONV_INT(_Sat TYPE, POSTFIX, short) \
     157    CONV_INT(_Sat TYPE, POSTFIX, int) \
     158    CONV_INT(_Sat TYPE, POSTFIX, long) \
     159    CONV_INT(_Sat TYPE, POSTFIX, long long) \
     160    CONV_INT(_Sat TYPE, POSTFIX, unsigned char) \
     161    CONV_INT(_Sat TYPE, POSTFIX, unsigned short) \
     162    CONV_INT(_Sat TYPE, POSTFIX, unsigned int) \
     163    CONV_INT(_Sat TYPE, POSTFIX, unsigned long) \
     164    CONV_INT(_Sat TYPE, POSTFIX, unsigned long long)
     165  
     166  #define ALL_CONV_FLOAT(TYPE,POSTFIX) \
     167    CONV_FLOAT(TYPE, POSTFIX, float)    \
     168    CONV_FLOAT(TYPE, POSTFIX, double) \
     169    CONV_FLOAT(_Sat TYPE, POSTFIX, float) \
     170    CONV_FLOAT(_Sat TYPE, POSTFIX, double)
     171  
     172  #define ALL_ACCUM_CONV(TYPE,POSTFIX) \
     173    CONV_ACCUM_INT(TYPE, POSTFIX, signed char) \
     174    CONV_ACCUM_INT(TYPE, POSTFIX, short) \
     175    CONV_ACCUM_INT(TYPE, POSTFIX, int) \
     176    CONV_ACCUM_INT(TYPE, POSTFIX, long) \
     177    CONV_ACCUM_INT(TYPE, POSTFIX, long long) \
     178    CONV_ACCUM_INT(TYPE, POSTFIX, unsigned char) \
     179    CONV_ACCUM_INT(TYPE, POSTFIX, unsigned short) \
     180    CONV_ACCUM_INT(TYPE, POSTFIX, unsigned int) \
     181    CONV_ACCUM_INT(TYPE, POSTFIX, unsigned long) \
     182    CONV_ACCUM_INT(TYPE, POSTFIX, unsigned long long) \
     183    CONV_ACCUM_INT(_Sat TYPE, POSTFIX, signed char) \
     184    CONV_ACCUM_INT(_Sat TYPE, POSTFIX, short) \
     185    CONV_ACCUM_INT(_Sat TYPE, POSTFIX, int) \
     186    CONV_ACCUM_INT(_Sat TYPE, POSTFIX, long) \
     187    CONV_ACCUM_INT(_Sat TYPE, POSTFIX, long long) \
     188    CONV_ACCUM_INT(_Sat TYPE, POSTFIX, unsigned char) \
     189    CONV_ACCUM_INT(_Sat TYPE, POSTFIX, unsigned short) \
     190    CONV_ACCUM_INT(_Sat TYPE, POSTFIX, unsigned int) \
     191    CONV_ACCUM_INT(_Sat TYPE, POSTFIX, unsigned long) \
     192    CONV_ACCUM_INT(_Sat TYPE, POSTFIX, unsigned long long)
     193  
     194  #define NEG_CONV(TYPE,POSTFIX) \
     195    CONV_INT2(TYPE, POSTFIX, signed char) \
     196    CONV_INT2(TYPE, POSTFIX, short) \
     197    CONV_INT2(TYPE, POSTFIX, int) \
     198    CONV_INT2(TYPE, POSTFIX, long) \
     199    CONV_INT2(TYPE, POSTFIX, long long) \
     200    CONV_INT2(TYPE, POSTFIX, unsigned char) \
     201    CONV_INT2(TYPE, POSTFIX, unsigned short) \
     202    CONV_INT2(TYPE, POSTFIX, unsigned int) \
     203    CONV_INT2(TYPE, POSTFIX, unsigned long) \
     204    CONV_INT2(TYPE, POSTFIX, unsigned long long) \
     205    CONV_INT3(TYPE, POSTFIX, signed char) \
     206    CONV_INT3(TYPE, POSTFIX, short) \
     207    CONV_INT3(TYPE, POSTFIX, int) \
     208    CONV_INT3(TYPE, POSTFIX, long) \
     209    CONV_INT3(TYPE, POSTFIX, long long)
     210  
     211  /* Signed accum to _Sat unsigned/signed fract.  */
     212  #define SAT_CONV1(TYPE, POSTFIX) \
     213    CONV2(TYPE, 3.2 ## POSTFIX, _Sat short _Fract, 1.0hr) \
     214    CONV2(TYPE, -3.2 ## POSTFIX, _Sat short _Fract, -0.5hr - 0.5hr) \
     215    CONV2(TYPE, 3.2 ## POSTFIX, _Sat _Fract, 1.0r) \
     216    CONV2(TYPE, -3.2 ## POSTFIX, _Sat _Fract, -0.5r - 0.5r) \
     217    CONV2(TYPE, 3.2 ## POSTFIX, _Sat long _Fract, 1.0lr) \
     218    CONV2(TYPE, -3.2 ## POSTFIX, _Sat long _Fract, -0.5lr - 0.5lr) \
     219    CONV2(TYPE, 3.2 ## POSTFIX, _Sat long long _Fract, 1.0llr) \
     220    CONV2(TYPE, -3.2 ## POSTFIX, _Sat long long _Fract, -0.5llr - 0.5llr) \
     221    CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \
     222    CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned short _Fract, 0.0uhr) \
     223    CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \
     224    CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned _Fract, 0.0ur) \
     225    CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \
     226    CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned long _Fract, 0.0ulr) \
     227    CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr) \
     228    CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr) \
     229    CONV2(TYPE, 1.0 ## POSTFIX, _Sat short _Fract, 1.0hr) \
     230    CONV2(TYPE, -1.0 ## POSTFIX, _Sat short _Fract, -0.5hr - 0.5hr) \
     231    CONV2(TYPE, 1.0 ## POSTFIX, _Sat _Fract, 1.0r) \
     232    CONV2(TYPE, -1.0 ## POSTFIX, _Sat _Fract, -0.5r - 0.5r) \
     233    CONV2(TYPE, 1.0 ## POSTFIX, _Sat long _Fract, 1.0lr) \
     234    CONV2(TYPE, -1.0 ## POSTFIX, _Sat long _Fract, -0.5lr - 0.5lr) \
     235    CONV2(TYPE, 1.0 ## POSTFIX, _Sat long long _Fract, 1.0llr) \
     236    CONV2(TYPE, -1.0 ## POSTFIX, _Sat long long _Fract, -0.5llr - 0.5llr) \
     237    CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \
     238    CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned short _Fract, 0.0uhr) \
     239    CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \
     240    CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned _Fract, 0.0ur) \
     241    CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \
     242    CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned long _Fract, 0.0ulr) \
     243    CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr) \
     244    CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr)
     245  
     246  /* Unsigned accum to _Sat unsigned/signed fract.  */
     247  #define SAT_CONV2(TYPE, POSTFIX) \
     248    CONV2(TYPE, 3.2 ## POSTFIX, _Sat short _Fract, 1.0hr) \
     249    CONV2(TYPE, 3.2 ## POSTFIX, _Sat _Fract, 1.0r) \
     250    CONV2(TYPE, 3.2 ## POSTFIX, _Sat long _Fract, 1.0lr) \
     251    CONV2(TYPE, 3.2 ## POSTFIX, _Sat long long _Fract, 1.0llr) \
     252    CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \
     253    CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \
     254    CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \
     255    CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr) \
     256    CONV2(TYPE, 1.0 ## POSTFIX, _Sat short _Fract, 1.0hr) \
     257    CONV2(TYPE, 1.0 ## POSTFIX, _Sat _Fract, 1.0r) \
     258    CONV2(TYPE, 1.0 ## POSTFIX, _Sat long _Fract, 1.0lr) \
     259    CONV2(TYPE, 1.0 ## POSTFIX, _Sat long long _Fract, 1.0llr) \
     260    CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \
     261    CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \
     262    CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \
     263    CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr)
     264  
     265  /* Signed fract to _Sat unsigned fract.  */
     266  #define SAT_CONV3(TYPE, POSTFIX) \
     267    CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned short _Fract, 0.0uhr) \
     268    CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned  _Fract, 0.0ur) \
     269    CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned long _Fract, 0.0ulr) \
     270    CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr)
     271  
     272  /* Signed integer to _Sat signed/unsigned fract.  */
     273  #define SAT_CONV4(TYPE) \
     274    CONV2(TYPE, 100, _Sat short _Fract, 1.0hr) \
     275    CONV2(TYPE, -100, _Sat short _Fract, -0.5hr - 0.5hr) \
     276    CONV2(TYPE, 100, _Sat _Fract, 1.0r) \
     277    CONV2(TYPE, -100, _Sat _Fract, -0.5r - 0.5r) \
     278    CONV2(TYPE, 100, _Sat long _Fract, 1.0lr) \
     279    CONV2(TYPE, -100, _Sat long _Fract, -0.5lr - 0.5lr) \
     280    CONV2(TYPE, 100, _Sat long long _Fract, 1.0llr) \
     281    CONV2(TYPE, -100, _Sat long long _Fract, -0.5llr - 0.5llr) \
     282    CONV2(TYPE, 100, _Sat unsigned short _Fract, 1.0uhr) \
     283    CONV2(TYPE, -100, _Sat unsigned short _Fract, 0.0uhr) \
     284    CONV2(TYPE, 100, _Sat unsigned _Fract, 1.0ur) \
     285    CONV2(TYPE, -100, _Sat unsigned _Fract, 0.0ur) \
     286    CONV2(TYPE, 100, _Sat unsigned long _Fract, 1.0ulr) \
     287    CONV2(TYPE, -100, _Sat unsigned long _Fract, 0.0ulr) \
     288    CONV2(TYPE, 100, _Sat unsigned long long _Fract, 1.0ullr) \
     289    CONV2(TYPE, -100, _Sat unsigned long long _Fract, 0.0ullr) \
     290    CONV2(TYPE, 1, _Sat short _Fract, 1.0hr) \
     291    CONV2(TYPE, -1, _Sat short _Fract, -0.5hr - 0.5hr) \
     292    CONV2(TYPE, 1, _Sat _Fract, 1.0r) \
     293    CONV2(TYPE, -1, _Sat _Fract, -0.5r - 0.5r) \
     294    CONV2(TYPE, 1, _Sat long _Fract, 1.0lr) \
     295    CONV2(TYPE, -1, _Sat long _Fract, -0.5lr - 0.5lr) \
     296    CONV2(TYPE, 1, _Sat long long _Fract, 1.0llr) \
     297    CONV2(TYPE, -1, _Sat long long _Fract, -0.5llr - 0.5llr) \
     298    CONV2(TYPE, 1, _Sat unsigned short _Fract, 1.0uhr) \
     299    CONV2(TYPE, -1, _Sat unsigned short _Fract, 0.0uhr) \
     300    CONV2(TYPE, 1, _Sat unsigned _Fract, 1.0ur) \
     301    CONV2(TYPE, -1, _Sat unsigned _Fract, 0.0ur) \
     302    CONV2(TYPE, 1, _Sat unsigned long _Fract, 1.0ulr) \
     303    CONV2(TYPE, -1, _Sat unsigned long _Fract, 0.0ulr) \
     304    CONV2(TYPE, 1, _Sat unsigned long long _Fract, 1.0ullr) \
     305    CONV2(TYPE, -1, _Sat unsigned long long _Fract, 0.0ullr)
     306  
     307  /* Unsigned integer to _Sat signed/unsigned fract.  */
     308  #define SAT_CONV5(TYPE) \
     309    CONV2(TYPE, 100, _Sat short _Fract, 1.0hr) \
     310    CONV2(TYPE, 100, _Sat _Fract, 1.0r) \
     311    CONV2(TYPE, 100, _Sat long _Fract, 1.0lr) \
     312    CONV2(TYPE, 100, _Sat long long _Fract, 1.0llr) \
     313    CONV2(TYPE, 100, _Sat unsigned short _Fract, 1.0uhr) \
     314    CONV2(TYPE, 100, _Sat unsigned _Fract, 1.0ur) \
     315    CONV2(TYPE, 100, _Sat unsigned long _Fract, 1.0ulr) \
     316    CONV2(TYPE, 100, _Sat unsigned long long _Fract, 1.0ullr) \
     317    CONV2(TYPE, 1, _Sat short _Fract, 1.0hr) \
     318    CONV2(TYPE, 1, _Sat _Fract, 1.0r) \
     319    CONV2(TYPE, 1, _Sat long _Fract, 1.0lr) \
     320    CONV2(TYPE, 1, _Sat long long _Fract, 1.0llr) \
     321    CONV2(TYPE, 1, _Sat unsigned short _Fract, 1.0uhr) \
     322    CONV2(TYPE, 1, _Sat unsigned _Fract, 1.0ur) \
     323    CONV2(TYPE, 1, _Sat unsigned long _Fract, 1.0ulr) \
     324    CONV2(TYPE, 1, _Sat unsigned long long _Fract, 1.0ullr)
     325  
     326  /* Floating-point to _Sat signed/unsigned fract.  */
     327  #define SAT_CONV6(TYPE) \
     328    CONV2(TYPE, 100.0, _Sat short _Fract, 1.0hr) \
     329    CONV2(TYPE, -100.0, _Sat short _Fract, -0.5hr - 0.5hr) \
     330    CONV2(TYPE, 100.0, _Sat _Fract, 1.0r) \
     331    CONV2(TYPE, -100.0, _Sat _Fract, -0.5r - 0.5r) \
     332    CONV2(TYPE, 100.0, _Sat long _Fract, 1.0lr) \
     333    CONV2(TYPE, -100.0, _Sat long _Fract, -0.5lr - 0.5lr) \
     334    CONV2(TYPE, 100.0, _Sat long long _Fract, 1.0llr) \
     335    CONV2(TYPE, -100.0, _Sat long long _Fract, -0.5llr - 0.5llr) \
     336    CONV2(TYPE, 100.0, _Sat unsigned short _Fract, 1.0uhr) \
     337    CONV2(TYPE, -100.0, _Sat unsigned short _Fract, 0.0uhr) \
     338    CONV2(TYPE, 100.0, _Sat unsigned _Fract, 1.0ur) \
     339    CONV2(TYPE, -100.0, _Sat unsigned _Fract, 0.0ur) \
     340    CONV2(TYPE, 100.0, _Sat unsigned long _Fract, 1.0ulr) \
     341    CONV2(TYPE, -100.0, _Sat unsigned long _Fract, 0.0ulr) \
     342    CONV2(TYPE, 100.0, _Sat unsigned long long _Fract, 1.0ullr) \
     343    CONV2(TYPE, -100.0, _Sat unsigned long long _Fract, 0.0ullr) \
     344    CONV2(TYPE, 1.0, _Sat short _Fract, 1.0hr) \
     345    CONV2(TYPE, -1.0, _Sat short _Fract, -0.5hr - 0.5hr) \
     346    CONV2(TYPE, 1.0, _Sat _Fract, 1.0r) \
     347    CONV2(TYPE, -1.0, _Sat _Fract, -0.5r - 0.5r) \
     348    CONV2(TYPE, 1.0, _Sat long _Fract, 1.0lr) \
     349    CONV2(TYPE, -1.0, _Sat long _Fract, -0.5lr - 0.5lr) \
     350    CONV2(TYPE, 1.0, _Sat long long _Fract, 1.0llr) \
     351    CONV2(TYPE, -1.0, _Sat long long _Fract, -0.5llr - 0.5llr) \
     352    CONV2(TYPE, 1.0, _Sat unsigned short _Fract, 1.0uhr) \
     353    CONV2(TYPE, -1.0, _Sat unsigned short _Fract, 0.0uhr) \
     354    CONV2(TYPE, 1.0, _Sat unsigned _Fract, 1.0ur) \
     355    CONV2(TYPE, -1.0, _Sat unsigned _Fract, 0.0ur) \
     356    CONV2(TYPE, 1.0, _Sat unsigned long _Fract, 1.0ulr) \
     357    CONV2(TYPE, -1.0, _Sat unsigned long _Fract, 0.0ulr) \
     358    CONV2(TYPE, 1.0, _Sat unsigned long long _Fract, 1.0ullr) \
     359    CONV2(TYPE, -1.0, _Sat unsigned long long _Fract, 0.0ullr)