0.9.10.18:
authorNathan Froyd <froydnj@cs.rice.edu>
Mon, 6 Mar 2006 21:20:28 +0000 (21:20 +0000)
committerNathan Froyd <froydnj@cs.rice.edu>
Mon, 6 Mar 2006 21:20:28 +0000 (21:20 +0000)
Micro-optimize DEFAULT-UNKNOWN-VALUES on x86{,-64} by using CMOV
... guard it with *BACKEND-SUBFEATURES* on the x86.

src/compiler/x86-64/call.lisp
src/compiler/x86/call.lisp
version.lisp-expr

index 1e98a64..5488403 100644 (file)
   (cond
    ((<= nvals 1)
     (note-this-location vop :single-value-return)
-    (let ((single-value (gen-label)))
-      (inst jmp :nc single-value)
-      (inst mov rsp-tn rbx-tn)
-      (emit-label single-value)))
+    (inst cmov :c rsp-tn rbx-tn))
    ((<= nvals register-arg-count)
     (let ((regs-defaulted (gen-label)))
       (note-this-location vop :unknown-return)
index c84fe9c..c080a6e 100644 (file)
    ((<= nvals 1)
     (note-this-location vop :single-value-return)
     (let ((single-value (gen-label)))
-      (inst jmp :nc single-value)
-      (inst mov esp-tn ebx-tn)
-      (emit-label single-value)))
+      (cond
+       ((member :cmov *backend-subfeatures*)
+        (inst cmov :c esp-tn ebx-tn))
+       (t
+        (inst jmp :nc single-value)
+        (inst mov esp-tn ebx-tn)
+        (emit-label single-value)))))
    ((<= nvals register-arg-count)
     (let ((regs-defaulted (gen-label)))
       (note-this-location vop :unknown-return)
index 0744e3b..110a255 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.17"
+"0.9.10.18"