[git] CMU Common Lisp branch master updated. begin-x87-removal-9-gd3bc3ac

Raymond Toy rtoy at common-lisp.net
Sun Apr 13 18:25:31 UTC 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".

The branch, master has been updated
       via  d3bc3ac7a83c9c06dabf37ebe9e781bcfcfa5518 (commit)
       via  f94c7fc82bcfc0da0906ac64891f22e2eca169ae (commit)
       via  6bba234d4dc71255cf4b9c6a0d418147781c564b (commit)
      from  260d94f1a9057fb9ae592a0b7b898f881316f289 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit d3bc3ac7a83c9c06dabf37ebe9e781bcfcfa5518
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Sun Apr 13 11:25:11 2014 -0700

    Remove commented code and some redundant jmps.

diff --git a/src/lisp/x86-assem.S b/src/lisp/x86-assem.S
index fd52d39..f3b4344 100644
--- a/src/lisp/x86-assem.S
+++ b/src/lisp/x86-assem.S
@@ -117,13 +117,6 @@ FUNCDEF(call_into_lisp)
 	movl	%esp,%ebp	# establish new frame
 
 /* Save the NPX state */
-#if 0
-	fwait			# Catch any pending NPX exceptions.
-	/* Save the SSE2 for X87 state */
-	mov	GNAME(fpu_mode), %eax
-	cmp	$2, %eax	# SSE2 mode?
-	jne	x87_save
-#endif
 	movl	%esp, %eax	# Remember the current stack pointer
 	/*
 	 * The SSE state is 512 bytes, but we need 16 more because we
@@ -133,25 +126,6 @@ FUNCDEF(call_into_lisp)
 	andl	$-16, %esp	# fxsave needs 16-byte alignment
 	fxsave	(%esp)		
 	pushl	%eax		# Save the old stack pointer
-	fninit			# Reset fpu, just in case
-	jmp	npx_save_done
-#if 0
-x87_save:
-	subl	$108,%esp	# Make room for the NPX state.
-	fnsave	(%esp)		# Resets NPX
-		
-	movl	(%esp),%eax	# Load NPX control word
-	andl	$0xfffff3ff,%eax	# Set rounding mode to nearest
-#ifdef type_LongFloat
-	orl	$0x00000300,%eax	# Set precision to 64 bits
-#else
-	orl	$0x00000200,%eax	# Set precision to 53 bits
-#endif	
-	pushl	%eax
-	fldcw	(%esp)		# Recover modes
-	popl	%eax
-#endif
-npx_save_done:			
 /* Save C regs: ebx esi edi */
 	pushl	%ebx
 	pushl	%esi
@@ -219,22 +193,9 @@ Ldone:
 	popl	%ebx
 
 /* Restore the NPX state */
-#if 0
-	/* Restore SSE2 state? */
-	mov	GNAME(fpu_mode), %eax
-	cmp	$2, %eax	# SSE2 mode?
-	jne	x87_restore
-#endif
 	popl	%eax		# Get the old stack pointer
 	fxrstor	(%esp)		# Restore the SSE state
 	movl	%eax, %esp	# Now really restore the old stack pointer
-	jmp	npx_restore_done
-#if 0
-x87_restore:
-	frstor  (%esp)
-	addl	$108, %esp
-#endif
-npx_restore_done:	
 			
 	popl	%ebp		# c-sp
 	movl	%edx,%eax	# c-val

commit f94c7fc82bcfc0da0906ac64891f22e2eca169ae
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Sun Apr 13 10:59:47 2014 -0700

    Comment out x87 stuff from call_into_lisp.

diff --git a/src/lisp/x86-assem.S b/src/lisp/x86-assem.S
index f9dee43..fd52d39 100644
--- a/src/lisp/x86-assem.S
+++ b/src/lisp/x86-assem.S
@@ -117,11 +117,13 @@ FUNCDEF(call_into_lisp)
 	movl	%esp,%ebp	# establish new frame
 
 /* Save the NPX state */
+#if 0
 	fwait			# Catch any pending NPX exceptions.
 	/* Save the SSE2 for X87 state */
 	mov	GNAME(fpu_mode), %eax
 	cmp	$2, %eax	# SSE2 mode?
 	jne	x87_save
+#endif
 	movl	%esp, %eax	# Remember the current stack pointer
 	/*
 	 * The SSE state is 512 bytes, but we need 16 more because we
@@ -133,7 +135,7 @@ FUNCDEF(call_into_lisp)
 	pushl	%eax		# Save the old stack pointer
 	fninit			# Reset fpu, just in case
 	jmp	npx_save_done
-
+#if 0
 x87_save:
 	subl	$108,%esp	# Make room for the NPX state.
 	fnsave	(%esp)		# Resets NPX
@@ -148,6 +150,7 @@ x87_save:
 	pushl	%eax
 	fldcw	(%esp)		# Recover modes
 	popl	%eax
+#endif
 npx_save_done:			
 /* Save C regs: ebx esi edi */
 	pushl	%ebx
@@ -216,17 +219,21 @@ Ldone:
 	popl	%ebx
 
 /* Restore the NPX state */
+#if 0
 	/* Restore SSE2 state? */
 	mov	GNAME(fpu_mode), %eax
 	cmp	$2, %eax	# SSE2 mode?
 	jne	x87_restore
+#endif
 	popl	%eax		# Get the old stack pointer
 	fxrstor	(%esp)		# Restore the SSE state
 	movl	%eax, %esp	# Now really restore the old stack pointer
 	jmp	npx_restore_done
+#if 0
 x87_restore:
 	frstor  (%esp)
 	addl	$108, %esp
+#endif
 npx_restore_done:	
 			
 	popl	%ebp		# c-sp

commit 6bba234d4dc71255cf4b9c6a0d418147781c564b
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Sat Apr 12 18:10:46 2014 -0700

    More x87 removal from sse2-c-call.lisp
    
     * Remove frobbing of the FPU modes from alloc and dealloc.
     * Use 16-byte alignment for all platforms. It's harmless for those
       that don't require it.

diff --git a/src/compiler/x86/sse2-c-call.lisp b/src/compiler/x86/sse2-c-call.lisp
index 83f21b5..1e827d3 100644
--- a/src/compiler/x86/sse2-c-call.lisp
+++ b/src/compiler/x86/sse2-c-call.lisp
@@ -71,19 +71,11 @@
   (:generator 0
     (assert (location= result esp-tn))
 
-    #+(or linux)
-    (progn
-      ;; Is this needed with sse2?
-      (inst sub esp-tn 4)
-      (inst fnstcw (make-ea :word :base esp-tn))
-      (inst and (make-ea :word :base esp-tn) #xcff)
-      (inst or (make-ea :word :base esp-tn) #x300)
-      (inst fldcw (make-ea :word :base esp-tn))
-      (inst add esp-tn 4))
     (unless (zerop amount)
       (let ((delta (logandc2 (+ amount 3) 3)))
 	(inst sub esp-tn delta)))
-    #+darwin (inst and esp-tn #xfffffff0)
+    ;; Align the stack to a 16-byte boundary.
+    (inst and esp-tn #xfffffff0)
     (move result esp-tn)))
 
 (define-vop (dealloc-number-stack-space)
@@ -91,15 +83,5 @@
   (:generator 0
     (unless (zerop amount)
       (let ((delta (logandc2 (+ amount 3) 3)))
-	(inst add esp-tn delta)))
-    #+(or linux)
-    (progn
-      ;; Is this needed with sse2?
-      (inst sub esp-tn 4)
-      (inst fnstcw (make-ea :word :base esp-tn))
-      (inst and (make-ea :word :base esp-tn) #xcff)
-      (inst or (make-ea :word :base esp-tn) #x200)
-      (inst fldcw (make-ea :word :base esp-tn))
-      (inst wait)
-      (inst add esp-tn 4))))
+	(inst add esp-tn delta)))))
 

-----------------------------------------------------------------------

Summary of changes:
 src/compiler/x86/sse2-c-call.lisp |   24 +++---------------------
 src/lisp/x86-assem.S              |   32 --------------------------------
 2 files changed, 3 insertions(+), 53 deletions(-)


hooks/post-receive
-- 
CMU Common Lisp



More information about the cmucl-cvs mailing list