-(define-vop (move-to-base-char)
- (:args (x :scs (any-reg control-stack) :target al))
- (:temporary (:sc byte-reg :offset al-offset
- :from (:argument 0) :to (:eval 0)) al)
- (:ignore al)
- (:temporary (:sc byte-reg :offset ah-offset :target y
- :from (:argument 0) :to (:result 0)) ah)
- (:results (y :scs (base-char-reg base-char-stack)))
+#!+sb-unicode
+(define-vop (move-to-character)
+ (:args (x :scs (any-reg descriptor-reg) :target y
+ :load-if (not (location= x y))))
+ (:results (y :scs (character-reg)
+ :load-if (not (location= x y))))
+ (:note "character untagging")
+ (:generator 1
+ (move y x)
+ (inst shr y n-widetag-bits)))
+#!-sb-unicode
+(define-vop (move-to-character)
+ (:args (x :scs (any-reg control-stack)))
+ (:results (y :scs (character-reg #+nil character-stack)))