X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fsparc%2Fchar.lisp;h=7438fd913452fb31b8148371b02dd9466e756f5a;hb=9cc049e3ccf2650dbb867b6f651626cf67a5a993;hp=900342a8ef53a9aea90451023e857a8e5990add2;hpb=ea775867d48327bf1179eb570263427f28083880;p=sbcl.git diff --git a/src/compiler/sparc/char.lisp b/src/compiler/sparc/char.lisp index 900342a..7438fd9 100644 --- a/src/compiler/sparc/char.lisp +++ b/src/compiler/sparc/char.lisp @@ -129,3 +129,28 @@ (define-vop (fast-char>/base-char base-char-compare) (:translate char>) (:variant :gtu :leu)) + +(define-vop (base-char-compare/c) + (:args (x :scs (base-char-reg))) + (:arg-types base-char (:constant base-char)) + (:conditional) + (:info target not-p y) + (:policy :fast-safe) + (:note "inline constant comparison") + (:variant-vars condition not-condition) + (:generator 2 + (inst cmp x (sb!xc:char-code y)) + (inst b (if not-p not-condition condition) target) + (inst nop))) + +(define-vop (fast-char=/base-char/c base-char-compare/c) + (:translate char=) + (:variant :eq :ne)) + +(define-vop (fast-char/base-char/c base-char-compare/c) + (:translate char>) + (:variant :gtu :leu))