0.8.3.39:
[sbcl.git] / src / compiler / mips / arith.lisp
index 05a47b5..a0f9b35 100644 (file)
 (define-vop (fast-ash/unsigned=>unsigned)
   (:note "inline ASH")
   (:args (number :scs (unsigned-reg) :to :save)
-        (amount :scs (signed-reg)))
+        (amount :scs (signed-reg) :to :save))
   (:arg-types unsigned-num signed-num)
   (:results (result :scs (unsigned-reg)))
   (:result-types unsigned-num)
   (:generator 3
     (inst bgez amount positive)
     (inst subu ndesc zero-tn amount)
-    (inst slt temp ndesc 31)
+    (inst slt temp ndesc 32)
     (inst bne temp zero-tn done)
     (inst srl result number ndesc)
     (inst b done)
-    (inst srl result number 31)
+    (inst move result zero-tn)
 
     POSITIVE
     ;; The result-type assures us that this shift will not overflow.