Adjust SETcc instruction encoding on x86-64.
[sbcl.git] / src / compiler / hppa / char.lisp
index aec3e69..06b59dd 100644 (file)
@@ -15,6 +15,7 @@
 
 ;;; Move a tagged char to an untagged representation.
 (define-vop (move-to-character)
+  (:note "character untagging")
   (:args (x :scs (any-reg descriptor-reg)))
   (:results (y :scs (character-reg)))
   (:generator 1
@@ -24,6 +25,7 @@
 
 ;;; Move an untagged char to a tagged representation.
 (define-vop (move-from-character)
+  (:note "character tagging")
   (:args (x :scs (character-reg)))
   (:results (y :scs (any-reg descriptor-reg)))
   (:generator 1
@@ -34,6 +36,7 @@
 
 ;;; Move untagged character values.
 (define-vop (character-move)
+  (:note "character move")
   (:args (x :target y
             :scs (character-reg)
             :load-if (not (location= x y))))
@@ -48,6 +51,7 @@
 
 ;;; Move untagged character args/return-values.
 (define-vop (move-character-arg)
+  (:note "character arg move")
   (:args (x :target y
             :scs (character-reg))
          (fp :scs (any-reg)
   (:policy :fast-safe)
   (:args (ch :scs (character-reg) :target res))
   (:arg-types character)
-  (:results (res :scs (unsigned-reg)))
+  (:results (res :scs (any-reg)))
   (:result-types positive-fixnum)
   (:generator 1
-    (move ch res)))
+    (inst sll ch 2 res)))
 
 (define-vop (code-char)
   (:translate code-char)
   (:policy :fast-safe)
-  (:args (code :scs (unsigned-reg) :target res))
+  (:args (code :scs (any-reg) :target res))
   (:arg-types positive-fixnum)
   (:results (res :scs (character-reg)))
   (:result-types character)
   (:generator 1
-    (move code res)))
+    (inst srl code 2 res)))
 \f
 ;;; Comparison of characters.
 (define-vop (character-compare)
 (define-vop (fast-char>/character character-compare)
   (:translate char>)
   (:variant :>>))
+