diff --git a/compiler/mips/system.lisp b/compiler/mips/system.lisp index bdd3bb42cb367ce47a8c1265aa116ac49e5a89fa..1b586d5a146df93f271cc1742cee12209159bfd6 100644 --- a/compiler/mips/system.lisp +++ b/compiler/mips/system.lisp @@ -7,13 +7,13 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/system.lisp,v 1.2 1990/03/06 19:14:06 wlott Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/system.lisp,v 1.3 1990/03/06 19:59:02 ch Exp $ ;;; ;;; MIPS VM definitions of various system hacking operations. ;;; ;;; Written by Rob MacLachlan ;;; -;;; Mips conversion by William Lott. +;;; Mips conversion by William Lott and Christopher Hoover. ;;; (in-package "C") @@ -35,8 +35,6 @@ (:generator 1 (inst subu res ptr1 ptr2))) - - #+nil (define-vop (vector-word-length) (:args (vec :scs (descriptor-reg))) @@ -61,22 +59,18 @@ (loadw res x (/ clc::bignum-header-size 4)) (emit-label fixp)))) -#+nil (define-vop (pointer-compare) (:args (x :scs (any-reg descriptor-reg)) (y :scs (any-reg descriptor-reg))) + (:temporary (:type random :scs (non-descriptor-reg)) temp) (:conditional) (:info target not-p) (:policy :fast-safe) (:note "inline comparison") (:variant-vars condition) (:generator 3 - (inst cl x y) - (if not-p - (inst bnb condition target) - (inst bb condition target)))) + (three-way-comparison x y condition :unsigned not-p target temp))) -#+nil (macrolet ((frob (name cond) `(progn (def-primitive-translator ,name (x y) `(,',name ,x ,y)) @@ -87,29 +81,23 @@ (frob pointer< :lt) (frob pointer> :gt)) -#+nil (define-vop (check-op) (:args (x :scs (any-reg descriptor-reg)) (y :scs (any-reg descriptor-reg))) + (:temporary (:type random :scs (non-descriptor-reg)) temp) (:variant-vars condition not-p error) (:node-var node) (:policy :fast-safe) - #+nil (:generator 3 - (inst c x y) (let ((target (generate-error-code node error x y))) - (if not-p - (inst bb condition target) - (inst bnb condition target))))) + (three-way-comparison x y condition :signed not-p target temp)))) -#+nil (define-vop (check<= check-op) - (:variant :gt t clc::error-not-<=) + (:variant :gt t di:not-<=-error) (:translate check<=)) -#+nil (define-vop (check= check-op) - (:variant :eq nil clc::error-not-=) + (:variant :eq nil di:not-=-error) (:translate check=))