0.9.10.21:
authorNathan Froyd <froydnj@cs.rice.edu>
Tue, 7 Mar 2006 18:47:37 +0000 (18:47 +0000)
committerNathan Froyd <froydnj@cs.rice.edu>
Tue, 7 Mar 2006 18:47:37 +0000 (18:47 +0000)
Add CMOV micro-optimization in GENERATE-CALL-SEQUENCE, too.

src/assembly/x86-64/support.lisp
src/assembly/x86/support.lisp
version.lisp-expr

index 96f1ef3..fb18d8a 100644 (file)
@@ -24,9 +24,7 @@
               (make-ea :qword :disp (make-fixup ',name :assembly-routine)))
         (inst call temp-reg-tn)
         (note-this-location ,vop :single-value-return)
-        (inst jmp :nc single-value)
-        (move rsp-tn rbx-tn)
-        single-value)
+        (inst cmov :c rsp-tn rbx-tn))
       '((:save-p :compute-only))))
     (:none
      (values
index 527e326..1b814f3 100644 (file)
       `((note-this-location ,vop :call-site)
         (inst call (make-fixup ',name :assembly-routine))
         (note-this-location ,vop :single-value-return)
-        (inst jmp :nc single-value)
-        (move esp-tn ebx-tn)
-        single-value)
+        (cond
+          ((member :cmov *backend-subfeatures*)
+           (inst cmov :c esp-tn ebx-tn))
+          (t
+           (let ((single-value (gen-label)))
+             (inst jmp :nc single-value)
+             (move esp-tn ebx-tn)
+             (emit-label single-value)))))
       '((:save-p :compute-only))))))
 
 (!def-vm-support-routine generate-return-sequence (style)
index 8991c75..c43b287 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".)
-"0.9.10.20"
+"0.9.10.21"