Changeset 4959
- Timestamp:
- Aug 18, 2006, 8:44:08 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/compiler/X86/X8664/x8664-vinsns.lisp (modified) (25 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/compiler/X86/X8664/x8664-vinsns.lisp
r4817 r4959 773 773 ((car :lisp) 774 774 (cdr :lisp))) 775 (subq (:$b (- x8664::cons.size x8664::fulltag-cons)) (:@ (:%seg x8664::rcontext) x8664::tcr.save-allocptr))776 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.save-allocptr) (:%q x8664::allocptr))777 (rcmpq (:%q x8664::allocptr) (:@ (:%seg x8664::rcontext) x8664::tcr.save-allocbase))775 (subq (:$b (- x8664::cons.size x8664::fulltag-cons)) (:@ (:%seg :rcontext) x8664::tcr.save-allocptr)) 776 (movq (:@ (:%seg :rcontext) x8664::tcr.save-allocptr) (:%q x8664::allocptr)) 777 (rcmpq (:%q x8664::allocptr) (:@ (:%seg :rcontext) x8664::tcr.save-allocbase)) 778 778 (jg :no-trap) 779 779 (uuo-alloc) 780 780 :no-trap 781 (andb (:$b (lognot x8664::fulltagmask)) (:@ (:%seg x8664::rcontext) x8664::tcr.save-allocptr))781 (andb (:$b (lognot x8664::fulltagmask)) (:@ (:%seg :rcontext) x8664::tcr.save-allocptr)) 782 782 (movq (:%q car) (:@ x8664::cons.car (:%q x8664::allocptr))) 783 783 (movq (:%q cdr) (:@ x8664::cons.cdr (:%q x8664::allocptr))) … … 1036 1036 ((header (:u64 #.x8664::imm0)) 1037 1037 (freeptr (:lisp #.x8664::allocptr)))) 1038 (subq (:%q x8664::imm1) (:@ (:%seg x8664::rcontext) x8664::tcr.save-allocptr))1039 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.save-allocptr) (:%q freeptr))1040 (rcmpq (:%q freeptr) (:@ (:%seg x8664::rcontext) x8664::tcr.save-allocbase))1038 (subq (:%q x8664::imm1) (:@ (:%seg :rcontext) x8664::tcr.save-allocptr)) 1039 (movq (:@ (:%seg :rcontext) x8664::tcr.save-allocptr) (:%q freeptr)) 1040 (rcmpq (:%q freeptr) (:@ (:%seg :rcontext) x8664::tcr.save-allocbase)) 1041 1041 (jg :no-trap) 1042 1042 (uuo-alloc) 1043 1043 :no-trap 1044 1044 (movq (:%q header) (:@ x8664::misc-header-offset (:%q freeptr))) 1045 (andb (:$b (lognot x8664::fulltagmask)) (:@ (:%seg x8664::rcontext) x8664::tcr.save-allocptr))1045 (andb (:$b (lognot x8664::fulltagmask)) (:@ (:%seg :rcontext) x8664::tcr.save-allocptr)) 1046 1046 ((:not (:pred = freeptr 1047 1047 (:apply %hard-regspec-value dest))) … … 1532 1532 ((car :lisp) (cdr :lisp)) 1533 1533 ((temp :imm))) 1534 (subq (:$b (+ x8664::cons.size x8664::dnode-size)) (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp))1535 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp) (:%q temp))1534 (subq (:$b (+ x8664::cons.size x8664::dnode-size)) (:@ (:%seg :rcontext) x8664::tcr.next-tsp)) 1535 (movq (:@ (:%seg :rcontext) x8664::tcr.next-tsp) (:%q temp)) 1536 1536 (movapd (:%xmm x8664::fpzero) (:@ (:%q temp))) 1537 1537 (movapd (:%xmm x8664::fpzero) (:@ 16 (:%q temp))) 1538 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp) (:%mmx x8664::stack-temp))1538 (movq (:@ (:%seg :rcontext) x8664::tcr.save-tsp) (:%mmx x8664::stack-temp)) 1539 1539 (movq (:%mmx x8664::stack-temp) (:@ (:%q temp))) 1540 (movq (:%q temp) (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp))1540 (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.save-tsp)) 1541 1541 (leaq (:@ (+ x8664::dnode-size x8664::fulltag-cons) (:%q temp)) (:%q temp)) 1542 1542 (movq (:%q car) (:@ x8664::cons.car (:%q temp))) … … 1552 1552 (:pred <= (:apply + aligned-size x8664::dnode-size) 127)) 1553 1553 (subq (:$b (:apply + aligned-size x8664::dnode-size)) 1554 (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp)))1554 (:@ (:%seg :rcontext) x8664::tcr.next-tsp))) 1555 1555 ((:not (:and (:pred >= (:apply + aligned-size x8664::dnode-size) -128) 1556 1556 (:pred <= (:apply + aligned-size x8664::dnode-size) 127))) 1557 1557 (subq (:$l (:apply + aligned-size x8664::dnode-size)) 1558 (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp)))1559 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp) (:%q tempb))1560 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp) (:%q tempa))1558 (:@ (:%seg :rcontext) x8664::tcr.next-tsp))) 1559 (movq (:@ (:%seg :rcontext) x8664::tcr.save-tsp) (:%q tempb)) 1560 (movq (:@ (:%seg :rcontext) x8664::tcr.next-tsp) (:%q tempa)) 1561 1561 (movd (:%q tempb) (:%mmx x8664::stack-temp)) 1562 1562 :loop … … 1566 1566 (jnz :loop) 1567 1567 (movq (:%mmx x8664::stack-temp) (:@ (:%q tempa))) 1568 (movq (:%q tempa) (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp))1568 (movq (:%q tempa) (:@ (:%seg :rcontext) x8664::tcr.save-tsp)) 1569 1569 (movl (:$l header) (:@ x8664::dnode-size (:%q tempa))) 1570 1570 (leaq (:@ (+ x8664::dnode-size x8664::fulltag-misc) (:%q tempa)) (:%q dest))) … … 1574 1574 () 1575 1575 ((temp :imm))) 1576 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp) (:%q temp))1576 (movq (:@ (:%seg :rcontext) x8664::tcr.save-tsp) (:%q temp)) 1577 1577 (movq (:@ (:%q temp)) (:%q temp)) 1578 (movq (:%q temp) (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp))1579 (movq (:%q temp) (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp))1578 (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.save-tsp)) 1579 (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.next-tsp)) 1580 1580 ) 1581 1581 … … 1583 1583 () 1584 1584 ((temp :imm))) 1585 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q temp))1585 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q temp)) 1586 1586 (movq (:@ (:%q temp)) (:%q temp)) 1587 (movq (:%q temp) (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp)))1587 (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))) 1588 1588 1589 1589 … … 1732 1732 (idx :imm))) 1733 1733 (movq (:@ x8664::symbol.binding-index (:%q src)) (:%q idx)) 1734 (rcmpq (:%q idx) (:@ (:%seg x8664::rcontext) x8664::tcr.tlb-limit))1735 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.tlb-pointer) (:%q table))1734 (rcmpq (:%q idx) (:@ (:%seg :rcontext) x8664::tcr.tlb-limit)) 1735 (movq (:@ (:%seg :rcontext) x8664::tcr.tlb-pointer) (:%q table)) 1736 1736 (jae :symbol) 1737 1737 (movq (:@ (:%q table) (:%q idx)) (:%q dest)) … … 1761 1761 (idx :imm))) 1762 1762 (movq (:@ x8664::symbol.binding-index (:%q src)) (:%q idx)) 1763 (rcmpq (:%q idx) (:@ (:%seg x8664::rcontext) x8664::tcr.tlb-limit))1764 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.tlb-pointer) (:%q table))1763 (rcmpq (:%q idx) (:@ (:%seg :rcontext) x8664::tcr.tlb-limit)) 1764 (movq (:@ (:%seg :rcontext) x8664::tcr.tlb-pointer) (:%q table)) 1765 1765 (jae :symbol) 1766 1766 (movq (:@ (:%q table) (:%q idx)) (:%q dest)) … … 1774 1774 () 1775 1775 ((temp :u64))) 1776 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.tlb-pointer) (:%q temp))1776 (movq (:@ (:%seg :rcontext) x8664::tcr.tlb-pointer) (:%q temp)) 1777 1777 (movq (:@ x8664::INTERRUPT-LEVEL-BINDING-INDEX (:%q temp)) (:%q dest))) 1778 1778 … … 1834 1834 (() 1835 1835 ((w :u64))) 1836 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))1837 (subq (:$b 16) (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp))1838 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))1836 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp)) 1837 (subq (:$b 16) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp)) 1838 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 1839 1839 (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0))) 1840 1840 (movq (:%q w) (:@ 8 (:%q x8664::ra0)))) … … 1845 1845 ((w :lisp)) 1846 1846 ((temp :imm))) 1847 (subq (:$b (* 2 x8664::dnode-size)) (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp))1848 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp) (:%mmx x8664::stack-temp))1849 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp) (:%q temp))1847 (subq (:$b (* 2 x8664::dnode-size)) (:@ (:%seg :rcontext) x8664::tcr.next-tsp)) 1848 (movq (:@ (:%seg :rcontext) x8664::tcr.save-tsp) (:%mmx x8664::stack-temp)) 1849 (movq (:@ (:%seg :rcontext) x8664::tcr.next-tsp) (:%q temp)) 1850 1850 (movapd (:%xmm x8664::fpzero) (:@ (:%q temp))) 1851 1851 (movapd (:%xmm x8664::fpzero) (:@ 16 (:%q temp))) 1852 1852 (movq (:%mmx x8664::stack-temp) (:@ (:%q temp))) 1853 (movq (:%q temp) (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp))1853 (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.save-tsp)) 1854 1854 (movq (:%q w) (:@ x8664::dnode-size (:%q temp)))) 1855 1855 … … 1857 1857 (() 1858 1858 ((f :double-float))) 1859 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))1860 (subq (:$b 16) (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp))1861 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))1859 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp)) 1860 (subq (:$b 16) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp)) 1861 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 1862 1862 (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0))) 1863 1863 (movsd (:%xmm f) (:@ 8 (:%q x8664::ra0)))) … … 1879 1879 (((w :u64)) 1880 1880 ()) 1881 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))1881 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 1882 1882 (movq (:@ 8 (:%q x8664::ra0)) (:%q w)) 1883 (addq (:$b 16) (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp)))1883 (addq (:$b 16) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))) 1884 1884 1885 1885 … … 1888 1888 () 1889 1889 ((temp :imm))) 1890 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp) (:%q temp))1890 (movq (:@ (:%seg :rcontext) x8664::tcr.save-tsp) (:%q temp)) 1891 1891 (movq (:@ x8664::dnode-size (:%q temp)) (:%q w)) 1892 1892 (movq (:@ (:%q temp)) (:%q temp)) 1893 (movq (:%q temp) (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp))1894 (movq (:%q temp) (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp)))1893 (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.save-tsp)) 1894 (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.next-tsp))) 1895 1895 1896 1896 (define-x8664-vinsn (temp-pop-double-float :pop :word :csp) 1897 1897 (((f :double-float)) 1898 1898 ()) 1899 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))1899 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 1900 1900 (movsd (:@ 8 (:%q x8664::ra0)) (:%xmm f)) 1901 (addq (:$b 16) (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp)))1901 (addq (:$b 16) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))) 1902 1902 1903 1903 … … 1905 1905 (define-x8664-vinsn macptr->stack (((dest :lisp)) 1906 1906 ((ptr :address))) 1907 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))1908 (subq (:$b (+ 16 x8664::macptr.size)) (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp))1909 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))1907 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp)) 1908 (subq (:$b (+ 16 x8664::macptr.size)) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp)) 1909 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 1910 1910 (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0))) 1911 1911 (leaq (:@ (+ 16 x8664::fulltag-misc) (:%q x8664::ra0)) (:%q dest)) … … 2880 2880 (define-x8664-vinsn %current-tcr (((dest :lisp)) 2881 2881 ()) 2882 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.linear) (:%q dest)))2882 (movq (:@ (:%seg :rcontext) x8664::tcr.linear) (:%q dest))) 2883 2883 2884 2884 (define-x8664-vinsn (setq-special :call :subprim-call) … … 3133 3133 (define-x8664-vinsn alloc-c-frame (() 3134 3134 ((nbytes :u32const))) 3135 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))3135 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp)) 3136 3136 ((:pred < nbytes 128) 3137 (subq (:$b nbytes) (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp)))3137 (subq (:$b nbytes) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))) 3138 3138 ((:not (:pred < nbytes 128)) 3139 (subq (:$l nbytes) (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp)))3140 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))3139 (subq (:$l nbytes) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))) 3140 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 3141 3141 (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))) 3142 3142 … … 3147 3147 (andb (:$b (lognot x8664::fulltagmask)) (:%b size)) 3148 3148 3149 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))3150 (subq (:%q size) (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp))3151 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))3149 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp)) 3150 (subq (:%q size) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp)) 3151 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 3152 3152 (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))) 3153 3153 … … 3155 3155 ((arg :u64) 3156 3156 (offset :u32const))) 3157 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))3157 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 3158 3158 (movq (:%q arg) (:@ (:apply + 16 (:apply ash offset 3)) (:%q x8664::ra0)))) 3159 3159 … … 3161 3161 ((arg :single-float) 3162 3162 (offset :u32const))) 3163 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))3163 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 3164 3164 (movss (:%xmm arg) (:@ (:apply + 16 (:apply ash offset 3)) (:%q x8664::ra0)))) 3165 3165 3166 3166 (define-x8664-vinsn reload-single-c-arg (((arg :single-float)) 3167 3167 ((offset :u32const))) 3168 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))3168 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 3169 3169 (movss (:@ (:apply + 16 (:apply ash offset 3)) (:%q x8664::ra0)) (:%xmm arg))) 3170 3170 … … 3172 3172 ((arg :double-float) 3173 3173 (offset :u32const))) 3174 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))3174 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 3175 3175 (movsd (:%xmm arg) (:@ (:apply + 16 (:apply ash offset 3)) (:%q x8664::ra0)))) 3176 3176 3177 3177 (define-x8664-vinsn reload-double-c-arg (((arg :double-float)) 3178 3178 ((offset :u32const))) 3179 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))3179 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0)) 3180 3180 (movsd (:@ (:apply + 16 (:apply ash offset 3)) (:%q x8664::ra0)) (:%xmm arg))) 3181 3181 … … 3201 3201 ((closed :lisp)) 3202 3202 ((temp :imm))) 3203 (subq (:$b (+ x8664::value-cell.size x8664::dnode-size)) (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp))3204 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp) (:%mmx x8664::stack-temp))3205 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.next-tsp) (:%q temp))3203 (subq (:$b (+ x8664::value-cell.size x8664::dnode-size)) (:@ (:%seg :rcontext) x8664::tcr.next-tsp)) 3204 (movq (:@ (:%seg :rcontext) x8664::tcr.save-tsp) (:%mmx x8664::stack-temp)) 3205 (movq (:@ (:%seg :rcontext) x8664::tcr.next-tsp) (:%q temp)) 3206 3206 (movapd (:%xmm x8664::fpzero) (:@ (:%q temp))) 3207 3207 (movapd (:%xmm x8664::fpzero) (:@ x8664::dnode-size (:%q temp))) 3208 3208 (movq (:%mmx x8664::stack-temp) (:@ (:%q temp))) 3209 (movq (:%q temp) (:@ (:%seg x8664::rcontext) x8664::tcr.save-tsp))3209 (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.save-tsp)) 3210 3210 (movq (:$l x8664::value-cell-header) (:@ x8664::dnode-size (:%q temp))) 3211 3211 (movq (:%q closed) (:@ (+ x8664::dnode-size x8664::node-size) (:%q temp))) … … 3277 3277 (define-x8664-vinsn %foreign-stack-pointer (((dest :imm)) 3278 3278 ()) 3279 (movq (:@ (:%seg x8664::rcontext) x8664::tcr.foreign-sp) (:%q dest)))3279 (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q dest))) 3280 3280 3281 3281 … … 3708 3708 (define-x8664-vinsn event-poll (() 3709 3709 ()) 3710 (btrq (:$ub 63) (:@ (:%seg x8664::rcontext) x8664::tcr.interrupt-pending))3710 (btrq (:$ub 63) (:@ (:%seg :rcontext) x8664::tcr.interrupt-pending)) 3711 3711 (jae :no-interrupt) 3712 3712 (ud2a)
Note:
See TracChangeset
for help on using the changeset viewer.
