X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Farith.lisp;h=b19fcb3470dcad72fbac68fc3470e4912f9eb6d7;hb=88cc2f72774202503588331fddd1592ae8546de1;hp=3910de909539d4a2b7cc05e8c45eee7594ae4c92;hpb=8b6626faeca6b41a0c7aacb5293c54d115cec154;p=sbcl.git diff --git a/src/compiler/x86/arith.lisp b/src/compiler/x86/arith.lisp index 3910de9..b19fcb3 100644 --- a/src/compiler/x86/arith.lisp +++ b/src/compiler/x86/arith.lisp @@ -614,7 +614,7 @@ ;; at the low five bits of the result. (inst sar result (min 31 (- amount))) ;; Fixnum correction. - (inst and result #xfffffffc))))))) + (inst and result (lognot fixnum-tag-mask)))))))) (define-vop (fast-ash-left/fixnum=>fixnum) (:translate ash) @@ -1071,6 +1071,8 @@ (inst jmp (if not-p :nc :c) target))) (define-vop (fast-logbitp/signed fast-conditional/signed) + (:args (x :scs (signed-reg signed-stack)) + (y :scs (signed-reg))) (:translate %logbitp) (:generator 6 (inst bt x y) @@ -1084,6 +1086,8 @@ (inst jmp (if not-p :nc :c) target))) (define-vop (fast-logbitp/unsigned fast-conditional/unsigned) + (:args (x :scs (unsigned-reg unsigned-stack)) + (y :scs (unsigned-reg))) (:translate %logbitp) (:generator 6 (inst bt x y)