X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Fx86%2Fsupport.lisp;h=1b814f32d9c5ede3534375f119cb9c20df92e987;hb=95591ed483dbb8c0846c129953acac1554f28809;hp=527e326821fad5a8ad2a3223bb4ce1caf36e68a7;hpb=f78e2d271f540d68d35b4f41696ce746ff129ee3;p=sbcl.git diff --git a/src/assembly/x86/support.lisp b/src/assembly/x86/support.lisp index 527e326..1b814f3 100644 --- a/src/assembly/x86/support.lisp +++ b/src/assembly/x86/support.lisp @@ -34,9 +34,14 @@ `((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)