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) 360