diff --git a/compiler/sparc/arith.lisp b/compiler/sparc/arith.lisp index dcb5a7fef395300ec88fa8b0ff3e3fd48dd71408..38f51235a09671b7e9a54aa84f59872adf002d48 100644 --- a/compiler/sparc/arith.lisp +++ b/compiler/sparc/arith.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/arith.lisp,v 1.21 2000/09/26 15:14:48 dtc Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/arith.lisp,v 1.22 2001/01/03 08:45:52 dtc Exp $") ;;; ;;; ********************************************************************** ;;; @@ -252,7 +252,7 @@ (inst sra r x 31) (inst wry r) ;; Remove tag bits so Q and R will be tagged correctly. - (inst sra y-int y 2) + (inst sra y-int y fixnum-tag-bits) (inst nop) (inst nop) @@ -282,7 +282,7 @@ (:generator 12 (let ((zero (generate-error-code vop division-by-zero-error x y))) (inst cmp y zero-tn) - (inst b :eq zero) + (inst b :eq zero #+sparc-v9 :pn) ;; Extend the sign of X into the Y register (inst sra r x 31) (inst wry r) @@ -316,7 +316,7 @@ (:generator 8 (let ((zero (generate-error-code vop division-by-zero-error x y))) (inst cmp y zero-tn) - (inst b :eq zero) + (inst b :eq zero #+sparc-v9 :pn) (inst wry zero-tn) ; Clear out high part (inst nop) (inst nop) @@ -346,7 +346,7 @@ (:generator 8 (let ((zero (generate-error-code vop division-by-zero-error x y))) (inst cmp y zero-tn) - (inst b :eq zero) + (inst b :eq zero :pn) ;; Sign extend the numbers, just in case. (inst sra x 0) (inst sra y 0) @@ -374,7 +374,7 @@ (:generator 8 (let ((zero (generate-error-code vop division-by-zero-error x y))) (inst cmp y zero-tn) - (inst b :eq zero) + (inst b :eq zero :pn) ;; Zap the higher 32 bits, just in case (inst srl x 0) (inst srl y 0) @@ -1270,6 +1270,7 @@ ;; direction of the shift at run-time. (in-package "C") +#+nil (deftransform ash ((num shift) (integer integer)) (let ((num-type (continuation-type num)) (shift-type (continuation-type shift))) diff --git a/compiler/sparc/call.lisp b/compiler/sparc/call.lisp index 6b25f3a2eac35e2c98b9f6cd775864b709321b64..addae2e11a0256619011946715f2aafcb7392662 100644 --- a/compiler/sparc/call.lisp +++ b/compiler/sparc/call.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/call.lisp,v 1.27 1997/04/16 18:06:23 dtc Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/call.lisp,v 1.28 2001/01/03 08:45:52 dtc Exp $") ;;; ;;; ********************************************************************** ;;; @@ -1220,7 +1220,8 @@ default-value-8 (let ((err-lab (generate-error-code vop invalid-argument-count-error nargs))) (inst cmp nargs (fixnum count)) - (inst b :ne err-lab) + ;; Assume we don't take the branch + (inst b :ne err-lab #+sparc-v9 :pn) (inst nop)))) ;;; Signal various errors. diff --git a/compiler/sparc/macros.lisp b/compiler/sparc/macros.lisp index 9c504b06ab1c8d83ced3b513f12dcc8d1326e45b..c9fade865b33f909b46039493f3b8091d02a0796 100644 --- a/compiler/sparc/macros.lisp +++ b/compiler/sparc/macros.lisp @@ -5,11 +5,11 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/macros.lisp,v 1.11 2000/12/05 03:07:04 dtc Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/macros.lisp,v 1.12 2001/01/03 08:45:52 dtc Exp $") ;;; ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/macros.lisp,v 1.11 2000/12/05 03:07:04 dtc Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/macros.lisp,v 1.12 2001/01/03 08:45:52 dtc Exp $ ;;; ;;; This file contains various useful macros for generating SPARC code. ;;; @@ -276,7 +276,8 @@ `((inst andcc zero-tn ,reg 3) ,(if (or lowtags hdrs) `(inst b :eq ,(if not-p not-target target)) - `(inst b ,(if not-p :ne :eq) ,target)))) + `(inst b ,(if not-p :ne :eq) ,target + #+sparc-v9 ,(if not-p :pn :pt))))) (when (or lowtags hdrs) `((inst and ,temp ,reg lowtag-mask))) (when lowtags