Changeset 14080


Ignore:
Timestamp:
Jul 29, 2010, 3:56:30 PM (9 years ago)
Author:
gb
Message:

Register targeting in ARM2-AREF2. (May need to do more of this elsewhere;
temporary regs are allocated in a different order on ARM than on other
platforms, so we need to be more careful about avoiding conflicts; in AREF/ASET,
some temporaries are unused when indices are constant.

In ARM2-EABI-FF-CALL: actually evaluate an expression and store it into a
DOUBLE-FLOAT register before storing that register's contents as an outgoing
arg. What a concept ...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/arm/compiler/ARM/arm2.lisp

    r14071 r14080  
    17451745      (when safe       
    17461746        (when (typep safe 'fixnum)
    1747           (with-node-target (src unscaled-i unscaled-j) expected
    1748             (! lri expected (ash (dpb safe target::arrayH.flags-cell-subtag-byte
    1749                                       (ash 1 $arh_simple_bit))
    1750                                  arm::fixnumshift))
    1751             (! trap-unless-simple-array-2 src expected)))
     1747          (let* ((*available-backend-node-temps* *available-backend-node-temps*))
     1748            (when unscaled-i
     1749              (setq *available-backend-node-temps* (logandc2 *available-backend-node-temps*
     1750                                                             (ash 1 (hard-regspec-value unscaled-i)))))
     1751            (when unscaled-j
     1752              (setq *available-backend-node-temps* (logandc2 *available-backend-node-temps*
     1753                                                             (ash 1 (hard-regspec-value unscaled-j)))))
     1754            (with-node-target (src) expected
     1755              (! lri expected (ash (dpb safe target::arrayH.flags-cell-subtag-byte
     1756                                        (ash 1 $arh_simple_bit))
     1757                                   arm::fixnumshift))
     1758              (! trap-unless-simple-array-2 src expected))))
    17521759        (unless i-known-fixnum
    17531760          (! trap-unless-fixnum unscaled-i))
     
    81588165               (when (oddp next-arg-word)
    81598166                 (incf next-arg-word))
     8167               (arm2-one-targeted-reg-form seg valform df)
    81608168               (! set-double-eabi-c-arg df next-arg-word)
    81618169               (incf next-arg-word 2)))
Note: See TracChangeset for help on using the changeset viewer.