Changeset 6287


Ignore:
Timestamp:
Apr 18, 2007, 2:02:46 AM (15 years ago)
Author:
gb
Message:

Actually remember to check in the PPC version of recent aset2/aset3
register-conflict changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/PPC/ppc2.lisp

    r6258 r6287  
    15821582                                            j ($ ppc::arg_y)
    15831583                                            new val-reg))))
    1584         (when safe     
    1585           (when (typep safe 'fixnum)
    1586             (! trap-unless-simple-array-2
    1587                src
    1588                (dpb safe target::arrayH.flags-cell-subtag-byte
    1589                     (ash 1 $arh_simple_bit))
    1590                (nx-error-for-simple-2d-array-type type-keyword)))
    1591           (unless i-known-fixnum
    1592             (! trap-unless-fixnum unscaled-i))
    1593           (unless j-known-fixnum
    1594             (! trap-unless-fixnum unscaled-j)))
    1595         (with-imm-target () dim1
    1596           (let* ((idx-reg ($ ppc::arg_y)))
    1597             (unless constidx
    1598               (if safe                 
    1599                 (! check-2d-bound dim1 unscaled-i unscaled-j src)
    1600                 (! 2d-dim1 dim1 src))
    1601               (! 2d-unscaled-index idx-reg dim1 unscaled-i unscaled-j))
    1602             (let* ((v ($ ppc::arg_x)))
    1603               (! array-data-vector-ref v src)
    1604               (ppc2-vset1 seg vreg xfer type-keyword v idx-reg constidx val-reg (ppc2-unboxed-reg-for-aset seg type-keyword val-reg safe constval) constval needs-memoization))))))))
     1584        (let* ((*available-backend-imm-temps* *available-backend-imm-temps*))
     1585          (when (and (= (hard-regspec-class val-reg) hard-reg-class-gpr)
     1586                     (logbitp (hard-regspec-value val-reg)
     1587                              *backend-imm-temps*))
     1588            (use-imm-temp (hard-regspec-value val-reg)))
     1589          (when safe     
     1590            (when (typep safe 'fixnum)
     1591              (! trap-unless-simple-array-2
     1592                 src
     1593                 (dpb safe target::arrayH.flags-cell-subtag-byte
     1594                      (ash 1 $arh_simple_bit))
     1595                 (nx-error-for-simple-2d-array-type type-keyword)))
     1596            (unless i-known-fixnum
     1597              (! trap-unless-fixnum unscaled-i))
     1598            (unless j-known-fixnum
     1599              (! trap-unless-fixnum unscaled-j)))
     1600          (with-imm-target () dim1
     1601            (let* ((idx-reg ($ ppc::arg_y)))
     1602              (unless constidx
     1603                (if safe                 
     1604                  (! check-2d-bound dim1 unscaled-i unscaled-j src)
     1605                  (! 2d-dim1 dim1 src))
     1606                (! 2d-unscaled-index idx-reg dim1 unscaled-i unscaled-j))
     1607              (let* ((v ($ ppc::arg_x)))
     1608                (! array-data-vector-ref v src)
     1609                (ppc2-vset1 seg vreg xfer type-keyword v idx-reg constidx val-reg (ppc2-unboxed-reg-for-aset seg type-keyword val-reg safe constval) constval needs-memoization)))))))))
    16051610
    16061611
     
    16431648             (ppc2-one-untargeted-reg-form seg array ($ ppc::arg_z)))
    16441649            (ppc2-four-targeted-reg-forms seg
    1645                                             i ($ ppc::temp0)
    1646                                             j ($ ppc::arg_x)
    1647                                             k ($ ppc::arg_y)
    1648                                             new val-reg)
     1650                                          i ($ ppc::temp0)
     1651                                          j ($ ppc::arg_x)
     1652                                          k ($ ppc::arg_y)
     1653                                          new val-reg)
    16491654            (ppc2-pop-register seg src)))
    1650         (when safe     
    1651           (when (typep safe 'fixnum)
    1652             (! trap-unless-simple-array-3
    1653                src
    1654                (dpb safe target::arrayH.flags-cell-subtag-byte
    1655                     (ash 1 $arh_simple_bit))
    1656                (nx-error-for-simple-3d-array-type type-keyword)))
    1657           (unless i-known-fixnum
    1658             (! trap-unless-fixnum unscaled-i))
    1659           (unless j-known-fixnum
    1660             (! trap-unless-fixnum unscaled-j))
    1661           (unless k-known-fixnum
    1662             (! trap-unless-fixnum unscaled-k)))
    1663         (with-imm-target () dim1
    1664           (with-imm-target (dim1) dim2
    1665             (let* ((idx-reg ($ ppc::arg_y)))
    1666               (unless constidx
    1667                 (if safe                 
    1668                   (! check-3d-bound dim1 dim2 unscaled-i unscaled-j unscaled-k src)
    1669                   (! 3d-dims dim1 dim2 src))
    1670                 (! 3d-unscaled-index idx-reg dim1 dim2 unscaled-i unscaled-j unscaled-k))
    1671               (let* ((v ($ ppc::arg_x)))
    1672                 (! array-data-vector-ref v src)
    1673                 (ppc2-vset1 seg vreg xfer type-keyword v idx-reg constidx val-reg (ppc2-unboxed-reg-for-aset seg type-keyword val-reg safe constval) constval needs-memoization)))))))))
     1655        (let* ((*available-backend-imm-temps* *available-backend-imm-temps*))
     1656          (when (and (= (hard-regspec-class val-reg) hard-reg-class-gpr)
     1657                     (logbitp (hard-regspec-value val-reg)
     1658                              *backend-imm-temps*))
     1659            (use-imm-temp (hard-regspec-value val-reg)))
     1660
     1661          (when safe     
     1662            (when (typep safe 'fixnum)
     1663              (! trap-unless-simple-array-3
     1664                 src
     1665                 (dpb safe target::arrayH.flags-cell-subtag-byte
     1666                      (ash 1 $arh_simple_bit))
     1667                 (nx-error-for-simple-3d-array-type type-keyword)))
     1668            (unless i-known-fixnum
     1669              (! trap-unless-fixnum unscaled-i))
     1670            (unless j-known-fixnum
     1671              (! trap-unless-fixnum unscaled-j))
     1672            (unless k-known-fixnum
     1673              (! trap-unless-fixnum unscaled-k)))
     1674          (with-imm-target () dim1
     1675            (with-imm-target (dim1) dim2
     1676              (let* ((idx-reg ($ ppc::arg_y)))
     1677                (unless constidx
     1678                  (if safe                 
     1679                    (! check-3d-bound dim1 dim2 unscaled-i unscaled-j unscaled-k src)
     1680                    (! 3d-dims dim1 dim2 src))
     1681                  (! 3d-unscaled-index idx-reg dim1 dim2 unscaled-i unscaled-j unscaled-k))
     1682                (let* ((v ($ ppc::arg_x)))
     1683                  (! array-data-vector-ref v src)
     1684                  (ppc2-vset1 seg vreg xfer type-keyword v idx-reg constidx val-reg (ppc2-unboxed-reg-for-aset seg type-keyword val-reg safe constval) constval needs-memoization))))))))))
    16741685
    16751686(defun ppc2-aref2 (seg vreg xfer array i j safe typekeyword &optional dim0 dim1)
Note: See TracChangeset for help on using the changeset viewer.