(simple-array (unsigned-byte 15) (*)))
(define-type-predicate simple-array-unsigned-byte-16-p
(simple-array (unsigned-byte 16) (*)))
-#!+#.(cl:if (cl:= 32 sb!vm:n-word-bits) '(and) '(or))
-(define-type-predicate simple-array-unsigned-byte-29-p
- (simple-array (unsigned-byte 29) (*)))
+
+(define-type-predicate simple-array-unsigned-fixnum-p
+ (simple-array
+ (unsigned-byte #.sb!vm:n-positive-fixnum-bits) (*)))
+
(define-type-predicate simple-array-unsigned-byte-31-p
- (simple-array (unsigned-byte 31) (*)))
+ (simple-array (unsigned-byte 31) (*)))
(define-type-predicate simple-array-unsigned-byte-32-p
(simple-array (unsigned-byte 32) (*)))
-#!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or))
-(define-type-predicate simple-array-unsigned-byte-60-p
- (simple-array (unsigned-byte 60) (*)))
+
#!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or))
(define-type-predicate simple-array-unsigned-byte-63-p
(simple-array (unsigned-byte 63) (*)))
(simple-array (signed-byte 8) (*)))
(define-type-predicate simple-array-signed-byte-16-p
(simple-array (signed-byte 16) (*)))
-#!+#.(cl:if (cl:= 32 sb!vm:n-word-bits) '(and) '(or))
-(define-type-predicate simple-array-signed-byte-30-p
- (simple-array (signed-byte 30) (*)))
+
+(define-type-predicate simple-array-fixnum-p
+ (simple-array (signed-byte #.sb!vm:n-fixnum-bits)
+ (*)))
+
(define-type-predicate simple-array-signed-byte-32-p
- (simple-array (signed-byte 32) (*)))
-#!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or))
-(define-type-predicate simple-array-signed-byte-61-p
- (simple-array (signed-byte 61) (*)))
+ (simple-array (signed-byte 32) (*)))
+
#!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or))
(define-type-predicate simple-array-signed-byte-64-p
(simple-array (signed-byte 64) (*)))
#!+sb-unicode (define-type-predicate simple-character-string-p
(simple-array character (*)))
(define-type-predicate system-area-pointer-p system-area-pointer)
+#!+#.(cl:if (cl:= 32 sb!vm:n-word-bits) '(and) '(or))
(define-type-predicate unsigned-byte-32-p (unsigned-byte 32))
+#!+#.(cl:if (cl:= 32 sb!vm:n-word-bits) '(and) '(or))
(define-type-predicate signed-byte-32-p (signed-byte 32))
-(define-type-predicate vector-t-p (vector t))
+#!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or))
+(define-type-predicate unsigned-byte-64-p (unsigned-byte 64))
+#!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or))
+(define-type-predicate signed-byte-64-p (signed-byte 64))
+#!+sb-simd-pack
+(define-type-predicate simd-pack-p simd-pack)
(define-type-predicate vector-nil-p (vector nil))
(define-type-predicate weak-pointer-p weak-pointer)
(define-type-predicate code-component-p code-component)
(define-type-predicate lra-p lra)
(define-type-predicate fdefn-p fdefn)
-
+(macrolet
+ ((def ()
+ `(progn ,@(loop for (name spec) in *vector-without-complex-typecode-infos*
+ collect `(define-type-predicate ,name (vector ,spec))))))
+ (def))
;;; Unlike the un-%'ed versions, these are true type predicates,
;;; accepting any type object.
(define-type-predicate %standard-char-p standard-char)