[Openmcl-cvs-notifications] r10365 - in /trunk/source/compiler/PPC: PPC32/ppc32-vinsns.lisp PPC64/ppc64-vinsns.lisp

gb at clozure.com gb at clozure.com
Wed Aug 6 02:31:32 EDT 2008


Author: gb
Date: Wed Aug  6 02:31:32 2008
New Revision: 10365

Log:
Change fixnum->char (to exclude #xffff,#xfffe); add char-code->char.

Modified:
    trunk/source/compiler/PPC/PPC32/ppc32-vinsns.lisp
    trunk/source/compiler/PPC/PPC64/ppc64-vinsns.lisp

Modified: trunk/source/compiler/PPC/PPC32/ppc32-vinsns.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/PPC/PPC32/ppc32-vinsns.lisp (original)
+++ trunk/source/compiler/PPC/PPC32/ppc32-vinsns.lisp Wed Aug  6 02:31:32 2=
008
@@ -2542,16 +2542,26 @@
                                   ((src :imm))
                                   ((temp :u32)
                                    (crf0 (:crf 0))))
+  (srwi temp src (+ ppc32::fixnumshift 1))
+  (cmplwi temp (ash #xffff -1))
   (srwi temp src (+ ppc32::fixnumshift 11))
+  (beq :bad)
   (cmpwi temp 27)
   (slwi dest src (- ppc32::charcode-shift ppc32::fixnumshift))
   (bne+ :ok)
+  :bad
   (li dest ppc32::nil-value)
   (b :done)
   :ok
   (addi dest dest ppc32::subtag-character)
   :done)
 =

+;;; src is known to be a code for which CODE-CHAR returns non-nil.
+(define-ppc32-vinsn code-char->char (((dest :lisp))
+				     ((src :imm))
+				     ())
+  (slwi dest src (- ppc32::charcode-shift ppc32::fixnum-shift))
+  (addi dest dest ppc32::subtag-character))
 =

 (define-ppc32-vinsn u32->char (((dest :lisp))
                               ((src :u32))

Modified: trunk/source/compiler/PPC/PPC64/ppc64-vinsns.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/PPC/PPC64/ppc64-vinsns.lisp (original)
+++ trunk/source/compiler/PPC/PPC64/ppc64-vinsns.lisp Wed Aug  6 02:31:32 2=
008
@@ -2550,15 +2550,26 @@
 				  ((src :imm))
 				  ((temp :u64)
                                    (crf0 (:crf 0))))
+  (srdi temp src (+ ppc64::fixnumshift 1))
+  (cmpldi temp (ash #xffff -1))
   (srdi temp src (+ ppc64::fixnumshift 11))
+  (beq :bad)
   (cmpdi temp 27)
   (sldi dest src (- ppc64::charcode-shift ppc64::fixnumshift))
   (bne+ :ok)
+  :bad
   (li dest ppc64::nil-value)
   (b :done)
   :ok
   (addi dest dest ppc64::subtag-character)
   :done)
+
+(define-ppc64-vinsn code-char->char (((dest :lisp))
+				     ((src :imm))
+                               ())
+  (sldi dest src (- ppc64::charcode-shift ppc64::fixnumshift))
+  (ori dest dest ppc64::subtag-character))
+
 =

 (define-ppc64-vinsn u32->char (((dest :lisp))
 			      ((src :u32))



More information about the Openmcl-cvs-notifications mailing list