X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fhppa%2Farith.lisp;h=68177d55216a0cfa72de1d2c64100ad9e44a5c13;hb=63e78fc74df6e60019a9952531c4b7608656f07e;hp=984b1410f63e862b2a73bcbe82efafa896f5f87b;hpb=0d74ed478e7f3af5d3292153726373763631aa8e;p=sbcl.git diff --git a/src/compiler/hppa/arith.lisp b/src/compiler/hppa/arith.lisp index 984b141..68177d5 100644 --- a/src/compiler/hppa/arith.lisp +++ b/src/compiler/hppa/arith.lisp @@ -357,8 +357,8 @@ (:temporary (:sc interior-reg :offset lip-offset) lip) (:ignore lip sign) ; fix-lav: why dont we ignore tmp ? (:generator 30 - ; looking at the register setup above, not sure if both can clash - ; maybe it is ok that x and x-pass share register ? like it was + ;; looking at the register setup above, not sure if both can clash + ;; maybe it is ok that x and x-pass share register ? like it was (unless (location= y y-pass) (inst sra x 2 x-pass)) (let ((fixup (make-fixup 'multiply :assembly-routine))) @@ -469,11 +469,11 @@ (inst bc := nil y zero-tn zero)) (move x x-pass) (move y y-pass) - ; really dirty trick to avoid the bug truncate/unsigned vop - ; followed by move-from/word->fixnum where the result from - ; the truncate is 0xe39516a7 and move-from-word will treat - ; the unsigned high number as an negative number. - ; instead we clear the high bit in the input to truncate. + ;; really dirty trick to avoid the bug truncate/unsigned vop + ;; followed by move-from/word->fixnum where the result from + ;; the truncate is 0xe39516a7 and move-from-word will treat + ;; the unsigned high number as an negative number. + ;; instead we clear the high bit in the input to truncate. (inst li #x1fffffff q) (inst comb :<> q y skip :nullify t) (inst addi -1 zero-tn q) @@ -481,7 +481,7 @@ (inst and x-pass q x-pass) (inst and y-pass q y-pass) SKIP - ; fix bug#2 (truncate #xe39516a7 #x3) => #0xf687078d,#x0 + ;; fix bug#2 (truncate #xe39516a7 #x3) => #0xf687078d,#x0 (inst li #x7fffffff q) (inst and x-pass q x-pass) (let ((fixup (make-fixup 'truncate :assembly-routine))) @@ -633,22 +633,6 @@ (:arg-types * (:constant (signed-byte 9))) (:variant-cost 6)) -;;;; 32-bit logical operations - -(define-vop (merge-bits) ; not implemented, even used ? - (:translate merge-bits) - (:args (shift :scs (signed-reg unsigned-reg)) - (prev :scs (unsigned-reg)) - (next :scs (unsigned-reg))) - (:arg-types tagged-num unsigned-num unsigned-num) - (:results (result :scs (unsigned-reg))) - (:result-types unsigned-num) - (:policy :fast-safe) - (:ignore shift prev next) - (:generator 4 - (inst li 0 result) - (inst break 0))) - ;;;; modular functions (define-modular-fun +-mod32 (x y) + :untagged nil 32) @@ -879,7 +863,7 @@ (inst sra fixnum n-fixnum-tag-bits digit))) (define-vop (bignum-floor) - (:translate sb!bignum:%floor) + (:translate sb!bignum:%bigfloor) (:policy :fast-safe) (:args (hi :scs (unsigned-reg) :to (:argument 1)) (lo :scs (unsigned-reg) :to (:argument 0))