From: Paul Khuong Date: Sat, 8 Jun 2013 02:29:55 +0000 (-0400) Subject: Silence notes about being specialised EQ templates on x86oids X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=7f579b076a1fc54587538ead07e506e7f06f3fe8;p=sbcl.git Silence notes about being specialised EQ templates on x86oids During LTN, we emit notes when the final chosen template costs at least 6 more units than an unapplicable template. Adjust the costs of EQ VOPs to avoid triggering this logic. --- diff --git a/src/compiler/x86-64/pred.lisp b/src/compiler/x86-64/pred.lisp index f017a36..9dce152 100644 --- a/src/compiler/x86-64/pred.lisp +++ b/src/compiler/x86-64/pred.lisp @@ -217,7 +217,7 @@ (:conditional :e) (:policy :fast-safe) (:translate eq) - (:generator 8 + (:generator 6 (cond ((sc-is y immediate) (let ((val (tn-value y))) @@ -267,14 +267,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)) diff --git a/src/compiler/x86/pred.lisp b/src/compiler/x86/pred.lisp index dd41d52..0288887 100644 --- a/src/compiler/x86/pred.lisp +++ b/src/compiler/x86/pred.lisp @@ -177,7 +177,7 @@ (:info) (:policy :fast-safe) (:translate eq) - (:generator 8 + (:generator 6 (let ((x-val (encode-value-if-immediate x)) (y-val (encode-value-if-immediate y))) (cond @@ -190,14 +190,15 @@ (t (inst cmp x y-val)))))) -(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))