From 40ba0566debab421afa4d4badd3a0798d07a65a8 Mon Sep 17 00:00:00 2001 From: dtc <dtc> Date: Thu, 18 Nov 1999 14:25:40 +0000 Subject: [PATCH] Remove the unneeded nop between floating-point compare and branch instructions on the Sparc V9. From Raymond Toy. --- compiler/sparc/float.lisp | 7 +++++-- compiler/sparc/insts.lisp | 8 +++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/compiler/sparc/float.lisp b/compiler/sparc/float.lisp index 779facbc3..d07d70b9e 100644 --- a/compiler/sparc/float.lisp +++ b/compiler/sparc/float.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/float.lisp,v 1.24 1998/07/24 17:22:37 dtc Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/float.lisp,v 1.25 1999/11/18 14:25:39 dtc Exp $") ;;; ;;; ********************************************************************** ;;; @@ -790,7 +790,10 @@ (:single (inst fcmps x y)) (:double (inst fcmpd x y)) (:long (inst fcmpx x y))) - (inst nop) + ;; The SPARC V9 doesn't need an instruction between a + ;; floating-point compare and a floating-point branch. + (unless (backend-featurep :sparc-v9) + (inst nop)) (inst fb (if not-p nope yep) target) (inst nop))) diff --git a/compiler/sparc/insts.lisp b/compiler/sparc/insts.lisp index 2e5f0339b..5ca8b2047 100644 --- a/compiler/sparc/insts.lisp +++ b/compiler/sparc/insts.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/insts.lisp,v 1.21 1999/08/13 15:57:25 dtc Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/insts.lisp,v 1.22 1999/11/18 14:25:40 dtc Exp $") ;;; ;;; ********************************************************************** ;;; @@ -898,7 +898,8 @@ (reads src1) (reads src2) (writes :fsr)) - (:delay 1) + ;; The Sparc V9 doesn't need a delay after a FP compare. + (:delay #-sparc-v9 1 #+sparc-v9 0) (:emitter (emit-format-3-fpop segment #b10 0 #b110101 (fp-reg-tn-encoding src1) ,opf (fp-reg-tn-encoding src2))))) @@ -949,7 +950,8 @@ (reads src1) (reads src2) (writes :fsr)) - (:delay 1) + ;; The Sparc V9 doesn't need a delay after a FP compare. + (:delay #-sparc-v9 1 #+sparc-v9 0) (:emitter (emit-format-3-fpop segment #b10 0 #b110101 (fp-reg-tn-encoding src1) ,opf (fp-reg-tn-encoding src2))))) -- GitLab