X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Fpred.lisp;h=8c9b2fd87114696175c7bac87660a1d95432ba0e;hb=95591ed483dbb8c0846c129953acac1554f28809;hp=c74ed6012191d97e0347a3f058fea1184e39a116;hpb=d95f1e6476aa63695e018a7769a1ae9e002fca36;p=sbcl.git diff --git a/src/compiler/x86-64/pred.lisp b/src/compiler/x86-64/pred.lisp index c74ed60..8c9b2fd 100644 --- a/src/compiler/x86-64/pred.lisp +++ b/src/compiler/x86-64/pred.lisp @@ -78,6 +78,10 @@ ((unsigned-byte-64 unsigned-byte-63) unsigned-reg move-if/unsigned) (signed-byte-64 signed-reg move-if/signed) + ;; FIXME: Can't use CMOV with byte registers, and characters live + ;; in such outside of unicode builds. A better solution then just + ;; disabling MOVE-IF/CHAR should be possible, though. + #!+sb-unicode (character character-reg move-if/char) ((single-float complex-single-float @@ -103,10 +107,6 @@ (let ((scn (sc-number-or-lose representation))) (labels ((make-tn () (make-representation-tn ptype scn)) - (immediate-tn-p (tn) - (and (eq (sb!c::tn-kind tn) :constant) - (eq (sb!c::immediate-constant-sc (tn-value tn)) - (sc-number-or-lose 'immediate)))) (frob-tn (tn) (if (immediate-tn-p tn) tn @@ -202,6 +202,8 @@ unsigned-num unsigned-reg unsigned-stack) (def-move-if move-if/signed signed-num signed-reg signed-stack) + ;; FIXME: See *CMOV-PTYPE-REPRESENTATION-VOP* above. + #!+sb-unicode (def-move-if move-if/char character character-reg character-stack) (def-move-if move-if/sap