From f42c1323d7248a485260619059fb5f40092abe43 Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Fri, 10 Sep 2010 23:06:09 +0000 Subject: [PATCH] 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. --- src/assembly/x86/arith.lisp | 22 +++------------------- version.lisp-expr | 2 +- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/src/assembly/x86/arith.lisp b/src/assembly/x86/arith.lisp index 54f9489..53ba95e 100644 --- a/src/assembly/x86/arith.lisp +++ b/src/assembly/x86/arith.lisp @@ -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 diff --git a/version.lisp-expr b/version.lisp-expr index 2b1cc31..9bc051c 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.42.35" +"1.0.42.36" -- 1.7.10.4