Don't use arithmetic right shift for division.
authorChris Hanson <org/chris-hanson/cph>
Fri, 23 Feb 1990 21:43:42 +0000 (21:43 +0000)
committerChris Hanson <org/chris-hanson/cph>
Fri, 23 Feb 1990 21:43:42 +0000 (21:43 +0000)
v7/src/compiler/machines/bobcat/lapgen.scm

index 93e319b511fcdbf86aa4b950e99305232d221c58..20c2d16df23c43322574be84446bc7e89d0f4f57 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/lapgen.scm,v 4.26 1990/01/18 22:43:36 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/lapgen.scm,v 4.27 1990/02/23 21:43:42 cph Exp $
 
 Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
 
@@ -634,15 +634,7 @@ MIT in each case. |#
   (lambda (target n)
     (cond ((= n 1) (LAP))
          ((= n -1) (LAP (NEG L ,target)))
-         (else
-          (let ((power-of-2 (integer-log-base-2? n)))
-            (if power-of-2
-                (if (> power-of-2 8)
-                    (let ((temp (reference-temporary-register! 'DATA)))
-                      (LAP (MOV L (& ,power-of-2) ,temp)
-                           (AS R L ,temp ,target)))
-                    (LAP (AS R L (& ,power-of-2) ,target)))
-                (LAP (DIV S L (& ,n) ,target))))))))
+         (else (LAP (DIV S L (& ,n) ,target))))))
 
 (define-fixnum-method 'FIXNUM-REMAINDER fixnum-methods/2-args
   (lambda (target source)
@@ -655,17 +647,10 @@ MIT in each case. |#
   (lambda (target n)
     (if (or (= n 1) (= n -1))
        (LAP (CLR L ,target))
-       (let ((power-of-2 (integer-log-base-2? n)))
-         (if power-of-2
-             (if (> power-of-2 8)
-                 (let ((temp (reference-temporary-register! 'DATA)))
-                   (LAP (MOV L (& ,power-of-2) ,temp)
-                        (AS R L ,temp ,target)))
-                 (LAP (AS R L (& ,power-of-2) ,target)))
-             (let ((temp (reference-temporary-register! 'DATA)))
-               (LAP
-                (DIV S L (& ,(* n fixnum-1)) ,temp ,target)
-                (MOV L ,temp ,target))))))))
+       (let ((temp (reference-temporary-register! 'DATA)))
+         (LAP
+          (DIV S L (& ,(* n fixnum-1)) ,temp ,target)
+          (MOV L ,temp ,target))))))
 \f
 ;;;; Flonum Operators