From: Nathan F. <nf...@us...> - 2007-02-07 19:12:49
|
Update of /cvsroot/sbcl/sbcl/src/compiler/x86-64 In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv12862/src/compiler/x86-64 Modified Files: arith.lisp Log Message: 1.0.2.21: Make ASH VOPs use 'LEA <reg>, [<reg>+<reg>]' instead of 'LEA <reg>, [<reg>*2]' on x86 and x86-64, resulting in shorter code. Index: arith.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86-64/arith.lisp,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- arith.lisp 14 Nov 2006 22:15:21 -0000 1.20 +++ arith.lisp 7 Feb 2007 19:12:43 -0000 1.21 @@ -593,7 +593,7 @@ (:note "inline ASH") (:generator 2 (cond ((and (= amount 1) (not (location= number result))) - (inst lea result (make-ea :qword :index number :scale 2))) + (inst lea result (make-ea :qword :base number :index number))) ((and (= amount 2) (not (location= number result))) (inst lea result (make-ea :qword :index number :scale 4))) ((and (= amount 3) (not (location= number result))) @@ -653,7 +653,7 @@ (:note "inline ASH") (:generator 3 (cond ((and (= amount 1) (not (location= number result))) - (inst lea result (make-ea :qword :index number :scale 2))) + (inst lea result (make-ea :qword :base number :index number))) ((and (= amount 2) (not (location= number result))) (inst lea result (make-ea :qword :index number :scale 4))) ((and (= amount 3) (not (location= number result))) @@ -680,7 +680,7 @@ (:note "inline ASH") (:generator 3 (cond ((and (= amount 1) (not (location= number result))) - (inst lea result (make-ea :qword :index number :scale 2))) + (inst lea result (make-ea :qword :base number :index number))) ((and (= amount 2) (not (location= number result))) (inst lea result (make-ea :qword :index number :scale 4))) ((and (= amount 3) (not (location= number result))) |