Changeset 10561
- Timestamp:
- 08/25/08 00:01:47 (3 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/source/compiler/X86/X8632/x8632-vinsns.lisp
r10542 r10561 1727 1727 ((temp :imm))) 1728 1728 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 1729 (movss (:%xmm arg) (:@ (:apply + 4(:apply ash offset 2)) (:%l temp))))1729 (movss (:%xmm arg) (:@ (:apply + 8 (:apply ash offset 2)) (:%l temp)))) 1730 1730 1731 1731 (define-x8632-vinsn reload-single-c-arg (((arg :single-float)) … … 1733 1733 ((temp :imm))) 1734 1734 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 1735 (movss (:@ (:apply + 4(:apply ash offset 2)) (:%l temp)) (:%xmm arg)))1735 (movss (:@ (:apply + 8 (:apply ash offset 2)) (:%l temp)) (:%xmm arg))) 1736 1736 1737 1737 (define-x8632-vinsn set-double-c-arg (() … … 1740 1740 ((temp :imm))) 1741 1741 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 1742 (movsd (:%xmm arg) (:@ (:apply + 4(:apply ash offset 2)) (:%l temp))))1742 (movsd (:%xmm arg) (:@ (:apply + 8 (:apply ash offset 2)) (:%l temp)))) 1743 1743 1744 1744 (define-x8632-vinsn reload-double-c-arg (((arg :double-float)) … … 1746 1746 ((temp :imm))) 1747 1747 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 1748 (movsd (:@ (:apply + 4(:apply ash offset 2)) (:%l temp)) (:%xmm arg)))1748 (movsd (:@ (:apply + 8 (:apply ash offset 2)) (:%l temp)) (:%xmm arg))) 1749 1749 1750 1750 (define-x8632-subprim-call-vinsn (ff-call) .SPffcall) … … 3074 3074 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 3075 3075 (movd (:%mmx x8632::stack-temp) (:@ (:%l temp))) 3076 (movl (:%l x8632::ebp) (:@ 4 (:%l temp))) 3076 3077 (leal (:@ (+ 8 x8632::fulltag-misc) (:%l temp)) (:%l dest)) 3077 3078 (movl (:$l x8632::macptr-header) (:@ x8632::macptr.header (:%l dest))) … … 3707 3708 ;; align stack to 16-byte boundary 3708 3709 (andb (:$b -16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)) 3709 (subl (:$b x8632::node-size) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))3710 (subl (:$b (* 2 x8632::node-size)) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)) 3710 3711 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 3711 (movd (:%mmx x8632::stack-temp) (:@ (:%l temp)))) 3712 (movd (:%mmx x8632::stack-temp) (:@ (:%l temp))) 3713 (movl (:% x8632::ebp) (:@ 4 (:%l temp)))) 3712 3714 3713 3715 (define-x8632-vinsn alloc-variable-c-frame (() … … 3718 3720 ;; align stack to 16-byte boundary 3719 3721 (andb (:$b -16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)) 3720 (subl (:$b x8632::node-size) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))3722 (subl (:$b (* 2 x8632::node-size)) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)) 3721 3723 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 3722 (movd (:%mmx x8632::stack-temp) (:@ (:%l temp)))) 3724 (movd (:%mmx x8632::stack-temp) (:@ (:%l temp))) 3725 (movl (:% x8632::ebp) (:@ 4 (:%l temp)))) 3723 3726 3724 3727 (define-x8632-vinsn set-c-arg (() … … 3727 3730 ((temp :imm))) 3728 3731 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 3729 (movl (:%l arg) (:@ (:apply + 4(:apply ash offset 2)) (:%l temp))))3732 (movl (:%l arg) (:@ (:apply + 8 (:apply ash offset 2)) (:%l temp)))) 3730 3733 3731 3734 ;;; This is a pretty big crock. … … 3734 3737 ((temp :imm))) 3735 3738 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 3736 (movq (:%mmx x8632::mm0) (:@ (:apply + 4(:apply ash offset 2)) (:%l temp))))3739 (movq (:%mmx x8632::mm0) (:@ (:apply + 8 (:apply ash offset 2)) (:%l temp)))) 3737 3740 3738 3741 (define-x8632-vinsn eep.address (((dest t)) … … 3962 3965 ((temp :imm))) 3963 3966 (movd (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%mmx x8632::stack-temp)) 3964 (subl (:$b 8) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))3967 (subl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)) 3965 3968 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 3966 3969 (movd (:%mmx x8632::stack-temp) (:@ (:%l temp))) 3967 (movl (:%l w) (:@ 4 (:%l temp)))) 3970 (movl (:%l x8632::ebp) (:@ 4 (:%l temp))) 3971 (movl (:%l w) (:@ 8 (:%l temp)))) 3968 3972 3969 3973 (define-x8632-vinsn (temp-pop-unboxed-word :pop :word :csp) … … 3971 3975 ()) 3972 3976 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l w)) 3973 (movl (:@ 4(:%l w)) (:%l w))3974 (addl (:$b 8) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)))3977 (movl (:@ 8 (:%l w)) (:%l w)) 3978 (addl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))) 3975 3979 3976 3980 (define-x8632-vinsn (temp-push-node :push :word :tsp) … … 4002 4006 ((temp :imm))) 4003 4007 (movd (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%mmx x8632::stack-temp)) 4004 (subl (:$b 8) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))4008 (subl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)) 4005 4009 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 4006 4010 (movd (:%mmx x8632::stack-temp) (:@ (:%l temp))) 4007 (movss (:%xmm f) (:@ 4 (:%l temp)))) 4011 (movl (:%l x8632::ebp) (:@ 4 (:%l temp))) 4012 (movss (:%xmm f) (:@ 8 (:%l temp)))) 4008 4013 4009 4014 (define-x8632-vinsn (temp-pop-single-float :pop :word :csp) … … 4012 4017 ((temp :imm))) 4013 4018 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 4014 (movss (:@ 4(:%l temp)) (:%xmm f))4015 (addl (:$b 8) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)))4019 (movss (:@ 8 (:%l temp)) (:%xmm f)) 4020 (addl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))) 4016 4021 4017 4022 (define-x8632-vinsn (temp-push-double-float :push :word :csp) … … 4023 4028 (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp)) 4024 4029 (movd (:%mmx x8632::stack-temp) (:@ (:%l temp))) 4030 (movl (:%l x8632::ebp) (:@ 4 (:%l temp))) 4025 4031 (movsd (:%xmm f) (:@ 8 (:%l temp)))) 4026 4032
