CMUCL commit: src/compiler/x86 (float-sse2.lisp)

Raymond Toy rtoy at common-lisp.net
Fri Jul 23 13:53:37 CEST 2010


    Date: Friday, July 23, 2010 @ 07:53:37
  Author: rtoy
    Path: /project/cmucl/cvsroot/src/compiler/x86

Modified: float-sse2.lisp

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.


-----------------+
 float-sse2.lisp |    8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)


Index: src/compiler/x86/float-sse2.lisp
diff -u src/compiler/x86/float-sse2.lisp:1.15 src/compiler/x86/float-sse2.lisp:1.16
--- src/compiler/x86/float-sse2.lisp:1.15	Wed Jul 21 12:52:28 2010
+++ src/compiler/x86/float-sse2.lisp	Fri Jul 23 07:53:37 2010
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group at cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /project/cmucl/cvsroot/src/compiler/x86/float-sse2.lisp,v 1.15 2010-07-21 16:52:28 rtoy Exp $")
+  "$Header: /project/cmucl/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)))



More information about the cmucl-commit mailing list