[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