Changeset 13817


Ignore:
Timestamp:
Jun 14, 2010, 10:10:36 AM (9 years ago)
Author:
gb
Message:

extract-fulltag-fixnum: don't put tag in what may be a node reg.
lri: fix parenthesization.
Make the fact that some things that handle overflow out-of-line set
arg_z explicit (failing to do that confused the register-tracking
code.) Screw: should really treat them as :calls, since they
sometimes do subprim calls.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/arm/compiler/ARM/arm-vinsns.lisp

    r13794 r13817  
    785785(define-arm-vinsn extract-fulltag-fixnum (((tag :imm))
    786786                                          ((object :lisp)))
    787   (and tag object (:$ arm::fulltagmask))
    788   (mov tag (:lsl tag (:$ arm::fixnumshift))))
     787  (mov tag (:lsl object (:$ arm::fixnumshift)))
     788  (and tag tag (:$ (ash arm::fulltagmask arm::fixnumshift))))
    789789
    790790(define-arm-vinsn extract-typecode (((code :u8))
     
    17351735           (:pred < intval #x10000))
    17361736     (mov dest (:$ (:apply logand #xff00 intval)))
    1737      ((:not (:pred = 0 (:apply logand #xff intval)))))
     1737     ((:not (:pred = 0 (:apply logand #xff intval)))
    17381738      (orr dest dest (:$ (:apply logand #xff intval)))))
    17391739    ((:not (:and (:pred >= intval 0)
     
    17431743     (:word intval)
    17441744     (:code)
    1745      (ldr dest :const)))
     1745     (ldr dest :const)))))
    17461746
    17471747
     
    22762276  :done)
    22772277
    2278 (define-arm-vinsn negate-fixnum-overflow-ool (()
     2278(define-arm-vinsn negate-fixnum-overflow-ool (((result (:lisp #.arm::arg_z)))
    22792279                                              ((src :imm))
    22802280                                              )
     
    23712371  ((:not (:pred = count 0))
    23722372   (mov temp (:asr src (:$ count)))
    2373    (bic dest src (:$ arm::fixnummask))))
     2373   (bic dest temp (:$ arm::fixnummask))))
    23742374
    23752375(define-arm-vinsn %ilsr (((dest :imm))
     
    24682468
    24692469
    2470 (define-arm-vinsn fixnum-add-overflow-ool (()
     2470(define-arm-vinsn fixnum-add-overflow-ool (((result (:lisp #.arm::arg_z)))
    24712471                                           ((x :imm)
    24722472                                            (y :imm))
     
    25352535
    25362536
    2537 (define-arm-vinsn fixnum-sub-overflow-ool (()
     2537(define-arm-vinsn fixnum-sub-overflow-ool (((result (:lisp #.arm::arg_z)))
    25382538                                           ((x :imm)
    25392539                                            (y :imm)))
Note: See TracChangeset for help on using the changeset viewer.