(cond
((and (minusp amount) (< amount -31)) (move result zero-tn))
((minusp amount) (inst srwi result number (- amount)))
+ ;; possible because this is used in the modular version too
+ ((> amount 31) (move result zero-tn))
(t (inst slwi result number amount)))))
(define-vop (fast-ash/signed=>signed)
(:translate ,mfun-name))))))))
(define-modular-backend + t)
(define-modular-backend - t)
+ (define-modular-backend * t)
(define-modular-backend logxor t)
(define-modular-backend logeqv)
(define-modular-backend lognand)