Changeset 9492


Ignore:
Timestamp:
May 15, 2008, 11:16:02 PM (11 years ago)
Author:
gb
Message:

Usa a new (shorter, see ticket:52) encoding for movl in !SET-NARGS.
(The idee is too avoid partial-word writes; we still only test
the low half of the nargs register, but partial-word reads aren't
as much of a perfomance hit.)

Add a vinsn for mapping a known (valid) char-code to the corresponding
character.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711-perf/ccl/compiler/X86/X8664/x8664-vinsns.lisp

    r9412 r9492  
    299299                               ((n :s16const)))
    300300  ((:pred = n 0)
    301    (xorw (:%w x8664::nargs ) (:%w x8664::nargs )))
     301   (xorl (:%l x8664::nargs ) (:%l x8664::nargs )))
    302302  ((:not (:pred = n 0))
    303    (movw (:$w (:apply ash n x8664::word-shift)) (:%w x8664::nargs ))))
     303   (movl (:$l (:apply ash n x8664::word-shift)) (:%l x8664::nargs ))))
    304304
    305305(define-x8664-vinsn check-exact-nargs (()
     
    35853585   (movl (:%l src) (:%l dest)))
    35863586  (shll (:$ub (- x8664::charcode-shift x8664::fixnumshift)) (:%l dest))
    3587   (addb (:$b x8664::subtag-character) (:%b dest))
     3587  (addl (:$b x8664::subtag-character) (:%l dest))
     3588  :done)
     3589
     3590;;; src is known to be a code for which CODE-CHAR returns non-nil.
     3591(define-x8664-vinsn code-char->char (((dest :lisp))
     3592                                  ((src :imm))
     3593                                  ())
     3594  ((:not (:pred =
     3595                (:apply %hard-regspec-value dest)
     3596                (:apply %hard-regspec-value src)))
     3597   (movl (:%l src) (:%l dest)))
     3598  (shll (:$ub (- x8664::charcode-shift x8664::fixnumshift)) (:%l dest))
     3599  (addl (:$b x8664::subtag-character) (:%l dest))
    35883600  :done)
    35893601
Note: See TracChangeset for help on using the changeset viewer.