1.0.3.13: working NaN comparison tests outside Darwin
[sbcl.git] / src / compiler / x86 / arith.lisp
index ffd540a..ad66b62 100644 (file)
   (: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)