X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fhppa%2Fchar.lisp;h=06b59dd19a561dd2fa439d9d401badc1864c4e83;hb=63e78fc74df6e60019a9952531c4b7608656f07e;hp=d1928006bb1394d2a446d332a6651265aee3a5be;hpb=63817d29028c8551cda23f432a3328acd7fdd62f;p=sbcl.git diff --git a/src/compiler/hppa/char.lisp b/src/compiler/hppa/char.lisp index d192800..06b59dd 100644 --- a/src/compiler/hppa/char.lisp +++ b/src/compiler/hppa/char.lisp @@ -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,11 +36,12 @@ ;;; Move untagged character values. (define-vop (character-move) + (:note "character move") (:args (x :target y - :scs (character-reg) - :load-if (not (location= x y)))) + :scs (character-reg) + :load-if (not (location= x y)))) (:results (y :scs (character-reg) - :load-if (not (location= x y)))) + :load-if (not (location= x y)))) (:effects) (:affected) (:generator 0 @@ -48,10 +51,11 @@ ;;; 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) - :load-if (not (sc-is y character-reg)))) + :scs (character-reg)) + (fp :scs (any-reg) + :load-if (not (sc-is y character-reg)))) (:results (y)) (:generator 0 (sc-case y @@ -73,25 +77,25 @@ (: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))) ;;; Comparison of characters. (define-vop (character-compare) (:args (x :scs (character-reg)) - (y :scs (character-reg))) + (y :scs (character-reg))) (:arg-types character character) (:conditional) (:info target not-p) @@ -112,3 +116,4 @@ (define-vop (fast-char>/character character-compare) (:translate char>) (:variant :>>)) +