X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Farith.lisp;h=1413f40d6a81caba507eea1d93f79881fbbaea39;hb=47c73b316a434da5bab4e39b746bbe9a0f17aa8c;hp=22d5bc10acc4822ea943646bb426ecb6347a6ba9;hpb=33391df7f217210a8017296f6bf2da8c9f60769f;p=sbcl.git diff --git a/src/compiler/x86-64/arith.lisp b/src/compiler/x86-64/arith.lisp index 22d5bc1..1413f40 100644 --- a/src/compiler/x86-64/arith.lisp +++ b/src/compiler/x86-64/arith.lisp @@ -1012,9 +1012,7 @@ constant shift greater than word length"))) (:result-types unsigned-num) (:generator 28 (move res arg) - (if (sc-is res unsigned-reg) - (inst test res res) - (inst cmp res 0)) + (inst test res res) (inst jmp :ge POS) (inst not res) POS @@ -1081,10 +1079,8 @@ constant shift greater than word length"))) (:generator 25 (move res arg) (when (> n-fixnum-tag-bits 1) - (inst shr res (1- n-fixnum-tag-bits))) - (if (sc-is res unsigned-reg) - (inst test res res) - (inst cmp res 0)) + (inst sar res (1- n-fixnum-tag-bits))) + (inst test res res) (inst jmp :ge POS) (inst not res) POS