0.8.2.24:
authorAlexey Dejneka <adejneka@comail.ru>
Mon, 11 Aug 2003 06:22:15 +0000 (06:22 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Mon, 11 Aug 2003 06:22:15 +0000 (06:22 +0000)
        * Quick trick to optimize NJF's SHA1 portable implementation:
          replace LOGNOT with 32BIT-LOGICAL-NOT when its DEST is
          LOGAND with an argument of type (UNSIGNED-BYTE 32).

src/compiler/generic/vm-tran.lisp
version.lisp-expr

index 68935a6..8e82df7 100644 (file)
   '(and (= (double-float-low-bits x) (double-float-low-bits y))
        (= (double-float-high-bits x) (double-float-high-bits y))))
 
+\f
+;;;; 32-bit operations
+(deftransform lognot ((x) ((unsigned-byte 32)) *
+                      :node node
+                      :result result)
+  "32-bit implementation"
+  (let ((dest (continuation-dest result)))
+    (unless (and (combination-p dest)
+                 (eq (continuation-fun-name (combination-fun dest))
+                     'logand))
+      (give-up-ir1-transform))
+    (unless (some (lambda (arg)
+                    (csubtypep (continuation-type arg)
+                               (specifier-type '(unsigned-byte 32))))
+                  (combination-args dest))
+      (give-up-ir1-transform))
+    (setf (node-derived-type node)
+          (values-specifier-type '(values (unsigned-byte 32) &optional)))
+    '(32bit-logical-not x)))
index d49828d..6116a64 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.2.23"
+"0.8.2.24"