[git] CMU Common Lisp branch master updated. snapshot-2014-08-24-g6ae7424

Raymond Toy rtoy at common-lisp.net
Sat Aug 23 03:19:10 UTC 2014

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".

The branch, master has been updated
       via  6ae74240bfa83dafcc6251b8a014a080d757df33 (commit)
       via  1626be46a98e3b18e7609227ffd7823155dcffc4 (commit)
      from  2c4a13afde093c0e1eb415c7252efaad6ca362f5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 6ae74240bfa83dafcc6251b8a014a080d757df33
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Fri Aug 22 20:19:00 2014 -0700

    Give up trying to get the operands if we don't know what the FP
    operation was.
    This shows up when fdlibm_setexception signals an exception. It seems
    to set the exception bits directly instead of trying to do the
    operation. This was confusing get-fp-operands.

diff --git a/src/compiler/ppc/float.lisp b/src/compiler/ppc/float.lisp
index 200772f..c5c944b 100644
--- a/src/compiler/ppc/float.lisp
+++ b/src/compiler/ppc/float.lisp
@@ -1445,6 +1445,9 @@
   ;; operands, if we can.
   (multiple-value-bind (fop format rd rs1 rs2)
       (get-fp-operation scp)
+    (unless fop
+      ;; Give up if we don't know the operation
+      (return-from get-fp-operands (values nil (list nil nil))))
     (let ((traps (logand (ldb float-exceptions-byte modes)
 			 (ldb float-traps-byte modes)))
 	  (fs1 (and fop rs1 (sigcontext-float-register scp rs1 format)))

commit 1626be46a98e3b18e7609227ffd7823155dcffc4
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Thu Aug 21 23:16:02 2014 -0700

    On x86/darwin, we want and only need the sse2 mode bits. Darwin
    doesn't use x87.

diff --git a/src/code/float-trap.lisp b/src/code/float-trap.lisp
index d97d04e..db0a9c4 100644
--- a/src/code/float-trap.lisp
+++ b/src/code/float-trap.lisp
@@ -87,7 +87,7 @@
     (setf (x87-floating-point-modes) x87-modes)))
+#+(and sse2 (not darwin))
   (defun floating-point-modes ()
     ;; Combine the modes from the FPU and SSE2 units.  Since the sse
@@ -119,7 +119,20 @@
       (setf (vm::sse2-floating-point-modes) new-mode)
       (setf (vm::x87-floating-point-modes) x87-modes))
+  )
+#(and sse2 darwin)
+  (defun floating-point-modes ()
+    ;; Get just the SSE2 mode bits.
+    (vm::sse2-floating-point-modes))
+  (defun (setf floating-point-modes) (new-mode)
+    (declare (type (unsigned-byte 24) new-mode))
+    ;; Set the floating point modes for SSE2.
+    (setf (vm::sse2-floating-point-modes) new-mode)
+    new-mode)
+  )


Summary of changes:
 src/code/float-trap.lisp    |   17 +++++++++++++++--
 src/compiler/ppc/float.lisp |    3 +++
 2 files changed, 18 insertions(+), 2 deletions(-)

CMU Common Lisp

More information about the cmucl-cvs mailing list