From 3b1cf7c1ca1c14b0c5306662d0792a7e98c59c1b Mon Sep 17 00:00:00 2001
From: rtoy <rtoy>
Date: Fri, 23 Jul 2010 11:53:37 +0000
Subject: [PATCH] In the vops realpart/complex-double-float and
 realpart/complex-single-float, remove the unused temp register. Change the
 xor temp temp instruction to xor r r instruction so that the result has
 zeroes in the unused parts of the register.

Bug and fix from Alexander Donkov.
---
 compiler/x86/float-sse2.lisp | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/compiler/x86/float-sse2.lisp b/compiler/x86/float-sse2.lisp
index 04d6fe468..c1054a01f 100644
--- a/compiler/x86/float-sse2.lisp
+++ b/compiler/x86/float-sse2.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/float-sse2.lisp,v 1.15 2010/07/21 16:52:28 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/float-sse2.lisp,v 1.16 2010/07/23 11:53:37 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1390,13 +1390,12 @@
   (:arg-types complex-single-float)
   (:results (r :scs (single-reg)))
   (:result-types single-float)
-  (:temporary (:sc complex-single-reg) temp)
   (:policy :fast-safe)
   (:note _N"complex float realpart")
   (:generator 3
     (sc-case x
       (complex-single-reg
-       (inst xorps temp temp)		; temp = 0|0|0|0
+       (inst xorps r r)			; temp = 0|0|0|0
        (inst movss r x))		; r = 0|0|0|x
       (complex-single-stack
        (inst movss r (ea-for-csf-real-stack x)))
@@ -1409,13 +1408,12 @@
   (:arg-types complex-double-float)
   (:results (r :scs (double-reg)))
   (:result-types double-float)
-  (:temporary (:sc complex-double-reg) temp)
   (:policy :fast-safe)
   (:note _N"complex float realpart")
   (:generator 3
     (sc-case x
       (complex-double-reg
-       (inst xorpd temp temp)		; temp = 0|0
+       (inst xorpd r r)			; temp = 0|0
        (inst movsd r x))		; r = 0|x
       (complex-double-stack
        (inst movsd r (ea-for-cdf-real-stack x)))
-- 
GitLab