Changeset 13794


Ignore:
Timestamp:
Jun 10, 2010, 4:06:28 AM (9 years ago)
Author:
gb
Message:

Need SINGLE-FLOAT-COMPARE vinsn.
VPUSH-ARGREGS: need to use predecrement (stmdb, not stm) when vpushing
multiple registers.
LRI: try to load u16 constants by mov/orr, not by pc-relative ldr.
TEMP-PUSH-UNBOXED-WORD: need to use :@!.

File:
1 edited

Legend:

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

    r13789 r13794  
    13661366  (fdivd result x y))
    13671367
     1368
     1369(define-arm-vinsn single-float-compare (((crf :crf))
     1370                                        ((arg0 :single-float)
     1371                                         (arg1 :single-float))
     1372                                        ())
     1373  (fcmpes arg0 arg1)
     1374  (fmstat))
     1375
    13681376(define-arm-vinsn single-float+-2 (((result :single-float))
    13691377                                   ((x :single-float)
     
    15201528   (cmp nargs (:$ (ash 2 arm::fixnumshift)))
    15211529   (strlo arg_z (:@! vsp (:$ (- arm::node-size))))
    1522    (stmeq (:! vsp) (arg_z arg_y))
    1523    (stmhi (:! vsp) (arg_z arg_y arg_x))
     1530   (stmdbeq (:! vsp) (arg_z arg_y))
     1531   (stmdbhi (:! vsp) (arg_z arg_y arg_x))
    15241532   :done)
    15251533  ((:pred = num-fixed-args 2)
    15261534   (cmp nargs (:$ (ash 2 arm::fixnumshift)))
    1527    (stmeq (:! vsp) (arg_z arg_y))
    1528    (stmhi (:! vsp) (arg_z arg_y arg_x)))
     1535   (stmdbeq (:! vsp) (arg_z arg_y))
     1536   (stmdbhi (:! vsp) (arg_z arg_y arg_x)))
    15291537  ((:pred > num-fixed-args 2)
    1530    (stm (:! vsp) (arg_z arg_y arg_x))))
     1538   (stmdb (:! vsp) (arg_z arg_y arg_x))))
    15311539
    15321540
     
    17241732    (mvn dest (:$ (:apply lognot intval))))
    17251733   ((:not (:pred arm::encode-arm-immediate (:apply lognot intval)))
    1726     (:data)
    1727     :const
    1728     (:word intval)
    1729     (:code)
    1730     (ldr dest :const))))
     1734    ((:and (:pred >= intval 0)
     1735           (:pred < intval #x10000))
     1736     (mov dest (:$ (:apply logand #xff00 intval)))
     1737     ((:not (:pred = 0 (:apply logand #xff intval)))))
     1738      (orr dest dest (:$ (:apply logand #xff intval)))))
     1739    ((:not (:and (:pred >= intval 0)
     1740                 (:pred < intval #x10000)))
     1741     (:data)
     1742     :const
     1743     (:word intval)
     1744     (:code)
     1745     (ldr dest :const)))
    17311746
    17321747
     
    26682683  (mov header (:$ arm::subtag-u32-vector))
    26692684  (orr header header (:$ (ash 1 arm::num-subtag-bits)))
    2670   (str header (:@ sp (:$ (- arm::dnode-size))))
     2685  (str header (:@! sp (:$ (- arm::dnode-size))))
    26712686  (str w (:@ sp (:$ 4))))
    26722687
     
    28062821  (mov temp2 (:$ 0))
    28072822  (mov imm0 (:$ arm::lisp-frame-marker)) 
    2808   (stmdb (:! sp) (imm0 vsp temp2 lr)))
     2823  (stmdb (:! sp) (imm0 vsp fn lr))
     2824  (str temp2 (:@ sp (:$ arm::lisp-frame.savefn))))
     2825
    28092826
    28102827
Note: See TracChangeset for help on using the changeset viewer.