[cmucl-commit] [git] CMU Common Lisp branch master updated. snapshot-2013-02-16-g8e1b40b
Raymond Toy
rtoy at common-lisp.net
Sat Feb 23 16:32:07 UTC 2013
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 8e1b40b35592720147dac16cfef2431b43ccbe5a (commit)
from 3c88c09556da4e0f797dc90beba16c76ac972c26 (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 8e1b40b35592720147dac16cfef2431b43ccbe5a
Author: Raymond Toy <toy.raymond at gmail.com>
Date: Sat Feb 23 08:31:57 2013 -0800
Remove old stuff.
* Remove support for :athlon in fp-pop.
* Remove all of the enhanced pentium pro fp comparison code. Use the
non ppro everywhere.
diff --git a/src/compiler/x86/float.lisp b/src/compiler/x86/float.lisp
index f8f57e6..a515e40 100644
--- a/src/compiler/x86/float.lisp
+++ b/src/compiler/x86/float.lisp
@@ -33,9 +33,7 @@
;;; For the AMD Athlon, using ffreep fr0 is faster.
;;;
(defun fp-pop ()
- (if (backend-featurep :athlon)
- (inst ffreep fr0-tn)
- (inst fstp fr0-tn)))
+ (inst fstp fr0-tn))
(macrolet ((ea-for-xf-desc (tn slot)
@@ -1482,7 +1480,6 @@
(:conditional)
(:info target not-p)
(:policy :fast-safe)
- (:guard (not (backend-featurep :ppro)))
(:note _N"inline float comparison")
(:ignore temp fr0)
(:generator 3
@@ -1571,7 +1568,6 @@
(:conditional)
(:info target not-p)
(:policy :fast-safe)
- (:guard (not (backend-featurep :ppro)))
(:note _N"inline float comparison")
(:ignore temp fr0)
(:generator 3
@@ -1659,7 +1655,6 @@
(:conditional)
(:info target not-p)
(:policy :fast-safe)
- (:guard (not (backend-featurep :ppro)))
(:note _N"inline float comparison")
(:ignore temp)
(:generator 3
@@ -1768,99 +1763,6 @@
(frob = #x40))
-
-;;;; Enhanced Pentium Pro floating point comparisons.
-
-;;; These comparisions use the faster sequences bases upon FCOMI and FUCOMI,
-;;; which write to the condition codes. However, correct IEEE handling of
-;;; unordered arguments requires the comparision of multiple flags which is
-;;; only possible for the comparison (> ST0 operand) in which case the :b and
-;;; :be tests can check that both ZF and CF are zero, or either is one
-;;; respectively. For the opposite comparision (< ST0 operand), the arguments
-;;; may be swapped and the > comparision used, but for equality the slower
-;;; FNSTSW variation must be used.
-
-(define-vop (ppro-</float)
- (:args (x) (y))
- (:conditional)
- (:info target not-p)
- (:policy :fast-safe)
- (:guard (backend-featurep :ppro))
- (:note _N"inline float comparison")
- (:generator 3
- ;; Handle a few special cases
- (cond
- ;; x is in ST0; y is in any reg.
- ((zerop (tn-offset x))
- (inst fxch y)
- (inst fcomi y)
- (inst fxch y))
- ;; y is in ST0; x is in another reg.
- ((zerop (tn-offset y))
- (inst fcomi x))
- ;; x and y are the same register, not ST0.
- ((location= x y)
- (inst fxch x)
- (inst fcomi fr0-tn)
- (inst fxch x))
- ;; x and y are different registers, neither ST0.
- (t
- (inst fxch y)
- (inst fcomi x)
- (inst fxch y)))
- (inst jmp (if not-p :be :nbe) target)))
-
-(macrolet ((frob (type sc)
- `(define-vop (,(symbolicate "PPRO-</" type) ppro-</float)
- (:translate <)
- (:args (x :scs (,sc))
- (y :scs (,sc)))
- (:arg-types ,type ,type))))
- (frob single-float single-reg)
- (frob double-float double-reg)
- #+long-float (frob long-float long-reg))
-
-(define-vop (ppro->/float)
- (:args (x) (y))
- (:conditional)
- (:info target not-p)
- (:policy :fast-safe)
- (:guard (backend-featurep :ppro))
- (:note _N"inline float comparison")
- (:generator 3
- ;; Handle a few special cases
- (cond
- ;; x is in ST0; y is in any reg.
- ((zerop (tn-offset x))
- (inst fcomi y))
- ;; y is in ST0; x is in another reg.
- ((zerop (tn-offset y))
- (inst fxch x)
- (inst fcomi x)
- (inst fxch x))
- ;; x and y are the same register, not ST0.
- ((location= x y)
- (inst fxch x)
- (inst fcomi fr0-tn)
- (inst fxch x))
- ;; x and y are different registers, neither ST0.
- (t
- (inst fxch x)
- (inst fcomi y)
- (inst fxch x)))
- (inst jmp (if not-p :be :nbe) target)))
-
-(macrolet ((frob (type sc)
- `(define-vop (,(symbolicate "PPRO->/" type) ppro->/float)
- (:translate >)
- (:args (x :scs (,sc))
- (y :scs (,sc)))
- (:arg-types ,type ,type))))
- (frob single-float single-reg)
- (frob double-float double-reg)
- #+long-float (frob long-float long-reg))
-
-
;;;; Conversion:
(macrolet ((frob (name translate to-sc to-type)
-----------------------------------------------------------------------
Summary of changes:
src/compiler/x86/float.lisp | 100 +------------------------------------------
1 files changed, 1 insertions(+), 99 deletions(-)
hooks/post-receive
--
CMU Common Lisp
More information about the cmucl-commit
mailing list