+
+#!-alpha
+(progn
+ (defknown sb!vm::ash-left-mod32 (integer (integer 0)) (unsigned-byte 32)
+ (foldable flushable movable))
+ (define-modular-fun-optimizer ash ((integer count) :width width)
+ (when (and (<= width 32)
+ (constant-lvar-p count) ; ?
+ (plusp (lvar-value count)))
+ (cut-to-width integer width)
+ 'sb!vm::ash-left-mod32)))
+#!+alpha
+(progn
+ (defknown sb!vm::ash-left-mod64 (integer (integer 0)) (unsigned-byte 64)
+ (foldable flushable movable))
+ (define-modular-fun-optimizer ash ((integer count) :width width)
+ (when (and (<= width 64)
+ (constant-lvar-p count) ; ?
+ (plusp (lvar-value count)))
+ (cut-to-width integer width)
+ 'sb!vm::ash-left-mod64)))
+