(:variant-vars double-p size type data)
(:note "float to pointer coercion")
(:generator 13
- (with-fixed-allocation (y pa-flag ndescr type size)
+ (with-fixed-allocation (y pa-flag ndescr type size nil)
(if double-p
(str-double x y (- (* data n-word-bytes) other-pointer-lowtag))
(inst swc1 x y (- (* data n-word-bytes) other-pointer-lowtag))))))
(:note "complex single float to pointer coercion")
(:generator 13
(with-fixed-allocation (y pa-flag ndescr complex-single-float-widetag
- complex-single-float-size)
+ complex-single-float-size nil)
(let ((real-tn (complex-single-reg-real-tn x)))
(inst swc1 real-tn y (- (* complex-single-float-real-slot
n-word-bytes)
(:note "complex double float to pointer coercion")
(:generator 13
(with-fixed-allocation (y pa-flag ndescr complex-double-float-widetag
- complex-double-float-size)
+ complex-double-float-size nil)
(let ((real-tn (complex-double-reg-real-tn x)))
(str-double real-tn y (- (* complex-double-float-real-slot
n-word-bytes)
pa-flag)
(:arg-types ,from-type)
(:result-types signed-num)
- (:translate %unary-truncate)
+ (:translate ,name)
(:policy :fast-safe)
(:note "inline float truncate")
(:vop-var vop)
(inst nop)))
\f
-;;;; Float mode hackery:
-
-;#|
-(sb!xc:deftype float-modes () '(unsigned-byte 32))
-(defknown floating-point-modes () float-modes (flushable))
-(defknown ((setf floating-point-modes)) (float-modes)
- float-modes)
-
-(define-vop (floating-point-modes)
- (:results (res :scs (unsigned-reg)))
- (:result-types unsigned-num)
- (:translate floating-point-modes)
- (:policy :fast-safe)
- (:generator 3
- (inst cfc1 res 31)
- (inst nop)))
-
-(define-vop (set-floating-point-modes)
- (:args (new :scs (unsigned-reg) :target res))
- (:results (res :scs (unsigned-reg)))
- (:arg-types unsigned-num)
- (:result-types unsigned-num)
- (:translate (setf floating-point-modes))
- (:policy :fast-safe)
- (:generator 3
- (inst ctc1 new 31)
- (move res new)))
-;|#
-\f
;;;; Complex float VOPs
(define-vop (make-complex-single-float)