((unsigned-byte-32 unsigned-byte-31)
unsigned-reg move-if/unsigned)
(signed-byte-32 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
(def-move-if move-if/fx tagged-num any-reg control-stack)
(def-move-if move-if/unsigned 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 system-area-pointer sap-reg sap-stack))
(:info)
(:policy :fast-safe)
(:translate eq)
- (:generator 3
+ (:generator 8
(let ((x-val (encode-value-if-immediate x))
(y-val (encode-value-if-immediate y)))
(cond
((sc-is x immediate) (inst cmp y x-val))
(t (inst cmp x y-val))))))
+
+(macrolet ((def (eq-name eql-name)
+ `(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/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))