Changeset 6266
- Timestamp:
- Apr 15, 2007, 5:48:30 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/compiler/X86/x862.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/compiler/X86/x862.lisp
r6258 r6266 1661 1661 j ($ x8664::arg_y) 1662 1662 new val-reg)))) 1663 (when safe 1664 (when (typep safe 'fixnum) 1665 (! trap-unless-simple-array-2 1666 src 1667 (dpb safe target::arrayH.flags-cell-subtag-byte 1668 (ash 1 $arh_simple_bit)) 1669 (nx-error-for-simple-2d-array-type type-keyword))) 1670 (unless i-known-fixnum 1671 (! trap-unless-fixnum unscaled-i)) 1672 (unless j-known-fixnum 1673 (! trap-unless-fixnum unscaled-j))) 1674 (with-imm-target () dim1 1675 (let* ((idx-reg ($ x8664::arg_y))) 1676 (if constidx 1677 (if needs-memoization 1678 (x862-lri seg x8664::arg_y (ash constidx *x862-target-fixnum-shift*))) 1679 (progn 1680 (if safe 1681 (! check-2d-bound dim1 unscaled-i unscaled-j src) 1682 (! 2d-dim1 dim1 src)) 1683 (! 2d-unscaled-index idx-reg dim1 unscaled-i unscaled-j))) 1684 (let* ((v ($ x8664::arg_x))) 1685 (! array-data-vector-ref v src) 1686 (x862-vset1 seg vreg xfer type-keyword v idx-reg constidx val-reg (x862-unboxed-reg-for-aset seg type-keyword val-reg safe constval) constval needs-memoization)))))))) 1663 (let* ((*available-backend-imm-temps* *available-backend-imm-temps*)) 1664 (when (and (= (hard-regspec-class val-reg) hard-reg-class-gpr) 1665 (logbitp (hard-regspec-value val-reg) 1666 *backend-imm-temps*)) 1667 (use-imm-temp val-reg)) 1668 (when safe 1669 (when (typep safe 'fixnum) 1670 (! trap-unless-simple-array-2 1671 src 1672 (dpb safe target::arrayH.flags-cell-subtag-byte 1673 (ash 1 $arh_simple_bit)) 1674 (nx-error-for-simple-2d-array-type type-keyword))) 1675 (unless i-known-fixnum 1676 (! trap-unless-fixnum unscaled-i)) 1677 (unless j-known-fixnum 1678 (! trap-unless-fixnum unscaled-j))) 1679 (with-imm-target () dim1 1680 (let* ((idx-reg ($ x8664::arg_y))) 1681 (if constidx 1682 (if needs-memoization 1683 (x862-lri seg x8664::arg_y (ash constidx *x862-target-fixnum-shift*))) 1684 (progn 1685 (if safe 1686 (! check-2d-bound dim1 unscaled-i unscaled-j src) 1687 (! 2d-dim1 dim1 src)) 1688 (! 2d-unscaled-index idx-reg dim1 unscaled-i unscaled-j))) 1689 (let* ((v ($ x8664::arg_x))) 1690 (! array-data-vector-ref v src) 1691 (x862-vset1 seg vreg xfer type-keyword v idx-reg constidx val-reg (x862-unboxed-reg-for-aset seg type-keyword val-reg safe constval) constval needs-memoization))))))))) 1687 1692 1688 1693 … … 1725 1730 (x862-one-untargeted-reg-form seg array ($ x8664::arg_z))) 1726 1731 (x862-four-targeted-reg-forms seg 1727 i ($ x8664::temp0)1728 j ($ x8664::arg_x)1729 k ($ x8664::arg_y)1730 new val-reg)1732 i ($ x8664::temp0) 1733 j ($ x8664::arg_x) 1734 k ($ x8664::arg_y) 1735 new val-reg) 1731 1736 (x862-pop-register seg src))) 1732 (when safe 1733 (when (typep safe 'fixnum) 1734 (! trap-unless-simple-array-3 1735 src 1736 (dpb safe target::arrayH.flags-cell-subtag-byte 1737 (ash 1 $arh_simple_bit)) 1738 (nx-error-for-simple-3d-array-type type-keyword))) 1739 (unless i-known-fixnum 1740 (! trap-unless-fixnum unscaled-i)) 1741 (unless j-known-fixnum 1742 (! trap-unless-fixnum unscaled-j)) 1743 (unless k-known-fixnum 1744 (! trap-unless-fixnum unscaled-k))) 1745 (with-imm-target () dim1 1746 (with-imm-target (dim1) dim2 1747 (let* ((idx-reg ($ x8664::arg_y))) 1748 (if constidx 1749 (when needs-memoization 1750 (x862-lri seg idx-reg (ash constidx *x862-target-fixnum-shift*))) 1751 (progn 1752 (if safe 1753 (! check-3d-bound dim1 dim2 unscaled-i unscaled-j unscaled-k src) 1754 (! 3d-dims dim1 dim2 src)) 1755 (! 3d-unscaled-index idx-reg dim1 dim2 unscaled-i unscaled-j unscaled-k))) 1756 (let* ((v ($ x8664::arg_x))) 1757 (! array-data-vector-ref v src) 1758 (x862-vset1 seg vreg xfer type-keyword v idx-reg constidx val-reg (x862-unboxed-reg-for-aset seg type-keyword val-reg safe constval) constval needs-memoization))))))))) 1737 (let* ((*available-backend-imm-temps* *available-backend-imm-temps*)) 1738 (when (and (= (hard-regspec-class val-reg) hard-reg-class-gpr) 1739 (logbitp (hard-regspec-value val-reg) 1740 *backend-imm-temps*)) 1741 (use-imm-temp val-reg)) 1742 1743 (when safe 1744 (when (typep safe 'fixnum) 1745 (! trap-unless-simple-array-3 1746 src 1747 (dpb safe target::arrayH.flags-cell-subtag-byte 1748 (ash 1 $arh_simple_bit)) 1749 (nx-error-for-simple-3d-array-type type-keyword))) 1750 (unless i-known-fixnum 1751 (! trap-unless-fixnum unscaled-i)) 1752 (unless j-known-fixnum 1753 (! trap-unless-fixnum unscaled-j)) 1754 (unless k-known-fixnum 1755 (! trap-unless-fixnum unscaled-k))) 1756 (with-imm-target () dim1 1757 (with-imm-target (dim1) dim2 1758 (let* ((idx-reg ($ x8664::arg_y))) 1759 (if constidx 1760 (when needs-memoization 1761 (x862-lri seg idx-reg (ash constidx *x862-target-fixnum-shift*))) 1762 (progn 1763 (if safe 1764 (! check-3d-bound dim1 dim2 unscaled-i unscaled-j unscaled-k src) 1765 (! 3d-dims dim1 dim2 src)) 1766 (! 3d-unscaled-index idx-reg dim1 dim2 unscaled-i unscaled-j unscaled-k))) 1767 (let* ((v ($ x8664::arg_x))) 1768 (! array-data-vector-ref v src) 1769 (x862-vset1 seg vreg xfer type-keyword v idx-reg constidx val-reg (x862-unboxed-reg-for-aset seg type-keyword val-reg safe constval) constval needs-memoization)))))))))) 1759 1770 1760 1771
Note:
See TracChangeset
for help on using the changeset viewer.
