X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmips%2Fchar.lisp;h=b7d4e940e939f0b88844fbd5be14dc57b0dc2a61;hb=9b1fade83db8453b75b8c7380eb12ce41b5b889c;hp=7f7b0fc9e8a9c05855cb7cabdbb1430945e1a4ac;hpb=63817d29028c8551cda23f432a3328acd7fdd62f;p=sbcl.git diff --git a/src/compiler/mips/char.lisp b/src/compiler/mips/char.lisp index 7f7b0fc..b7d4e94 100644 --- a/src/compiler/mips/char.lisp +++ b/src/compiler/mips/char.lisp @@ -36,10 +36,10 @@ ;;; Move untagged character values. (define-vop (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 @@ -50,9 +50,9 @@ ;;; Move untagged character arguments/return-values. (define-vop (move-character-arg) (: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 @@ -92,10 +92,18 @@ ;;; Comparison of characters. ;;; -(define-vop (character-compare pointer-compare) +(define-vop (character-compare) (:args (x :scs (character-reg)) - (y :scs (character-reg))) - (:arg-types character character)) + (y :scs (character-reg))) + (:arg-types character character) + (:temporary (:scs (non-descriptor-reg)) temp) + (:conditional) + (:info target not-p) + (:policy :fast-safe) + (:note "inline comparison") + (:variant-vars condition) + (:generator 3 + (three-way-comparison x y condition :unsigned not-p target temp))) (define-vop (fast-char=/character character-compare) (:translate char=)