Changeset 10361


Ignore:
Timestamp:
Aug 5, 2008, 9:40:35 PM (11 years ago)
Author:
gb
Message:

Since we're using the more compact encoding of MOVL, no need to
xorl/add to set-nargs to non-zero value.

FIXNUM->CHAR: return NIL on #xfffe, #xffff.

new CODE-CHAR->CHAR: box without checking.

Remove static branch-prediction suffixes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/X86/X8664/x8664-vinsns.lisp

    r10204 r10361  
    298298(define-x8664-vinsn set-nargs (()
    299299                               ((n :s16const)))
    300 
    301   ((:pred < n 16)
    302    (xorl (:%l x8664::nargs ) (:%l x8664::nargs ))
    303    ((:pred > n 0)
    304     (addl (:$b (:apply ash n x8664::word-shift)) (:%l  x8664::nargs))))
    305   ((:pred >= n 16)
     300  ((:pred = n 0)
     301   (xorl (:%l x8664::nargs ) (:%l x8664::nargs )))
     302  ((:not (:pred = n 0))
    306303   (movl (:$l (:apply ash n x8664::word-shift)) (:%l x8664::nargs ))))
    307304
     
    12421239     ((header (:u64 #.x8664::imm0))
    12431240      (scaled-size (:u64 #.x8664::imm1))))
    1244   (jno.pt no-overflow)
     1241  (jno no-overflow)
    12451242  (movq (:%q val) (:%q scaled-size))
    12461243  (sarq (:$ub x8664::fixnumshift) (:%q scaled-size))
     
    19081905  (movq (:$l 0) (:@ x8664::interrupt-level-binding-index (:%q temp)))
    19091906  (movq (:%q x8664::rsp) (:@ (:%seg :rcontext) x8664::tcr.db-link))
    1910   (jns.pt :done)
     1907  (jns :done)
    19111908  (btrq (:$ub 63) (:@ (:%seg :rcontext) x8664::tcr.interrupt-pending))
    1912   (jae.pt :done)
     1909  (jae :done)
    19131910  (ud2a)
    19141911  (:byte 2)
     
    19471944  (movq (:%q oldval) (:@ x8664::interrupt-level-binding-index (:%q tlb)))
    19481945  (movq (:%q link) (:@ (:%seg :rcontext) x8664::tcr.db-link))
    1949   (jns.pt :done)
     1946  (jns :done)
    19501947  (testq (:%q oldval) (:%q oldval))
    1951   (js.pt :done)
     1948  (js :done)
    19521949  (btrq (:$ub 63) (:@ (:%seg :rcontext) x8664::tcr.interrupt-pending))
    1953   (jae.pt :done)
     1950  (jae :done)
    19541951  (ud2a)
    19551952  (:byte 2)
     
    21652162  (movzbl (:%b bitnum) (:%l bitnum))
    21662163  (imull (:$b x8664::fixnumone) (:%l bitnum) (:%l dest)))
    2167                                                      
     2164
     2165
     2166(define-x8664-vinsn nref-bit-vector-flags (()
     2167                                            ((bitnum :s64)
     2168                                             (bitvector :lisp))
     2169                                            ())
     2170  (btq (:%q bitnum) (:@ x8664::misc-data-offset (:%q bitvector))))
     2171
    21682172(define-x8664-vinsn misc-ref-c-bit-fixnum (((dest :imm))
    21692173                                           ((src :lisp)
     
    21752179  (movzbl (:%b temp) (:%l temp))
    21762180  (imull (:$b x8664::fixnumone) (:%l temp) (:%l dest)))
     2181
     2182
     2183(define-x8664-vinsn misc-ref-c-bit-flags (()
     2184                                           ((src :lisp)
     2185                                            (idx :u64const))
     2186                                          )
     2187  (btq (:$ub (:apply logand 63 idx))
     2188       (:@ (:apply + x8664::misc-data-offset (:apply ash (:apply ash idx -6) x8664::word-shift)) (:%q src))))
    21772189
    21782190(define-x8664-vinsn deref-macptr (((addr :address))
     
    28282840  (movl (:%l object) (:%l tag))
    28292841  (andl (:$b x8664::fixnummask) (:%l tag))
    2830   (je.pt :got-it)
     2842  (je :got-it)
    28312843  (cmpl (:$b x8664::tag-misc) (:%l tag))
    28322844  (jne :bad)
     
    30433055  (testl (:$l x8664::fixnummask) (:%l object))
    30443056  (movl (:%l object) (:%l tag))
    3045   (je.pt :ok)
     3057  (je :ok)
    30463058  (andl (:$b x8664::fulltagmask) (:%l tag))
    30473059  (cmpl (:$b x8664::fulltag-misc) (:%l tag))
     
    30603072  (testl (:$l x8664::fixnummask) (:%l object))
    30613073  (movq (:%q object) (:%q tag))
    3062   (je.pt :ok-if-non-negative)
     3074  (je :ok-if-non-negative)
    30633075  (andl (:$b x8664::fulltagmask) (:%l tag))
    30643076  (cmpl (:$b x8664::fulltag-misc) (:%l tag))
     
    30673079  (je :two)
    30683080  (cmpq (:$l x8664::three-digit-bignum-header) (:@ x8664::misc-header-offset (:%q object)))
    3069   (jne.pn :bad)
     3081  (jne :bad)
    30703082  (cmpl (:$b 0) (:@ (+ x8664::misc-data-offset 8) (:%q object)))
    30713083  (je :ok)
     
    36093621                                  ((temp :u32)))
    36103622  (movl (:%l src) (:%l temp))
    3611   (sarl (:$ub (+ x8664::fixnumshift 11)) (:%l temp))
     3623  (sarl (:$ub (+ x8664::fixnumshift 1)) (:%l temp))
     3624  (cmpl (:$l (ash #xfffe -1)) (:%l temp))
     3625  (je :bad-if-eq)
     3626  (sarl (:$ub (- 11 1)) (:%l temp))
    36123627  (cmpl (:$b (ash #xd800 -11))(:%l temp))
     3628  :bad-if-eq
    36133629  (movl (:$l x8664::nil-value) (:%l temp))
    36143630  (cmovel (:%l temp) (:%l dest))
     
    36193635   (movl (:%l src) (:%l dest)))
    36203636  (shll (:$ub (- x8664::charcode-shift x8664::fixnumshift)) (:%l dest))
    3621   (addb (:$b x8664::subtag-character) (:%b dest))
     3637  (addl (:$b x8664::subtag-character) (:%l dest))
     3638  :done)
     3639
     3640;;; src is known to be a code for which CODE-CHAR returns non-nil.
     3641(define-x8664-vinsn code-char->char (((dest :lisp))
     3642                                  ((src :imm))
     3643                                  ())
     3644  ((:not (:pred =
     3645                (:apply %hard-regspec-value dest)
     3646                (:apply %hard-regspec-value src)))
     3647   (movl (:%l src) (:%l dest)))
     3648  (shll (:$ub (- x8664::charcode-shift x8664::fixnumshift)) (:%l dest))
     3649  (addl (:$b x8664::subtag-character) (:%l dest))
    36223650  :done)
    36233651
     
    39083936  (movss (:@ (:%q src) (:%q index)) (:%xmm dest)))
    39093937
     3938(define-x8664-vinsn zero-extend-nargs (()
     3939                                       ())
     3940  (movzwl (:%w x8664::nargs) (:%l x8664::nargs)))
    39103941
    39113942(define-x8664-vinsn load-adl (()
Note: See TracChangeset for help on using the changeset viewer.