2 ;;; Tests for floating-point conversions
4 ;;;--------------------------------------------------------------------------
7 ;; Some easy special cases.
21 ;; Check that we round at the right bit.
53 ;; Check rounding of multi-word fractions.
59 m = ffffffff ffffffff fff00000 00000000
62 mm = ffffffff ffffffff fff00000
69 m = ffffffff fffeffff fff00000 00000001
72 mm = ffffffff fffeffff fff00000
79 m = ffffffff ffffffff ffe80000 00000000
82 mm = ffffffff ffffffff ffe00000
89 m = ffffffff fffeffff ffe80000 00000001
92 mm = ffffffff fffeffff fff00000
99 m = ffffffff fffeffff fff80000 00000000
102 mm = ffffffff ffff0000 00000000
105 ;; Check carry up to next exponent.
111 m = ffffffff ffffffff fff80000 00000000
114 mm = 80000000 00000000 00000000
117 ;; Check rounding modes.
159 ;; Check inexactness detection.
181 ;; Check rounding at word boundaries.
187 m = 80000001 00000001
197 m = 80000000 80000000
207 m = 80000000 80000001
217 m = 80000001 80000000
223 ;;;--------------------------------------------------------------------------
224 ;;; IEEE conversions.
232 z = 7ff80000 00000000
236 z = 7ff00000 00000001
240 m = 00000000 00002000
241 z = 7ff00000 00000001
244 m = 00000000 00001fff
245 z = 7ff00000 00000001
249 m = 00000000 00000000 00000001
250 z = 7ff00000 00000001
253 ;; Check NaN truncation.
257 m = 090cad8d 8de42000 00000000
258 z = 7ff84865 6c6c6f21
263 m = 090cad8d 8de43000
264 z = 00000000 00000000
269 m = 090cad8d 8de42000 00000001
270 z = 00000000 00000000
276 m = 090cad8d 8de43fff
277 z = 7ff84865 6c6c6f21
280 ;; Check subnormal underflow.
286 z = 00000000 00000001
289 errmask = UFLOW | INEXACT
293 z = 00000000 00000000
294 err = UFLOW | INEXACT
297 errmask = UFLOW | INEXACT
301 z = 00000000 00000001
305 errmask = UFLOW | INEXACT
309 z = 00000000 00000000
310 err = UFLOW | INEXACT
312 ;; Check ordinary rounding.
317 m = 22222222 22223800
318 z = bfe44444 44444447
324 m = 22222222 22223801
325 z = 00000000 00000000
332 m = 22222222 22223801
333 z = bfe44444 44444447
340 m = 22222222 22223bff
341 z = bfe44444 44444447
348 m = 22222222 22223c00
349 z = bfe44444 44444448
356 m = 22222222 22223fff
357 z = bfe44444 44444448
364 m = 22222222 22223fff
365 z = bfe44444 44444447
368 ;; Check overflow and infinity.
370 errmask = INEXACT | OFLOW
373 m = ffffffff fffff800
374 z = 7fefffff ffffffff
378 errmask = INEXACT | OFLOW
381 m = ffffffff fffff801
382 z = 7fefffff ffffffff
386 errmask = INEXACT | OFLOW
389 m = ffffffff fffffbff
390 z = 7fefffff ffffffff
394 errmask = INEXACT | OFLOW
397 m = ffffffff fffffc00
398 z = 7ff00000 00000000
399 err = INEXACT | OFLOW
402 errmask = INEXACT | OFLOW
406 z = 7fefffff ffffffff
407 err = INEXACT | OFLOW
411 ;; This was a randomized test that caught a bug.
414 m = cd1c3727 b1c7bb96 c3668568
415 z = d12e9a38 6e4f638f 772d86cd 0ad00000
417 ;;;--------------------------------------------------------------------------
418 ;;; Native format conversions.
439 m = a0000000 00000000
517 m = a0000000 00000000
523 m = c90fdaa2 2168c000
524 z = 6.283185307179586
550 m = a0000000 00000000
553 x = 6.283185307179586
556 m = c90fdaa2 2168c000
577 ;;;--------------------------------------------------------------------------
578 ;;; Direct conversions.
597 @assume = stdc-nan | ieee
601 @assume = stdc-nan | ieee
634 z = 00000000 00000000
637 z = c1e615a3 9d400000
640 x = 6.283185307179586
641 z = 401921fb 54442d18
646 z = 0000409d a315e6c1
650 x = c1e615a3 9d400000
655 x = 0000409d a315e6c1
658 ;;;--------------------------------------------------------------------------