Changeset 10365


Ignore:
Timestamp:
Aug 6, 2008, 6:31:32 AM (11 years ago)
Author:
gb
Message:

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

Location:
trunk/source/compiler/PPC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/PPC/PPC32/ppc32-vinsns.lisp

    r7966 r10365  
    25432543                                  ((temp :u32)
    25442544                                   (crf0 (:crf 0))))
     2545  (srwi temp src (+ ppc32::fixnumshift 1))
     2546  (cmplwi temp (ash #xffff -1))
    25452547  (srwi temp src (+ ppc32::fixnumshift 11))
     2548  (beq :bad)
    25462549  (cmpwi temp 27)
    25472550  (slwi dest src (- ppc32::charcode-shift ppc32::fixnumshift))
    25482551  (bne+ :ok)
     2552  :bad
    25492553  (li dest ppc32::nil-value)
    25502554  (b :done)
     
    25532557  :done)
    25542558
     2559;;; src is known to be a code for which CODE-CHAR returns non-nil.
     2560(define-ppc32-vinsn code-char->char (((dest :lisp))
     2561                                     ((src :imm))
     2562                                     ())
     2563  (slwi dest src (- ppc32::charcode-shift ppc32::fixnum-shift))
     2564  (addi dest dest ppc32::subtag-character))
    25552565
    25562566(define-ppc32-vinsn u32->char (((dest :lisp))
  • trunk/source/compiler/PPC/PPC64/ppc64-vinsns.lisp

    r7965 r10365  
    25512551                                  ((temp :u64)
    25522552                                   (crf0 (:crf 0))))
     2553  (srdi temp src (+ ppc64::fixnumshift 1))
     2554  (cmpldi temp (ash #xffff -1))
    25532555  (srdi temp src (+ ppc64::fixnumshift 11))
     2556  (beq :bad)
    25542557  (cmpdi temp 27)
    25552558  (sldi dest src (- ppc64::charcode-shift ppc64::fixnumshift))
    25562559  (bne+ :ok)
     2560  :bad
    25572561  (li dest ppc64::nil-value)
    25582562  (b :done)
     
    25602564  (addi dest dest ppc64::subtag-character)
    25612565  :done)
     2566
     2567(define-ppc64-vinsn code-char->char (((dest :lisp))
     2568                                     ((src :imm))
     2569                               ())
     2570  (sldi dest src (- ppc64::charcode-shift ppc64::fixnumshift))
     2571  (ori dest dest ppc64::subtag-character))
     2572
    25622573
    25632574(define-ppc64-vinsn u32->char (((dest :lisp))
Note: See TracChangeset for help on using the changeset viewer.