move checking for constant ALIEN-INFO into a separate function
[sbcl.git] / src / compiler / x86 / arith.lisp
index 4abd9c6..4c97c40 100644 (file)
                                        (location= number result)))))
   (:result-types tagged-num)
   (:note "inline ASH")
+  (:variant nil)
+  (:variant-vars modularp)
   (:generator 2
     (cond ((and (= amount 1) (not (location= number result)))
            (inst lea result (make-ea :dword :base number :index number)))
                         (inst sar result (- amount))
                         (inst and result (lognot fixnum-tag-mask)))))
                  ((plusp amount)
+                  (unless modularp
+                    (aver (not "Impossible: fixnum ASH should not be called with
+constant shift greater than word length")))
                   (if (sc-is result any-reg)
                       (inst xor result result)
                       (inst mov result 0)))
 
 (define-vop (fast-ash-left-smod30-c/fixnum=>fixnum
              fast-ash-c/fixnum=>fixnum)
+  (:variant :modular)
   (:translate ash-left-smod30))
 
 (define-vop (fast-ash-left-smod30/fixnum=>fixnum