Convert an ASSERT into an AVER in INIT-LIVE-TNS
[sbcl.git] / src / compiler / hppa / arith.lisp
index 984b141..68177d5 100644 (file)
   (: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)))
       (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)
     (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)))
   (: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)))
-
 \f
 ;;;; modular functions
 (define-modular-fun +-mod32 (x y) + :untagged nil 32)
     (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))