(: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)