[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