From: Nathan F. <nf...@us...> - 2010-09-10 23:06:18
|
Update of /cvsroot/sbcl/sbcl/src/assembly/x86 In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv30029/src/assembly/x86 Modified Files: arith.lisp Log Message: 1.0.42.36: micro-optimize x86 assembly comparison VOPs No need to load the address of the assembly routine into a temporary register, as we do on x86-64. We can jump to the address directly with CALL. Index: arith.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/assembly/x86/arith.lisp,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- arith.lisp 21 Apr 2009 11:25:52 -0000 1.16 +++ arith.lisp 10 Sep 2010 23:06:09 -0000 1.17 @@ -207,17 +207,11 @@ (:temporary (:sc unsigned-reg :offset edi-offset :from (:argument 1)) edi) - - (:temporary (:sc unsigned-reg :offset ecx-offset - :from :eval) - ecx) (:conditional ,test) (:generator 10 (move edx x) (move edi y) - (inst lea ecx (make-ea :dword - :disp (make-fixup ',name :assembly-routine))) - (inst call ecx))))) + (inst call (make-fixup ',name :assembly-routine)))))) (define-cond-assem-rtn generic-< < two-arg-< :l) (define-cond-assem-rtn generic-> > two-arg-> :g)) @@ -279,16 +273,11 @@ :from (:argument 1)) edi) - (:temporary (:sc unsigned-reg :offset ecx-offset - :from :eval) - ecx) (:conditional :e) (:generator 10 (move edx x) (move edi y) - (inst lea ecx (make-ea :dword - :disp (make-fixup 'generic-eql :assembly-routine))) - (inst call ecx))) + (inst call (make-fixup 'generic-eql :assembly-routine)))) #+sb-assembling (define-assembly-routine (generic-= @@ -341,16 +330,11 @@ :from (:argument 1)) edi) - (:temporary (:sc unsigned-reg :offset ecx-offset - :from :eval) - ecx) (:conditional :e) (:generator 10 (move edx x) (move edi y) - (inst lea ecx (make-ea :dword - :disp (make-fixup 'generic-= :assembly-routine))) - (inst call ecx))) + (inst call (make-fixup 'generic-= :assembly-routine)))) ;;; Support for the Mersenne Twister, MT19937, random number generator |