- (move ah x) ; Maybe move char byte.
- (inst mov al base-char-widetag) ; x86 to type bits
- (inst and rax-tn #xffff) ; Remove any junk bits.
- (move y rax-tn)))
-(define-move-vop move-from-base-char :move
- (base-char-reg base-char-stack) (any-reg descriptor-reg control-stack))
-
-;;; Move untagged base-char values.
-(define-vop (base-char-move)
+ (inst imul y x (ash 1 n-widetag-bits))
+ (inst or y character-widetag)))
+#!-sb-unicode
+(define-vop (move-from-character)
+ (:args (x :scs (character-reg character-stack)))
+ (:results (y :scs (any-reg descriptor-reg #+nil control-stack)))
+ (:note "character tagging")
+ (:generator 1
+ (move (make-random-tn :kind :normal :sc (sc-or-lose 'character-reg)
+ :offset (tn-offset y))
+ x)
+ (inst shl y n-widetag-bits)
+ (inst or y character-widetag)
+ (inst and y #xffff)))
+(define-move-vop move-from-character :move
+ (character-reg)
+ (any-reg descriptor-reg #!-sb-unicode control-stack))
+
+;;; Move untagged character values.
+(define-vop (character-move)