(: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)))
,(symbolicate "FAST-CONDITIONAL" suffix))
(:translate logtest)
(:generator ,cost
- (inst test x ,(if (eq suffix '-c/fixnum)
- '(fixnumize y)
- 'y))
+ (emit-optimized-test-inst x
+ ,(if (eq suffix '-c/fixnum)
+ '(fixnumize y)
+ 'y))
(inst jmp (if not-p :e :ne) target)))))))
(define-logtest-vops))
(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)