(:note "inline ASH")
(:generator 2
(cond ((and (= amount 1) (not (location= number result)))
- (inst lea result (make-ea :dword :index number :scale 2)))
+ (inst lea result (make-ea :dword :base number :index number)))
((and (= amount 2) (not (location= number result)))
(inst lea result (make-ea :dword :index number :scale 4)))
((and (= amount 3) (not (location= number result)))
(:note "inline ASH")
(:generator 3
(cond ((and (= amount 1) (not (location= number result)))
- (inst lea result (make-ea :dword :index number :scale 2)))
+ (inst lea result (make-ea :dword :base number :index number)))
((and (= amount 2) (not (location= number result)))
(inst lea result (make-ea :dword :index number :scale 4)))
((and (= amount 3) (not (location= number result)))
(:note "inline ASH")
(:generator 3
(cond ((and (= amount 1) (not (location= number result)))
- (inst lea result (make-ea :dword :index number :scale 2)))
+ (inst lea result (make-ea :dword :base number :index number)))
((and (= amount 2) (not (location= number result)))
(inst lea result (make-ea :dword :index number :scale 4)))
((and (= amount 3) (not (location= number result)))
(define-full-reffer bignum-ref * bignum-digits-offset other-pointer-lowtag
(unsigned-reg) unsigned-num sb!bignum:%bignum-ref)
-
+(define-full-reffer+offset bignum-ref-with-offset *
+ bignum-digits-offset other-pointer-lowtag
+ (unsigned-reg) unsigned-num sb!bignum:%bignum-ref-with-offset)
(define-full-setter bignum-set * bignum-digits-offset other-pointer-lowtag
(unsigned-reg) unsigned-num sb!bignum:%bignum-set)