X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Falpha%2Farith.lisp;h=c680c6110c394bf489b16d961548c0ceaa71c5e3;hb=11f02398a1a9ccbde847c82fd233e8378e45c29c;hp=7f2a0bd87423c56bc91401bbe135d3b5fe7c38cb;hpb=dd357f3be290498fb7ef172696d986337f517a93;p=sbcl.git diff --git a/src/compiler/alpha/arith.lisp b/src/compiler/alpha/arith.lisp index 7f2a0bd..c680c61 100644 --- a/src/compiler/alpha/arith.lisp +++ b/src/compiler/alpha/arith.lisp @@ -196,7 +196,7 @@ (:translate ash) (:policy :fast-safe) (:temporary (:sc non-descriptor-reg) ndesc) - (:temporary (:sc non-descriptor-reg :to :eval) temp) + (:temporary (:sc non-descriptor-reg) temp) (:generator 3 (inst bge amount positive) (inst subq zero-tn amount ndesc) @@ -223,7 +223,7 @@ (:translate ash) (:policy :fast-safe) (:temporary (:sc non-descriptor-reg) ndesc) - (:temporary (:sc non-descriptor-reg :to :eval) temp) + (:temporary (:sc non-descriptor-reg) temp) (:generator 3 (inst bge amount positive) (inst subq zero-tn amount ndesc) @@ -249,8 +249,8 @@ (:result-types signed-num) (:generator 1 (cond - ((< count 0) (inst sra number (- count) result)) - ((> count 0) (inst sll number count result)) + ((< count 0) (inst sra number (min 63 (- count)) result)) + ((> count 0) (inst sll number (min 63 count) result)) (t (bug "identity ASH not transformed away"))))) (define-vop (fast-ash-c/unsigned=>unsigned) @@ -266,7 +266,7 @@ (cond ((< count -63) (move zero-tn result)) ((< count 0) (inst sra number (- count) result)) - ((> count 0) (inst sll number count result)) + ((> count 0) (inst sll number (min 63 count) result)) (t (bug "identity ASH not transformed away"))))) (define-vop (signed-byte-64-len)