[Openmcl-cvs-notifications] r11297 - /trunk/source/compiler/X86/X8632/x8632-vinsns.lisp
gb at clozure.com
gb at clozure.com
Wed Nov 5 05:52:14 EST 2008
Author: gb
Date: Wed Nov 5 05:52:14 2008
New Revision: 11297
Log:
Lose the speculative MARK-AS-NODE-PRESERVING-FLAGS.
Add a MARK-TEMP1-AS-NODE-PRESERVING-FLAGS, which doesn't clobber as many fl=
age.
Add a TEMP-POP-TEMP1-AS-UNBOXED-WORD, which sets the direction flag to indi=
cate the unboxed state of %temp1/%edx as it pops a word into that register.
ALIGN-LOOP-HEAD was a bad idea (adds NOPs but doesn't improve performance),=
but attempts to actually remove uses of it failed for some unknown reason.=
Make the vinsn a NOP for now.
Modified:
trunk/source/compiler/X86/X8632/x8632-vinsns.lisp
Modified: trunk/source/compiler/X86/X8632/x8632-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/X8632/x8632-vinsns.lisp (original)
+++ trunk/source/compiler/X86/X8632/x8632-vinsns.lisp Wed Nov 5 05:52:14 2=
008
@@ -3948,15 +3948,14 @@
(xorl (:%l reg) (:%l reg))
(btsl (:$ub (:apply %hard-regspec-value reg)) (:@ (:%seg :rcontext) x863=
2::tcr.node-regs-mask)))
=
-;;; We can't safely push %eflags on the lisp stack, so we have to clobber
-;;; %ah.
-(define-x8632-vinsn mark-as-node-preserving-flags (()
- ((reg :imm))
- ((ah (:u8 #.x8632::imm0=
))))
- (:byte #x9f) ;lahf
- (xorl (:%l reg) (:%l reg))
- (btsl (:$ub (:apply %hard-regspec-value reg)) (:@ (:%seg :rcontext) x863=
2::tcr.node-regs-mask))
- (:byte #x9e))
+(define-x8632-vinsn mark-temp1-as-node-preserving-flags (()
+ ()
+ ((reg (:u32 #.x863=
2::temp1))))
+ (movl (:$l 0) (:%l reg)) ;not xorl!
+ (cld)) ;well, preserving most flags.
+
+ =
+
=
(define-x8632-vinsn (temp-push-unboxed-word :push :word :csp)
(()
@@ -3973,6 +3972,15 @@
(((w :u32))
())
(movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l w))
+ (movl (:@ 8 (:%l w)) (:%l w))
+ (addl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)))
+
+(define-x8632-vinsn (temp-pop-temp1-as-unboxed-word :pop :word :csp)
+ (()
+ ()
+ ((w (:u32 #.x8632::temp1))))
+ (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l w))
+ (std)
(movl (:@ 8 (:%l w)) (:%l w))
(addl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)))
=
@@ -4054,7 +4062,7 @@
=
(define-x8632-vinsn align-loop-head (()
())
- (:align 4))
+)
=
(queue-fixup
(fixup-x86-vinsn-templates
More information about the Openmcl-cvs-notifications
mailing list