[Openmcl-cvs-notifications] r15114 - /trunk/source/compiler/X86/X8664/x8664-vinsns.lisp
rme at clozure.com
rme at clozure.com
Tue Dec 6 12:21:40 CST 2011
Author: rme
Date: Tue Dec 6 12:21:40 2011
New Revision: 15114
Log:
In the following vinsns, don't use x8664::stack-temp (which is
an MMX register), and list all temporaries explicitly:
make-tsp-cons, make-fixed-stack-gvector, temp-push-unboxed-word,
temp-push-node, temp-push-double-float, macptr->stack,
alloc-c-frame, alloc-variable-c-frame, make-tsp-vcell
Modified:
trunk/source/compiler/X86/X8664/x8664-vinsns.lisp
Modified: trunk/source/compiler/X86/X8664/x8664-vinsns.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/X86/X8664/x8664-vinsns.lisp (original)
+++ trunk/source/compiler/X86/X8664/x8664-vinsns.lisp Tue Dec 6 12:21:40 2=
011
@@ -1836,13 +1836,14 @@
=
(define-x8664-vinsn make-tsp-cons (((dest :lisp))
((car :lisp) (cdr :lisp))
- ((temp :imm)))
+ ((temp :imm)
+ (stack-temp :imm)))
(subq (:$b (+ x8664::cons.size x8664::dnode-size)) (:rcontext x8664::tcr=
.next-tsp))
(movq (:rcontext x8664::tcr.next-tsp) (:%q temp))
(movapd (:%xmm x8664::fpzero) (:@ (:%q temp)))
(movapd (:%xmm x8664::fpzero) (:@ 16 (:%q temp)))
- (movq (:rcontext x8664::tcr.save-tsp) (:%mmx x8664::stack-temp))
- (movq (:%mmx x8664::stack-temp) (:@ (:%q temp)))
+ (movq (:rcontext x8664::tcr.save-tsp) (:%q stack-temp))
+ (movq (:%q stack-temp) (:@ (:%q temp)))
(movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q temp)))
(movq (:%q temp) (:rcontext x8664::tcr.save-tsp))
(leaq (:@ (+ x8664::dnode-size x8664::fulltag-cons) (:%q temp)) (:%q tem=
p))
@@ -1854,7 +1855,8 @@
((aligned-size :u32const)
(header :s32const))
((tempa :imm)
- (tempb :imm)))
+ (tempb :imm)
+ (stack-temp :imm)))
((:and (:pred >=3D (:apply + aligned-size x8664::dnode-size) -128)
(:pred <=3D (:apply + aligned-size x8664::dnode-size) 127))
(subq (:$b (:apply + aligned-size x8664::dnode-size))
@@ -1865,13 +1867,13 @@
(:rcontext x8664::tcr.next-tsp)))
(movq (:rcontext x8664::tcr.save-tsp) (:%q tempb))
(movq (:rcontext x8664::tcr.next-tsp) (:%q tempa))
- (movd (:%q tempb) (:%mmx x8664::stack-temp))
+ (movq (:%q tempb) (:%q stack-temp))
:loop
(movapd (:%xmm x8664::fpzero) (:@ -16 (:%q tempb)))
(subq (:$b x8664::dnode-size) (:%q tempb))
(cmpq (:%q tempa) (:%q tempb))
(jnz :loop)
- (movq (:%mmx x8664::stack-temp) (:@ (:%q tempa)))
+ (movq (:%q stack-temp) (:@ (:%q tempa)))
(movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q tempa)))
(movq (:%q tempa) (:rcontext x8664::tcr.save-tsp))
(movl (:$l header) (:@ x8664::dnode-size (:%q tempa)))
@@ -2237,38 +2239,43 @@
=
(define-x8664-vinsn (temp-push-unboxed-word :push :word :csp)
(()
- ((w :u64)))
- (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp)) =
+ ((w :u64))
+ ((temp :imm)
+ (stack-temp :imm)))
+ (movq (:rcontext x8664::tcr.foreign-sp) (:%q stack-temp))
(subq (:$b (* 2 x8664::dnode-size)) (:rcontext x8664::tcr.foreign-sp))
- (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::ra0))
- (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
- (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0)))
- (movq (:%q w) (:@ x8664::dnode-size (:%q x8664::ra0))))
+ (movq (:rcontext x8664::tcr.foreign-sp) (:%q temp))
+ (movq (:%q stack-temp) (:@ (:%q temp)))
+ (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q temp)))
+ (movq (:%q w) (:@ x8664::dnode-size (:%q temp))))
=
=
(define-x8664-vinsn (temp-push-node :push :word :tsp)
(()
((w :lisp))
- ((temp :imm)))
+ ((temp :imm)
+ (stack-temp :imm)))
(subq (:$b (* 2 x8664::dnode-size)) (:rcontext x8664::tcr.next-tsp))
- (movq (:rcontext x8664::tcr.save-tsp) (:%mmx x8664::stack-temp))
+ (movq (:rcontext x8664::tcr.save-tsp) (:%q stack-temp))
(movq (:rcontext x8664::tcr.next-tsp) (:%q temp))
(movapd (:%xmm x8664::fpzero) (:@ (:%q temp)))
(movapd (:%xmm x8664::fpzero) (:@ 16 (:%q temp)))
- (movq (:%mmx x8664::stack-temp) (:@ (:%q temp)))
+ (movq (:%q stack-temp) (:@ (:%q temp)))
(movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q temp))) =
(movq (:%q temp) (:rcontext x8664::tcr.save-tsp))
(movq (:%q w) (:@ x8664::dnode-size (:%q temp))))
=
(define-x8664-vinsn (temp-push-double-float :push :word :csp)
(()
- ((f :double-float)))
- (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp)) =
+ ((f :double-float))
+ ((temp :imm)
+ (stack-temp :imm)))
+ (movq (:rcontext x8664::tcr.foreign-sp) (:%q stack-temp)) =
(subq (:$b (* 2 x8664::dnode-size)) (:rcontext x8664::tcr.foreign-sp))
- (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::ra0)) =
- (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
- (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0)))
- (movapd (:%xmm f) (:@ x8664::dnode-size (:%q x8664::ra0))))
+ (movq (:rcontext x8664::tcr.foreign-sp) (:%q temp)) =
+ (movq (:%q stack-temp) (:@ (:%q temp)))
+ (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q temp)))
+ (movapd (:%xmm f) (:@ x8664::dnode-size (:%q temp))))
=
=
(define-x8664-vinsn (vpush-single-float :push :word :vsp)
@@ -2311,13 +2318,15 @@
=
=
(define-x8664-vinsn macptr->stack (((dest :lisp))
- ((ptr :address)))
- (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))
+ ((ptr :address))
+ ((temp :imm)
+ (stack-temp :imm)))
+ (movq (:rcontext x8664::tcr.foreign-sp) (:%q stack-temp))
(subq (:$b (+ x8664::dnode-size x8664::macptr.size)) (:rcontext x8664::t=
cr.foreign-sp))
- (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::ra0))
- (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
- (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0)))
- (leaq (:@ (+ x8664::dnode-size x8664::fulltag-misc) (:%q x8664::ra0)) (=
:%q dest))
+ (movq (:rcontext x8664::tcr.foreign-sp) (:%q temp))
+ (movq (:%q stack-temp) (:@ (:%q temp)))
+ (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q temp)))
+ (leaq (:@ (+ x8664::dnode-size x8664::fulltag-misc) (:%q temp)) (:%q des=
t))
(movq (:$l x8664::macptr-header) (:@ x8664::macptr.header (:%q dest)))
(movq (:%q ptr) (:@ x8664::macptr.address (:%q dest)))
(movapd (:%xmm x8664::fpzero) (:@ x8664::macptr.domain (:%q dest))))
@@ -3746,27 +3755,31 @@
=
=
(define-x8664-vinsn alloc-c-frame (()
- ((nwords :u32const)))
- (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))
+ ((nwords :u32const))
+ ((temp :imm)
+ (stack-temp :imm)))
+ (movq (:rcontext x8664::tcr.foreign-sp) (:%q stack-temp))
((:pred < (:apply ash (:apply logandc2 (:apply + nwords 9) 1) x8664::wor=
d-shift) 128)
(subq (:$b (:apply ash (:apply logandc2 (:apply + nwords 9) 1) x8664::w=
ord-shift)) (:rcontext x8664::tcr.foreign-sp)))
((:not (:pred < (:apply ash (:apply logandc2 (:apply + nwords 9) 1) x866=
4::word-shift) 128))
(subq (:$l (:apply ash (:apply logandc2 (:apply + nwords 9) 1) x8664::w=
ord-shift)) (:rcontext x8664::tcr.foreign-sp)))
- (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::ra0))
- (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
- (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0))))
+ (movq (:rcontext x8664::tcr.foreign-sp) (:%q temp))
+ (movq (:%q stack-temp) (:@ (:%q temp)))
+ (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q temp))))
=
(define-x8664-vinsn alloc-variable-c-frame (()
((nwords :imm))
- ((size :s64)))
+ ((size :s64)
+ (temp :imm)
+ (stack-temp :imm)))
(leaq (:@ (* 9 x8664::node-size) (:%q nwords)) (:%q size))
(andb (:$b (lognot x8664::fulltagmask)) (:%b size))
=
- (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))
+ (movq (:rcontext x8664::tcr.foreign-sp) (:%q stack-temp))
(subq (:%q size) (:rcontext x8664::tcr.foreign-sp))
- (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::ra0))
- (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
- (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0))))
+ (movq (:rcontext x8664::tcr.foreign-sp) (:%q temp))
+ (movq (:%q stack-temp) (:@ (:%q temp)))
+ (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q temp))))
=
(define-x8664-vinsn set-c-arg (()
((arg :u64)
@@ -3821,13 +3834,14 @@
=
(define-x8664-vinsn make-tsp-vcell (((dest :lisp))
((closed :lisp))
- ((temp :imm)))
+ ((temp :imm)
+ (stack-temp :imm)))
(subq (:$b (+ x8664::value-cell.size x8664::dnode-size)) (:rcontext x866=
4::tcr.next-tsp))
- (movq (:rcontext x8664::tcr.save-tsp) (:%mmx x8664::stack-temp))
+ (movq (:rcontext x8664::tcr.save-tsp) (:%q stack-temp))
(movq (:rcontext x8664::tcr.next-tsp) (:%q temp))
(movapd (:%xmm x8664::fpzero) (:@ (:%q temp)))
(movapd (:%xmm x8664::fpzero) (:@ x8664::dnode-size (:%q temp)))
- (movq (:%mmx x8664::stack-temp) (:@ (:%q temp)))
+ (movq (:%q stack-temp) (:@ (:%q temp)))
(movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q temp))) =
(movq (:%q temp) (:rcontext x8664::tcr.save-tsp)) =
(movq (:$l x8664::value-cell-header) (:@ x8664::dnode-size (:%q temp)))
More information about the Openmcl-cvs-notifications
mailing list