0.8.19.2:
authorChristophe Rhodes <csr21@cam.ac.uk>
Fri, 28 Jan 2005 09:01:11 +0000 (09:01 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Fri, 28 Jan 2005 09:01:11 +0000 (09:01 +0000)
Merge David Lichteblau patches (sbcl-devel 2005-01-1x)
... docstring for INTEGER-LENGTH;
... SHLD / SHRD disassembly.

NEWS
src/code/numbers.lisp
src/compiler/x86-64/arith.lisp
src/compiler/x86/arith.lisp
src/compiler/x86/insts.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 9406e6e..1bf195b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,6 @@
 changes in sbcl-0.8.20 (0.9alpha.0?) relative to sbcl-0.8.18:
+  * fixed disassembly of SHLD and SHRD on x86.  (thanks to David
+    Lichteblau)
   * fixed some bugs related to Unicode integration:
     ** portions of multibyte characters at the end of buffers for
        character-based file input are correctly transferred to the
index ca16028..c0440f3 100644 (file)
@@ -1095,7 +1095,8 @@ the first."
 
 (defun integer-length (integer)
   #!+sb-doc
-  "Return the number of significant bits in the absolute value of integer."
+  "Return the number of non-sign bits in the twos-complement representation
+  of INTEGER."
   (etypecase integer
     (fixnum
      (integer-length (truly-the fixnum integer)))
index 8f40dd8..fad7497 100644 (file)
 
     DONE))
 \f
-;;; Note: documentation for this function is wrong - rtfm
 (define-vop (signed-byte-64-len)
   (:translate integer-length)
   (:note "inline (signed-byte 32) integer-length")
index e71a87d..0be42b4 100644 (file)
 
     DONE))
 \f
-;;; Note: documentation for this function is wrong - rtfm
 (define-vop (signed-byte-32-len)
   (:translate integer-length)
   (:note "inline (signed-byte 32) integer-length")
index 8117383..fac5d41 100644 (file)
 (eval-when (:compile-toplevel :execute)
   (defun double-shift-inst-printer-list (op)
     `(#+nil
-      (ext-reg-reg/mem-imm ((op ,(logior op #b100))
+      (ext-reg-reg/mem-imm ((op ,(logior op #b10))
                            (imm nil :type signed-imm-byte)))
-      (ext-reg-reg/mem ((op ,(logior op #b101)))
-        (:name :tab reg/mem ", " 'cl)))))
+      (ext-reg-reg/mem ((op ,(logior op #b10)))
+        (:name :tab reg/mem ", " reg ", " 'cl)))))
 
 (define-instruction shld (segment dst src amt)
   (:declare (type (or (member :cl) (mod 32)) amt))
-  (:printer-list (double-shift-inst-printer-list #b10100000))
+  (:printer-list (double-shift-inst-printer-list #b1010000))
   (:emitter
    (emit-double-shift segment #b0 dst src amt)))
 
 (define-instruction shrd (segment dst src amt)
   (:declare (type (or (member :cl) (mod 32)) amt))
-  (:printer-list (double-shift-inst-printer-list #b10101000))
+  (:printer-list (double-shift-inst-printer-list #b1010100))
   (:emitter
    (emit-double-shift segment #b1 dst src amt)))
 
index eff2dce..5e928f5 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.19.1"
+"0.8.19.2"