Use FCOM, not FUCOM, for ordered comparisons.
authorTaylor R Campbell <campbell@mumble.net>
Wed, 12 Dec 2018 22:33:57 +0000 (22:33 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Thu, 13 Dec 2018 00:04:46 +0000 (00:04 +0000)
src/compiler/machines/i386/rulflo.scm
tests/microcode/test-flonum-except.scm

index 2f35bce7e08f8e9dcc228efcd6073dc7c210c8d1..7bd2aaf695db4da606e6fe593203344e369dfdf2 100644 (file)
@@ -667,14 +667,14 @@ USA.
         (st2 (flonum-source! source2)))
     (cond ((zero? st1)
           (flonum-branch! predicate
-                          (LAP (FUCOM (ST 0) (ST ,st2)))))
+                          (LAP (FCOM (ST 0) (ST ,st2)))))
          ((zero? st2)
           (flonum-branch! (commute-flonum-predicate predicate)
-                          (LAP (FUCOM (ST 0) (ST ,st1)))))
+                          (LAP (FCOM (ST 0) (ST ,st1)))))
          (else
           (flonum-branch! predicate
                           (LAP (FLD (ST ,st1))
-                               (FUCOMP (ST 0) (ST ,(1+ st2)))))))))
+                               (FCOMP (ST 0) (ST ,(1+ st2)))))))))
 
 (define-rule predicate
   (FLONUM-PRED-2-ARGS (? predicate)
@@ -704,13 +704,13 @@ USA.
   (let ((sti (flonum-source! source)))
     (flonum-branch! (commute-flonum-predicate predicate)
                    (LAP (FLDZ)
-                        (FUCOMP (ST 0) (ST ,(1+ sti)))))))
+                        (FCOMP (ST 0) (ST ,(1+ sti)))))))
 
 (define (flonum-compare-one predicate source)
   (let ((sti (flonum-source! source)))
     (flonum-branch! (commute-flonum-predicate predicate)
                    (LAP (FLD1)
-                        (FUCOMP (ST 0) (ST ,(1+ sti)))))))
+                        (FCOMP (ST 0) (ST ,(1+ sti)))))))
 
 ;;; For predicate giving (if (predicate x y) a b), return predicate* so
 ;;; that (if (predicate* y x) a b) is equivalent.
index 6b9b026cc4418100e8ab2585e61e1e890b23d0e0..783596a33a3a68c782a64637970c7653e2834ac6 100644 (file)
@@ -291,7 +291,7 @@ USA.
 ;; XXX sinh, cosh, tanh, asinh, acosh, atanh
 
 (let ((expect-failure
-       (if (and (eq? microcode-id/compiled-code-type 'x86-64)
+       (if (and (memq microcode-id/compiled-code-type '(x86-64 i386))
                (compiled-procedure? flo:=))
           #!default
           expect-failure)))