From 1dc0e8c8c1a9ead7154e9c433d63eea103673774 Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Mon, 6 Mar 2006 21:20:28 +0000 Subject: [PATCH] 0.9.10.18: 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 | 5 +---- src/compiler/x86/call.lisp | 10 +++++++--- version.lisp-expr | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/compiler/x86-64/call.lisp b/src/compiler/x86-64/call.lisp index 1e98a64..5488403 100644 --- a/src/compiler/x86-64/call.lisp +++ b/src/compiler/x86-64/call.lisp @@ -200,10 +200,7 @@ (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) diff --git a/src/compiler/x86/call.lisp b/src/compiler/x86/call.lisp index c84fe9c..c080a6e 100644 --- a/src/compiler/x86/call.lisp +++ b/src/compiler/x86/call.lisp @@ -201,9 +201,13 @@ ((<= 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) diff --git a/version.lisp-expr b/version.lisp-expr index 0744e3b..110a255 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".) -"0.9.10.17" +"0.9.10.18" -- 1.7.10.4