diff --git a/compiler/mips/arith.lisp b/compiler/mips/arith.lisp index 68857938ba57cbcb1fb3a739894fd16e699638d0..3494dae08d248a90fa37cd35cc6b16697f21e88e 100644 --- a/compiler/mips/arith.lisp +++ b/compiler/mips/arith.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/arith.lisp,v 1.29 1990/07/03 17:27:59 ram Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/arith.lisp,v 1.30 1990/07/10 13:58:44 ram Exp $ ;;; ;;; This file contains the VM definition arithmetic VOPs for the MIPS. ;;; @@ -204,17 +204,15 @@ (define-vop (fast-ash) (:note "inline ASH") - (:args (number :scs (signed-reg unsigned-reg)) + (:args (number :scs (signed-reg unsigned-reg) :to :save) (amount :scs (signed-reg immediate negative-immediate))) (:arg-types (:or signed-num unsigned-num) signed-num) (:results (result :scs (signed-reg unsigned-reg))) (:result-types (:or signed-num unsigned-num)) (:translate ash) (:policy :fast-safe) - (:temporary (:scs (non-descriptor-reg) :type random :to (:result 0)) - ndesc) - (:temporary (:scs (non-descriptor-reg) :type random :from (:argument 1)) - foo) + (:temporary (:sc non-descriptor-reg) ndesc) + (:temporary (:sc non-descriptor-reg :to :eval) temp) (:generator 3 (sc-case amount (signed-reg @@ -222,8 +220,8 @@ (done (gen-label))) (inst bgez amount positive) (inst subu ndesc zero-tn amount) - (inst and foo ndesc #x1f) - (inst beq foo ndesc done) + (inst slt temp ndesc 31) + (inst bne temp zero-tn done) (inst sra result number ndesc) (inst b done) (inst sra result number 31)