Changeset 13808


Ignore:
Timestamp:
Jun 11, 2010, 7:06:38 AM (9 years ago)
Author:
gb
Message:

Let src/dest args be the same in HEADER-LENGTH.
ldrd/strd instructions take a single register (the even-numbered one),
even though they load/store a register pair. (I think that unified
ARM syntax requires both registers to be specified, even though only
the even-numbered one is encoded in the instruction.)

File:
1 edited

Legend:

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

    r13762 r13808  
    164164(defarmlapmacro header-length (dest vheader)
    165165  `(progn
    166     (mov ,dest '-1)
    167     (and ,dest ,dest (:lsr ,vheader (:$ (- arm::num-subtag-bits arm::fixnumshift))))))
     166    (bic ,dest ,vheader (:$ arm::subtag-mask))
     167    (mov ,dest (:lsr ,dest (:$ (- arm::num-subtag-bits arm::fixnumshift))))))
    168168
    169169
     
    254254(defarmlapmacro get-double-float (dest node)
    255255  `(progn
    256     (ldrdd imm0 imm1 (:@ ,node (:$ arm::double-float.value)))
     256    (ldrd imm0 (:@ ,node (:$ arm::double-float.value)))
    257257    (fmdrr ,dest imm0 imm1)))
    258258 
     
    266266  `(progn
    267267    (fmrrd imm0 imm1 ,src)
    268     (strdd imm0 imm1 (:@ ,node (:$ arm::double-float.value)))))
     268    (strd imm0 (:@ ,node (:$ arm::double-float.value)))))
    269269
    270270
Note: See TracChangeset for help on using the changeset viewer.