+(define-vop (fast-ash/signed=>signed)
+ (:note "inline ASH")
+ (:args (number :scs (signed-reg) :to :save)
+ (amount :scs (signed-reg)))
+ (:arg-types signed-num signed-num)
+ (:results (result :scs (signed-reg)))
+ (:result-types signed-num)
+ (:translate ash)
+ (:policy :fast-safe)
+ (:temporary (:sc non-descriptor-reg) ndesc)
+ (:temporary (:sc non-descriptor-reg :to :eval) temp)
+ (:generator 3
+ (inst bge amount positive)
+ (inst subq zero-tn amount ndesc)
+ (inst cmplt ndesc 63 temp)
+ (inst sra number ndesc result)
+ (inst bne temp done)
+ (inst sra number 63 result)
+ (inst br zero-tn done)
+
+ POSITIVE
+ (inst sll number amount result)
+
+ DONE))
+
+(define-vop (fast-ash-c/signed=>signed)