X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Fpred.lisp;h=8f2abbd8d21c0fc572d24fdc40fed86cf141033b;hb=a189a69454ef7635149319ae213b337f17c50d20;hp=a490a0a41d81fc2339db9664103984b5e448201d;hpb=17dd0a1692d807958a48a10d4cc44fe35cd1d37d;p=sbcl.git diff --git a/src/compiler/x86-64/pred.lisp b/src/compiler/x86-64/pred.lisp index a490a0a..8f2abbd 100644 --- a/src/compiler/x86-64/pred.lisp +++ b/src/compiler/x86-64/pred.lisp @@ -95,8 +95,7 @@ the values, and VOP-name the name of the VOP that will be used to execute the conditional move.") -(!def-vm-support-routine - convert-conditional-move-p (node dst-tn x-tn y-tn) +(defun convert-conditional-move-p (node dst-tn x-tn y-tn) (declare (ignore node)) (let* ((ptype (sb!c::tn-primitive-type dst-tn)) (name (sb!c::primitive-type-name ptype)) @@ -217,7 +216,7 @@ (:conditional :e) (:policy :fast-safe) (:translate eq) - (:generator 8 + (:generator 6 (cond ((sc-is y immediate) (let ((val (tn-value y))) @@ -267,14 +266,15 @@ ;; We only weaken EQL => EQ for characters and fixnums, and detect ;; when types definitely mismatch. No need to import other EQL ;; VOPs (e.g. floats). -(macrolet ((def (eq-name eql-name) +(macrolet ((def (eq-name eql-name cost) `(define-vop (,eq-name ,eql-name) - (:translate eq)))) - (def fast-if-eq-character fast-char=/character) - (def fast-if-eq-character/c fast-char=/character/c) - (def fast-if-eq-fixnum fast-eql/fixnum) - (def fast-if-eq-fixnum/c fast-eql-c/fixnum) - (def fast-if-eq/signed fast-if-eql/signed) - (def fast-if-eq-c/signed fast-if-eql-c/signed) - (def fast-if-eq/unsigned fast-if-eql/unsigned) - (def fast-if-eq-c/unsigned fast-if-eql-c/unsigned)) + (:translate eq) + (:variant-cost ,cost)))) + (def fast-if-eq-character fast-char=/character 3) + (def fast-if-eq-character/c fast-char=/character/c 2) + (def fast-if-eq-fixnum fast-eql/fixnum 3) + (def fast-if-eq-fixnum/c fast-eql-c/fixnum 2) + (def fast-if-eq-signed fast-if-eql/signed 5) + (def fast-if-eq-signed/c fast-if-eql-c/signed 4) + (def fast-if-eq-unsigned fast-if-eql/unsigned 5) + (def fast-if-eq-unsigned/c fast-if-eql-c/unsigned 4))