((rtl:object->unsigned-fixnum? expression)
(recursion rtl:object->unsigned-fixnum-expression
rtl:make-object->unsigned-fixnum))
+ ((rtl:object->float? expression)
+ (recurse-and-search rtl:object->float-expression
+ rtl:make-object->float))
(else
(values false false)))))))
\f
(define-lconstcomp-test (symbol name '/lconst) safe unsafe x0 cases)
(define-rconstcomp-test (symbol name '/rconst) safe unsafe x0 cases)))))
+(define expect-failure-x86-64
+ (if (and (eq? microcode-id/compiled-code-type 'x86-64)
+ (compiled-procedure? (lambda (x) x)))
+ expect-failure
+ #!default))
+
(define-constcomp-test '< flo:safe< flo:< 0.
`((-inf.0 #f #t)
(-1. #f #t)
(+inf.0 #t #f)
(+nan.0 #f #f)))
-(define-constcomp-test '>= flo:safe>= flo:>= 0.
+(define-lconstcomp-test '>=/lconst flo:safe>= flo:>= 0.
+ `((-inf.0 #t #f ,expect-failure-x86-64)
+ (-1. #t #f ,expect-failure-x86-64)
+ (,subnormal- #t #f ,expect-failure-x86-64)
+ (-0. #t #t)
+ (+0. #t #t)
+ (,subnormal+ #f #t ,expect-failure-x86-64)
+ (+1. #f #t ,expect-failure-x86-64)
+ (+inf.0 #f #t ,expect-failure-x86-64)
+ (+nan.0 #f #f)))
+
+(define-rconstcomp-test '>=/rconst flo:safe>= flo:>= 0.
`((-inf.0 #t #f)
(-1. #t #f)
(,subnormal- #t #f)
(+inf.0 #t #f)
(+nan.0 #f #f)))
-(define-constcomp-test '>= flo:safe>= flo:>= 1.
+(define-lconstcomp-test '>=/lconst flo:safe>= flo:>= 1.
+ `((-inf.0 #t #f ,expect-failure-x86-64)
+ (-1. #t #f ,expect-failure-x86-64)
+ (,subnormal- #t #f ,expect-failure-x86-64)
+ (-0. #t #f ,expect-failure-x86-64)
+ (+0. #t #f ,expect-failure-x86-64)
+ (,subnormal+ #t #f ,expect-failure-x86-64)
+ (+1. #t #t)
+ (+inf.0 #f #t ,expect-failure-x86-64)
+ (+nan.0 #f #f)))
+
+(define-rconstcomp-test '>=/rconst flo:safe>= flo:>= 1.
`((-inf.0 #t #f)
(-1. #t #f)
(,subnormal- #t #f)