From: Alexey Dejneka Date: Mon, 11 Aug 2003 06:22:15 +0000 (+0000) Subject: 0.8.2.24: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=bbd27eabe09922504493f71d5dea5fc4f4069810;p=sbcl.git 0.8.2.24: * 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). --- diff --git a/src/compiler/generic/vm-tran.lisp b/src/compiler/generic/vm-tran.lisp index 68935a6..8e82df7 100644 --- a/src/compiler/generic/vm-tran.lisp +++ b/src/compiler/generic/vm-tran.lisp @@ -389,3 +389,22 @@ '(and (= (double-float-low-bits x) (double-float-low-bits y)) (= (double-float-high-bits x) (double-float-high-bits y)))) + +;;;; 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))) diff --git a/version.lisp-expr b/version.lisp-expr index d49828d..6116a64 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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"