From: Juho S. <js...@us...> - 2006-07-20 17:46:04
|
Update of /cvsroot/sbcl/sbcl/src/compiler/x86-64 In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv4510/src/compiler/x86-64 Modified Files: move.lisp Log Message: 0.9.14.30: Micro-optimize x86-64 MOVE-FROM-SIGNED a bit more (thanks to Lutz Euler). Index: move.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86-64/move.lisp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- move.lisp 20 Jul 2006 03:26:13 -0000 1.6 +++ move.lisp 20 Jul 2006 17:45:53 -0000 1.7 @@ -282,7 +282,6 @@ (aver (not (location= x y))) (let ((bignum (gen-label)) (done (gen-label))) - (inst mov y x) ;; We can't do the overflow check with SHL Y, 3, since the ;; state of the overflow flag is only reliably set when ;; shifting by 1. There used to be code here for doing "shift @@ -291,7 +290,7 @@ ;; we can just do a straight multiply instead of trying to ;; optimize it to a shift. This is both faster and smaller. ;; -- JES, 2006-07-08 - (inst imul y 8) + (inst imul y x (ash 1 n-fixnum-tag-bits)) (inst jmp :o bignum) (emit-label done) |