diff --git a/compiler/mips/arith.lisp b/compiler/mips/arith.lisp index 3494dae08d248a90fa37cd35cc6b16697f21e88e..10512700da289f097bbd22fbbafe1159b58156ba 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.30 1990/07/10 13:58:44 ram Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/arith.lisp,v 1.31 1990/07/12 12:18:40 ram Exp $ ;;; ;;; This file contains the VM definition arithmetic VOPs for the MIPS. ;;; @@ -222,9 +222,13 @@ (inst subu ndesc zero-tn amount) (inst slt temp ndesc 31) (inst bne temp zero-tn done) - (inst sra result number ndesc) + (sc-case number + (signed-reg (inst sra result number ndesc)) + (unsigned-reg (inst srl result number ndesc))) (inst b done) - (inst sra result number 31) + (sc-case number + (signed-reg (inst sra result number 31)) + (unsigned-reg (inst srl result number 31))) (emit-label positive) ;; The result-type assures us that this shift will not overflow.