1.0.42.36: micro-optimize x86 assembly comparison VOPs
authorNathan Froyd <froydnj@cs.rice.edu>
Fri, 10 Sep 2010 23:06:09 +0000 (23:06 +0000)
committerNathan Froyd <froydnj@cs.rice.edu>
Fri, 10 Sep 2010 23:06:09 +0000 (23:06 +0000)
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
version.lisp-expr

index 54f9489..53ba95e 100644 (file)
                 (: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))
                :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-=
                :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))))
 
 \f
 ;;; Support for the Mersenne Twister, MT19937, random number generator
index 2b1cc31..9bc051c 100644 (file)
@@ -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"