- Timestamp:
- Apr 18, 2007, 4:27:17 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/x8664-call/ccl/compiler/X86/X8664/x8664-vinsns.lisp
r6293 r6300 277 277 278 278 (define-x8664-vinsn (call-known-symbol :call) (((result (:lisp x8664::arg_z))) 279 ()) 279 () 280 ((entry (:label 1)))) 280 281 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 281 282 (movq (:@ x8664::symbol.fcell (:% x8664::fname)) (:%q x8664::fn)) … … 284 285 (:long (:^ :back)) 285 286 :back 286 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 287 :disp) 287 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 288 288 289 289 ;;; It's neccessary to use x8664:xfn to reference the current function … … 992 992 993 993 (define-x8664-vinsn (call-subprim :call) (() 994 ((spno :s32const))) 994 ((spno :s32const)) 995 ((entry (:label 1)))) 995 996 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 996 997 (jmp (:@ spno)) … … 998 999 (:long (:^ :back)) 999 1000 :back 1000 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1001 :disp 1002 ) 1001 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 1003 1002 1004 1003 (define-x8664-vinsn fixnum-subtract-from (((dest t) … … 1143 1142 ((val :lisp)) 1144 1143 ((unboxed (:s64 #.x8664::imm1)) 1145 (header (:u64 #.x8664::imm0)))) 1144 (header (:u64 #.x8664::imm0)) 1145 (entry (:label 1)))) 1146 1146 (jno.pt :done) 1147 1147 ((:not (:pred = x8664::arg_z … … 1153 1153 (:long (:^ :back)) 1154 1154 :back 1155 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1156 :disp 1155 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)) 1157 1156 ((:not (:pred = x8664::arg_z 1158 1157 (:apply %hard-regspec-value val))) … … 1165 1164 (lab :label)) 1166 1165 ((unboxed (:s64 #.x8664::imm1)) 1167 (header (:u64 #.x8664::imm0)))) 1166 (header (:u64 #.x8664::imm0)) 1167 (entry (:label 1)))) 1168 1168 (jno.pt lab) 1169 1169 ((:not (:pred = x8664::arg_z … … 1175 1175 (:long (:^ :back)) 1176 1176 :back 1177 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1178 :disp 1177 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)) 1179 1178 ((:not (:pred = x8664::arg_z 1180 1179 (:apply %hard-regspec-value val))) … … 1296 1295 1297 1296 (define-x8664-vinsn (call-label :call) (() 1298 ((label :label))) 1297 ((label :label)) 1298 ((entry (:label 1)))) 1299 1299 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 1300 1300 (jmp label) … … 1302 1302 (:long (:^ :back)) 1303 1303 :back 1304 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1305 :disp 1306 ) 1304 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 1307 1305 1308 1306 (define-x8664-vinsn double-float-compare (() … … 1592 1590 1593 1591 (define-x8664-vinsn (call-known-function :call) (() 1594 ()) 1592 () 1593 ((entry (:label 1)))) 1595 1594 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 1596 1595 (movq (:%q x8664::temp0) (:%q x8664::fn)) … … 1599 1598 (:long (:^ :back)) 1600 1599 :back 1601 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1602 :disp 1603 ) 1600 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 1604 1601 1605 1602 (define-x8664-vinsn (jump-known-function :jumplr) (() … … 1610 1607 1611 1608 (define-x8664-vinsn (list :call) (() 1612 ()) 1609 () 1610 ((entry (:label 1)))) 1613 1611 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 1614 1612 (jmp (:@ .SPconslist)) … … 1616 1614 (:long (:^ :back)) 1617 1615 :back 1618 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1619 :disp ) 1616 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 1620 1617 1621 1618 … … 1689 1686 1690 1687 (defmacro define-x8664-subprim-call-vinsn ((name &rest other-attrs) spno) 1691 `(define-x8664-vinsn (,name :call :subprim-call ,@other-attrs) (() () )1688 `(define-x8664-vinsn (,name :call :subprim-call ,@other-attrs) (() () ((entry (:label 1)))) 1692 1689 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 1693 1690 (jmp (:@ ,spno)) … … 1695 1692 (:long (:^ :back)) 1696 1693 :back 1697 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1698 :disp)) 1694 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))) 1699 1695 1700 1696 (defmacro define-x8664-subprim-jump-vinsn ((name &rest other-attrs) spno) … … 1779 1775 1780 1776 (define-x8664-vinsn (mkcatchmv :call :subprim-call) (() 1781 ((lab :label))) 1777 ((lab :label)) 1778 ((entry (:label 1)))) 1782 1779 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 1783 1780 (leaq (:@ (:^ lab) (:%q x8664::fn)) (:%q x8664::xfn)) … … 1786 1783 (:long (:^ :back)) 1787 1784 :back 1788 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1789 :disp ) 1785 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 1790 1786 1791 1787 (define-x8664-vinsn (mkcatch1v :call :subprim-call) (() 1792 ((lab :label))) 1788 ((lab :label)) 1789 ((entry (:label 1)))) 1793 1790 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 1794 1791 (leaq (:@ (:^ lab) (:%q x8664::fn)) (:%q x8664::xfn)) … … 1797 1794 (:long (:^ :back)) 1798 1795 :back 1799 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1800 :disp) 1796 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 1801 1797 1802 1798 (define-x8664-vinsn (mkunwind :call :subprim-call) (() … … 1816 1812 (define-x8664-vinsn funcall (() 1817 1813 () 1818 ((tag :u8))) 1814 ((tag :u8) 1815 (entry (:label 1)))) 1819 1816 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 1820 1817 (movb (:%b x8664::temp0) (:%b tag)) … … 1830 1827 (:long (:^ :back)) 1831 1828 :back 1832 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1833 :disp) 1829 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 1834 1830 1835 1831 (define-x8664-vinsn tail-funcall (() … … 1866 1862 (define-x8664-vinsn (ref-symbol-value :call :subprim-call) 1867 1863 (((val :lisp)) 1868 ((sym (:lisp (:ne val))))) 1864 ((sym (:lisp (:ne val)))) 1865 ((entry (:label 1)))) 1869 1866 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 1870 1867 (jmp (:@ .SPspecrefcheck)) … … 1872 1869 (:long (:^ :back)) 1873 1870 :back 1874 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1875 :disp ) 1871 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)) ) 1876 1872 1877 1873 (define-x8664-vinsn ref-symbol-value-inline (((dest :lisp)) … … 1897 1893 (define-x8664-vinsn (%ref-symbol-value :call :subprim-call) 1898 1894 (((val :lisp)) 1899 ((sym (:lisp (:ne val))))) 1895 ((sym (:lisp (:ne val)))) 1896 ((entry (:label 1)))) 1900 1897 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 1901 1898 (jmp (:@ .SPspecref)) … … 1903 1900 (:long (:^ :back)) 1904 1901 :back 1905 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1906 :disp ) 1902 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 1907 1903 1908 1904 (define-x8664-vinsn %ref-symbol-value-inline (((dest :lisp)) … … 2976 2972 (x t) 2977 2973 (y t) 2978 (z t))) 2974 (z t)) 2975 ((entry (:label 1)))) 2979 2976 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 2980 2977 (jmp (:@ spno)) … … 2982 2979 (:long (:^ :back)) 2983 2980 :back 2984 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 2985 :disp) 2981 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 2986 2982 2987 2983 (define-x8664-vinsn setup-vcell-allocation (() … … 3199 3195 (() 3200 3196 ((sym :lisp) 3201 (val :lisp))) 3197 (val :lisp)) 3198 ((entry (:label 1)))) 3202 3199 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 3203 3200 (jmp (:@ .SPspecset)) … … 3205 3202 (:long (:^ :back)) 3206 3203 :back 3207 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 3208 :disp) 3204 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 3209 3205 3210 3206 (define-x8664-vinsn set-z-flag-if-istruct-typep (() … … 3280 3276 ((spno :s32const) 3281 3277 (y t) 3282 (z t))) 3278 (z t)) 3279 ((entry (:label 1)))) 3283 3280 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 3284 3281 (jmp (:@ spno)) … … 3286 3283 (:long (:^ :back)) 3287 3284 :back 3288 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 3289 :disp) 3285 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 3290 3286 3291 3287 (define-x8664-vinsn set-macptr-address (() … … 3348 3344 ;;; transfer & jump ...) 3349 3345 (define-x8664-vinsn (throw :jump :jump-unknown) (() 3350 ()) 3346 () 3347 ((entry (:label 1)))) 3351 3348 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) 3352 3349 (jmp (:@ .SPthrow)) … … 3354 3351 (:long (:^ :back)) 3355 3352 :back 3356 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 3357 :disp ) 3353 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn))) 3358 3354 3359 3355 … … 3566 3562 (define-x8664-vinsn (dpayback :call :subprim-call) (() 3567 3563 ((n :s16const)) 3568 ((temp (:u32 #.x8664::imm0)))) 3564 ((temp (:u32 #.x8664::imm0)) 3565 (entry (:label 1)))) 3569 3566 ((:pred > n 0) 3570 3567 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) … … 3577 3574 (:long (:^ :back)) 3578 3575 :back 3579 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 3580 :disp)) 3576 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))) 3581 3577 3582 3578 (define-x8664-subprim-jump-vinsn (tail-call-sym-gen) .SPtcallsymgen)
Note:
See TracChangeset
for help on using the changeset viewer.
